第十章扩展题一.选择题1、有以下程序voidfun(char*a,char*b){a=b;(*a)++;}voidmain(){charc1='A',c2='a',*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf(%c%c\n,c1,c2);}程序运行后的输出结果是()A)AbB)aaC)AaD)Bb2、下列选项中正确的语句组是()A)chars[8];s={Beijing};B)char*s;s={Beijing};C)chars[8];s=Beijing;D)char*s;s=Beijing;3、下面程序是对两个整型变量的值进行交换,以下正确的说法是()voidmain(){inta=10,b=20;printf(“(1)a=%d,b=%d\n”,a,b);swap(&a,&b);printf(“(2)a=%d,b=%d\n”,a,b);}swap(intp,intq){intt;t=p;p=q;q=t;}A.程序正确,能实现既定功能B.程序有错,只要将语句swap(&a,&b);中的参数改成a,b即可C.程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可D.以上说法都不对4、以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址#includestdio.h#includestring.hchar*scmp(char*s1,char*s2){if(strcmp(s1,s2)0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/strcpy(string,scmp(string,str[2]));printf(%s\n,string);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为()A)abcdB)abbaC)abcD)abca5、有以下程序#includestring.hmain(){charstr[][20]={Hello,Beijing},*p=str[0];printf(%d\n,strlen(p+20));}程序运行后的输出结果是()A)0B)5C)7D)206、有以下程序_______main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i7&&*(p+i)%2){k=k+*(p+i);i++;}printf(%d\n,k);}执行后输出的结果是()A)58B)56C)45D)247、有以下程序main(intargc,char*argv[]){intn,i=0;while(argv[1][i]!='\0'){n=fun();i++;}printf(%d\n,n*argc);}intfun(){staticints=0;s+=1;returns;}假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令exam123〈回车〉则运行结果为()A)6B)8C)3D)48、下列程序的输出结果是()main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf(%d,*--p);}A)非法B)a[4]的地址C)5D)39、有以下程序main(){char*s[]={one,two,three},*p;p=s[1];printf(%c,%s\n,*(p+1),s[0]);}执行后输出结果是()A)n,twoB)t,oneC)w,oneD)o,two10、下面判断正确的是()A.char*a=”china”;等价于char*a;a=”china”;B.charstr[10]={“china”};等价于charstr[10];str=”china”C.char*s=”china”;等价于charstr[10]=”china”D.charc[4]=”abc”,d[4]=”abc”等价于charc[4]=b[4]=”abc”;11、设char*s=”\ta\017bc”;则指针变量s指向的字符串所占的字节数是()A.9B.5C.6D.712、下面能正确进行字符串赋值的操作的是()A.chars[5]={“ABCDE”};B.chars[5]={‘A’,’B’,’C’,’D’,’E’,};C.char*s;s=”ABCDE”;D.chars;scanf(“%s”,s);13、下面程序段的运行结果是()char*s=”abcde”;s+=2;printf(“%d”,s);A.cdeB.字符’c’C.字符’c’的地址D.无确定结果14、设有以下程序段:chars[]=”china”;char*p;p=s;则下列叙述正确的是()A.s和p完全相同B.数组s中的内容和指针变量p中的内容相等C.s数组长度和p所指向的字符串长度相等D.*p与s[0]相等15、下面程序段的运行结果是()char*format=”%s,a=%d,b=%d\n”;inta=1,b=10;a+=b;printf(format,”a+=b,”,a,b);A.for,”a+=”,abB.format,”a+=b”C.a+=b,a=11,b=10D.以下结果都不对16、以下正确的程序段是()A.charstr[20];scanf(“%s”,&str);B.char*p;scanf(“%s”,p);C.charstr[20];scanf(“%s”,&str[2]);D.charstr[20],*p=str;scanf(“%s”,p+2);17、下面程序段的运行结果是()charstr[]=”ABC”,*p=str;printf(“%d\n”,*(p+3));A.67B.0C.字符’C’的地址D.字符’C’18、下面程序段运行结果是()chara[]=”language”,*p;p=a;while(*p!=’u’){printf(“%c”,*p-32);p++;}A.LANGUAGEB.languageC.LANGD.language19、下面说明不正确的是()A.chara[10]=”china”;B.chara[10],*p=a;p=”china”;C.char*a;a=”china”;D.chara[10],*p;p=a=”china”;20、若有说明语句chara[]=”Itismine”;char*p=”Itismine”;则以下不正确的叙述是()A.a+1表示的是字符t的地址B.p指向另外的字符串时,字符串的长度不受限制C.p变量中存放的地址值可以改变D.a中只能存放10个字符21、若已定义chars[10];则在下面表达式中不能表示s[1]的地址是()A.s+1B.s++C.&s[0]+1D.&s[1]22、下面程序段的运行结果是()chars[6];s=”abcd”printf(“\”%s\”\n”,s);A.”abcd”B.”abcd“C.\”abcd\”D.编译出错23、当运行以下程序时,从键盘输入Happy!CR,则下面的程序运行结果是()#includestdio.h#includestring.hstre(charstr[]){intnum=0;while(*(str+num)!=’\0’)num++;return(num);}voidmain(){charstr[10],*p=str;gets(p);printf(“%d\n”,stre(p));}A.7B.6C.5D.1024、下面程序的运行结果是()#includestdio.hvoidmain(){staticchara[]=“Language”,b[]=”programe”;charp1,p2;intk;p1=a;p2=b;printf(%c”,*(p1+k));}A.ageB.agC.LanguageD.有语法错误25、下面程序运行结果()#includestdio.hvoidmain(){inta=28,b;chars[10],*p;p=s;do{b=a%16;if(b10)*p=b+48;else*p=b+55;p++;a=a/5;}while(a0);*p=’\0’;puts(s);}A.10B.C2C.C51D.\026、下面程序的运行结果是()#includestdio.hvoiddelch(char*s){intI,j;char*a;a=s;for(I=0,j=0;a[I]!=’\0’;I++)if(a[I]=’0’&&a[I]=’9’){s[j]=a[I];j++;}s[j]=’\0’;}voidmain(){char*item=”a34bc”;delch(item);printf(\n%s,item);}A.abcB.34c.a34D.a34bc27、下面程序运行结果是()#includestdio.h#includestring.hvoidmain(){char*s1=”AbDeG”;char*s2=”AbdEg”;s1+=2;s2+=2;printf(“%d\n”,strcmp(sl,s2));}A.正数B.负数C.零D.不确定的值28、下面的程序的运行结果是()#includestdio.h#includestring.hfun(char*s){chara[7];s=a;strcpy(a,”look”);}voidmain(){char*p;fun(p);puts(p);}A.look□□□B.lookC.异常结束D.不确定的值29、下面程序的运行结果是()#includestdio.h#incudestring.hvoidmain(){char*p1,*p2,str[50]=”abc”;p1=”abc”;p2=”abc”;strcpy(str+1,strcat(p1,p2));printf(“%s\n”,str);}A.abcabcabcB.bcabcabcC.aabcabcD.cabcabc30、下面程序的运行结果是()#includestdio.habc(char*p){intI,j;for(I=0,j=0;*(p+I)!=’\0’;I++)if(*(p+I)=’d’){*(p+j)=*(p+I);j++;}*(p+j)=’\0’;}voidmain(){charstr[]=”cdalb”;abc(str);puts(str);}A.dalbB.cdC.dlD.c31、若有以下定义,则对a数组元素的正确引用是inta[5],*p=a;A.*&a[5]B.a+2C.*(p+5)D.*(a+2)32、若有定义:inta[2][3];则对a数组的第I行,第j列元素值的正确引用是()A.*(*a+I)+j)B.(a+I)[j]C*(a+I+j)D.*(a+I)+j33、若有以下定义和语句,则对a数组元素的正确引用为()inta[2][3],(*p)[3];p=a;A.(p+1)[0]B.*(*(p+2)+1)C.*(p[1]+1)D.p[1]+234、若有定义:inta[5];则a数组中首元素地址可以表示为()A.&aB.a+1C.aD.&a[1]35、有以下程序voidfun(char*c,intd){*c=*c+1;d=d+1;printf(%c,%c,,*c,d);}main(){chara='A',b='a';fun(&b,a);printf(%c,%c\n,a,b);}程序运行后的输出结果是()。A)B,a,B,aB)a,B,a,BC)A,b,A,bD)b,B,A,b36、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;fo