指针字符串练习题及答案.doc_第1页
指针字符串练习题及答案.doc_第2页
指针字符串练习题及答案.doc_第3页
指针字符串练习题及答案.doc_第4页
指针字符串练习题及答案.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单项选择=题号:4074若有定义语句:int a410,*p,*q4;且0=i4,则错误的赋值是().A、p=aB、p=&a21C、qi=aiD、p=ai答案:A题号:4333执行下列语句后的结果为().int x=3,y;int *px=&x;y=*px+;printf(x=%d,y=%dn,x,y);A、x=3,y=3B、x=4,y=4C、x=3,y不知D、x=3,y=4答案:A题号:4876下列程序的运行结果是void fun(int *a,int *b)int *k;k=a;a=b;b=k;main()int a=3,b=6,*x=&a,*y=&b;fun(x,y);printf(%d %d,a,b);A、0 0B、3 6C、编译出错 D、6 3答案:B题号:4116若说明int *p,n;则通过语句scanf能够正确读入数据的程序段是(). A、scanf(%d,n); B、p=&n;scanf(%d,&p); C、p=&n;scanf(%d,*p); D、p=&n;scanf(%d,p); 答案:D题号:4120下面程序:int aa33=2,4,6;main()int i,*p=&aa00;for(i=0;i2;i+)if(i=0)aaii+1=*p+1;else+p;printf(%d,*p);的输出是().A、25B、30C、26D、23答案:D题号:4124若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是().A、i=*p;B、*p=*&j;C、i=*p;D、i=&j;答案:B题号:4165阅读下面程序,程序执行后的结果为(). #includestdio.hmain()char *str=abcdefghijklmnopq; while(*str+!=e); printf(%cn,*str); A、f B、q C、e D、a 答案:A题号:4167关于指针概念说法不正确的是().A、指针变量可以由整数赋,不能用浮点赋B、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中,C、一个指针变量只能指向同一类型变量D、一个变量的地址称为该变量的指针答案:A题号:4173设有以下定义:int w23,(*pw)3;pw=w;,则对w数组元素非法引用是().A、pw00B、*(pw1+2)C、*(pw+1)2D、*(w0+2)答案:C题号:4532若有定义:char s310,*k3,*p;,则以下赋值语句正确的是().A、k=s;B、p=k;C、p=s;D、p=s0;答案:D题号:4174当运行以下程序时输入OPEN THE DOOR,则输出结果是#includechar fun(char *c)if(*c=A)*c -=A - a;return *c;main()char s8,*p=s;gets(s);while(*p)*p=fun(p);putcahr(*p);p+;putchar(n);A、Open The DoorB、OPEN THE DOORC、open the door D、oPEN tHE dOOR答案:C题号:4175下列程序执行后的输出结果是(). void func(int *a,int b)b0=*a+6;main()int a,b5=0; a=0; b0=3; func(&a,b); printf(%dn,b0); A、8B、9C、7D、6答案:D题号:4390已知有声明char a=prongram,*p=a+1;,则执行以下语句不会输出字符a的是()oA、putchar(*p+4);B、putchar(*(p+4);C、putchar(asizeof(a)-3);D、putchar(*(a+5);答案:A题号:4181定义语句int *swap();指的是A、其他说法都不对B、swap是一个返回指向整型值指针的函数C、swap是一个返回整型值的函数D、swap是一个指向函数的指针答案:B题号:4184有以下程序:#includevoid swap(char *x,char *y)char t;t=*x;*x=*y;*y=t;main()char *s1=abc,*s2=123;swap(s1,s2);printf(%s,%sn,s1,s2);程序执行后的输出结果是().A、1bc,a23B、123,abcC、321,cbaD、abc,123 答案:A题号:4211若有int a10=0,1,2,3,4,5,6,7,8,9,*p=a;,则输出结果不为5的语句为().A、printf(%d,p5);B、printf(%d,*p5);C、printf(%d,*(a+5);D、printf(%d,*(p+5);答案:B题号:4215有以下程序:void fun(int *a,int i,int j)int t;if(ij)t=ai;ai=aj;aj=t;fun(a,+i,-j);main()int a=1,2,3,4,5,6,i;fun(a,0,5);for(i=0;i6;i+)printf(%d,ai);执行后输出结果是().A、6 5 4 3 2 1B、2 1 4 3 6 5C、3 2 4 1 5 6D、1 2 3 4 5 6答案:A题号:4113以下程序运行后的输出结果是().main()char ch=uvwxyz,*pc;pc=ch;printf(%cn,*(pc+5);A、字符y的地址B、0C、元素ch5地址D、z答案:D题号:4695有以下程序 #includemain()int a=1,2,3,4,y,*p=&a3; -p; y=*p; printf(y=%dn,y); 程序的运行结果是(). A、y=0 B、y=2 C、y=1 D、y=3 答案:D题号:4298若有语句:char *line5;下列叙述中正确的是(). A、定义line是一个指针数组,语句中的*号称为间址运算符 B、定义line是一个数组,每个数组元素是一个基类型为char 的指针变量 C、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 D、定义line是一个指向字符型函数的指针 答案:B题号:2457设有数组定义:char array=China;,则数组 array所占的空间为().A、5个字节B、4个字节C、6个字节D、7个字节答案:C题号:2468下述对C语言字符数组的描述中错误的是().A、字符数组中的字符串可以整体输入,输出.B、不可以用关系运算符对字符数组中的字符串进行比较.C、字符数组中可以存放字符串.D、可以通过赋值运算符=对字符数组整体赋值.答案:D题号:2479以下程序: #include#includemain()char str=abcdn123xab; printf(%d,strlen(str); 运行后的输出结果是(). A、10B、9C、14D、7答案:D题号:2485已知有声明char s20=Hello;,在程序运行过程中若要想使数组s中的内容修改为Good,则以下语句能够实现此功能的是().A、strcpy(s,Good);B、strcat(s,Good);C、s20=Good;D、s=Good;答案:A题号:2499以下程序段的输出结果是pritnf(%dn,strlen(ATSn0121);A、11B、8C、9D、10答案:C题号:2510char a1=abc,a280=1234;将a1串连接到a2串后面的语句是().A、strcat(a2,a1);B、strcpy(a2,a1);C、strcpy(a1,a2);D、strcat(a1,a2);答案:A题号:2530设有以下语句,若0k4,下列选项中对字符串的非法引用是().char str42=aaa,bbb,ccc,ddd,*strp4;int j;for(j=0;j4;j+)strpj=strj;A、*strpB、strpC、strpkD、strk答案:B题号:2543选择正确的输入语句().(其中:char string10;)使得string的内容为Hello.A、scanf(%s,&string);B、scanf(%c,string);C、scanf(%c,&string);D、scanf(%s,string);答案:D题号:2874下列数组说明中正确的是().A、static char str15,str2=China;str1=str2;B、static char str;str=China;C、static char str1,str2;str2=China;strcpy(str1,str2);D、static char str=China;答案:D题号:2633已定义char string20;使得string的内容为You are student的正确输入语句是().A、scanf(%c,&string);B、gets(string);C、scanf(%s,&string);D、scanf(%s,string);答案:B填空题=题号:4875若有定义: char ch;定义指针p,并使其指向变量ch的初始化语句是_。(必须使用一条语句)答案:空 1:char *p=&ch; 【或】 char *p=&ch题号:4101在c程序中,只能给指针变量赋NULL值和_值.答案:空 1:指针 【或】 地址题号:4235已知有声明int a3 2=1,2,3,4,5,6,*p=a0;,则执行语句printf(%idn,*(p+4);后的输出结果为_。答案:空 1:5题号:4313执行语句char s3=ab,*p; p=s; *(p+_)的值是0.答案:空 1:2题号:4363设变量定义为int x=3, *p=&x;,设变量x的地址为2000,则*p=_,&(*p)=_(填数字)答案:空 1:3空 2:2000题号:4399若有程序段“int a10,*p=a,*q;q=a5;”,则表达式q-p的值是(_)。答案:空 1:5题号:2707若有定义:char s =china; 则C编译系统为数组s开辟_个字节的内存单元.答案:空 1:6题号:2708以下findmax返回s中最大元素的下标,数组中元素的个数由t传入。请填空。fndmax(int s, int t) int k, p; for(p=0, k=p; p sk) _ ; return_;答案:空 1:k=p空 2:k题号:2799已知char s=H,e,l,l,o; 则s数组中含有_个元素.答案:空 1:5题号:2820C语言中,二维数组在内存中的存放方式为按_连续存放.答案:空 1:行程序填空=题号:547/* 给定程序中,函数fun的功能是: 找出NN矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! */#include #define N 4void fun(int (*a)N, int *b)int i,j; for(i=0; iN; i+) /*FILL*/ bi= _1_; for(j=1; jN; j+)/*FILL*/ if(bi _2_ aji) bi=aji; main()int xNN= 12,5,8,7,6,1,9,3,1,2,3,4,2,8,4,3 ,yN,i,j; printf(nThe matrix :n); for(i=0;iN; i+) for(j=0;jN; j+) printf(%4d,xij); printf(n); /*FILL*/ fun(_3_); printf(nThe result is:); for(i=0; iN; i+) printf(%3d,yi); printf(n);答案:位置 1:a0i位置 2:位置 3:x,y题号:565/* 给定程序中,函数fun的功能是:判断形参s所指字符串是否是回文(Palindrome), 若是,函数返回值为1;不是,函数返回值为0。回文是正读和反读都一样的字符串(不区分大小写字母)。 例如,LEVEL和Level是回文,而LEVLEV不是回文。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! */#include #include #include int fun(char *s)char *lp,*rp;/*FILL*/ lp= _1_ ; rp=s+strlen(s)-1; while(toupper(*lp)=toupper(*rp) & (lprp) /*FILL*/ lp+; rp _2_ ;/*FILL*/ if(lprp) _3_ ; else return 1;main()char s81; printf(Enter a string: ); scanf(%s,s); if(fun(s) printf(n%s is a Palindrome.nn,s); else printf(n%s isnt a Palindrome.nn,s);答案:位置 1:s位置 2:-位置 3:return 0题号:561/*-【程序填空】-题目:输出连接后的字符串。-*/#include stdio.h/*FILL*/_main() char ss10=12345; strcat(ss,6789); /*FILL*/ printf(_,ss);答案:位置 1:#include 【或】 #include string.h位置 2:%sn 【或】 %s题号:568/*-【程序填空】-题目:本程序用printf函数输出字符串I am student,完善程序。-*/#include stdio.hmain() int i; char *s1=I am student; /*FILL*/ for(i=0;s1i!=_;i+) /*FILL*/ printf(_, s1i); 答案:位置 1:0位置 2:%c题号:689/* 给定程序中,函数fun的功能是: 对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。 ss所指字符串数组中共有M个字符串,且串长N。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! */#include #include #define M 5#define N 20void fun(char (*ss)N)int i, j, k, nM; char tN; for(i=0; iM; i+) ni=strlen(ssi); for(i=0; iM-1; i+) k=i;/*FILL*/ for(j=_1_; jnj) _2_; if(k!=i) strcpy(t,ssi); strcpy(ssi,ssk);/*FILL*/ strcpy(ssk,_3_); nk=ni; main()char ssMN=shanghai,guangzhou,beijing, tianjing,cchongqing; int i; printf(nThe original strings are :n); for(i=0; iM; i+) printf(%sn,ssi); printf(n); fun(ss); printf(nThe result :n); for(i=0; iM; i+) printf(%sn,ssi);答案:位置 1:i+1位置 2:k=j位置 3:t程序改错=题号:694/* 给定程序中函数fun的功能是: 将 m(1m10)个字符串连接起来,组成一个新串,放入pt所指存储区中。 例如:把3个串:abc,CD,EF连接起来,结果是 abcCDEF。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! */#include #include void fun (char str10, int m, char *pt)/*ERROR*/ Int k, q, i ; for (k = 0; k m; k+) q = strlen (str k); for (i=0; iq; i+)/*ERROR*/ pti = strk,i ; pt += q ; pt0 = 0 ; main()int m, h ; char s1010, p120 ; printf(nPlease enter m:); scanf(%d, &m); gets(s0); printf(nPlease enter %d string:n, m); for (h = 0; h m; h+) gets(sh); fun(s, m, p); printf(nThe result is : %sn, p);答案:位置 1:int k,q,i;位置 2:pti=strki;题号:704/* 给定程序中函数fun的功能是: 比较两个字符串,将长的那个字符串的首地址作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! */#include /*ERROR*/char fun(char *s, char *t)int sl=0,tl=0; char *ss, *tt; ss=s; tt=t; while(*ss) sl+;/*ERROR*/ (*ss)+; while(*tt) tl+;/*ERROR*/ (*tt)+; if(tlsl) return t; else return s;main()char a80,b80; printf(nEnter a string : ); gets(a); printf(nEnter a string again : ); gets(b); printf(nThe longer is :nn%sn,fun(a,b);答案:位置 1:char *fun(char *s,char *t)位置 2:ss+;位置 3:tt+;题号:714/* 给定程序中函数fun的功能是: 逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c所指数组中, 形成一个新的字符串。例如,若主函数中a字符串为:aBCDeFgH,主函数中b字符串为:ABcd, 则c中的字符串应为:aBcdeFgH。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 */#include #include void fun(char *p ,char *q, char *c)/*ERROR*/ int k = 1;/*ERROR*/ while(*p != *q) if(*p*q) ck=*q; else ck=*p; if(*p) p+; if(*q) q+; k+; main()char a10=aBCDeFgH, b10=ABcd, c80= 0; fun(a,b,c); printf(The string a: ); puts(a); printf(The string b: ); puts(b); printf(The result :

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论