《指针字符串练习题及答案(48页).doc》由会员分享,可在线阅读,更多相关《指针字符串练习题及答案(48页).doc(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-单项选择=题号: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(%
2、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若
3、有说明: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、一
4、个变量的地址称为该变量的指针答案: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);wh
5、ile(*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
6、(*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);程序执行后的输出
7、结果是().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);f
8、or(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=
9、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、字符数组中的字符串可以整体
10、输入,输出.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
11、;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、*s
12、trpB、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
13、,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值和_值.答
14、案:空 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 =
15、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矩阵中每列元素中的最大值,并按顺序
16、依次存放于形参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); f
17、or(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不是
18、回文。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! */#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: );
19、 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题
20、号: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。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不
21、得增行或删行,也不得更改程序的结构! */#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,guangzh
22、ou,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连接
23、起来,结果是 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 ; print
24、f(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函数,不得增行或删行,也
25、不得更改程序的结构! */#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); pr
26、intf(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 #i
27、nclude 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 : ); puts(c);答案:位置
28、1:int k=0;位置 2:while(*p|*q)题号:725/* 给定程序中函数fun的功能是: 从s所指字符串中删除所有小写字母“c”。 请改正程序中的错误 ,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! */#include void fun(char *s)int i,j; for(i=j=0; si!=0; i+) if(si!=c)/*ERROR*/ sj=si;/*ERROR*/ si=0;main()char s80; printf(Enter a string: ); gets(s); printf(The origin
29、al string: ); puts(s); fun(s); printf(The string after deleted : ); puts(s); printf(nn);答案:位置 1:sj+=si;位置 2:sj=0;题号:727/* 给定程序中函数fun()的功能是统计s所指一维数组中0的个数(存在变量zero中) 和1的个数(存在变量one中),并输出结果。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 */#include void fun( int *s, int n )/*ERROR*/ int i, one=0, zero ; for(i=0; in; i+)/*ERROR*/ swicth( si ); /*ERROR*/ case 0 : zero+; case 1 : one +; printf( one : %d zero : %dn, one, zero);main() int a20=1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0, n=20; fun( a, n );答案:位置 1:int i,one=0,zero=0;位置 2:switch(si)位置 3:case 0:zero+;break;-第 48 页-
限制150内