1、字符串及答案解析(总分:28.00,做题时间:90 分钟)一、B选择题/B(总题数:18,分数:18.00)1.下列程序执行后的输出结果是_。 main() char arr24; strcpy (arr0,“you“);strcpy(arr1,“me“); an03=j+=2) s=10*s+pij-0; printf(“%d/n“,s); (分数:1.00)A.6385B.22C.33D.6938254.有以下程序 main() char s=“Yes/n/No“,*ps=s; puts(ps+4); *(ps+4)=0; puts(s); 程序运行后的输出结果是(注:选项 D 中的第一行
2、是空行)_。(分数:1.00)A.n/No Yes /NoB./No YesC.n/No Yes /NoD./No Yes5.以下能正确进行字符串赋值、赋初值的语句是_。(分数:1.00)A.char s5:a,e,i,o,u;B.char *s; s=“good“;C.char s5=“good“;D.char s5; s=“good“;6.设已有定义:char*st=“how are you“;,下列程序段中正确的是_。(分数:1.00)A.char a11,*p;strcpy(p=a+1,j+=2) s=10*s+pij-0; printf(“%d/n“,s); 该程序的输出结果是_。(
3、分数:1.00)A.69825B.63825C.6385D.6938259.s1 和 s2 已正确定义,并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句S;,则以下选项正确的是_。(分数:1.00)A.if(s1s2) S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S;10.以下程序运行后的输出结果是_。 main() char a=“ABCDEFGH“,b=“abCDefGh“; char*p1,*p2;int k; p1=a;p2=b; for(k=0;k=7;k+) if*(p1
4、+k)=*(p2+k)printf(“%c“,*(p1+k); printf(“/n“); (分数:1.00)A.ABCDEFGB.CDGC.abcdefghD.abCDefGh11.有以下程序 main() char a7=“a0/0a0/0“;int i,j; i=sizeof(a);j=strlen(a); printf(“%d%d/n“,i,j); 程序运行后的输出结果是_。(分数:1.00)A.2 2B.7 6C.7 2D.6 212.下面能正确进行字符串赋值操作的语句是_。(分数:1.00)A.char s5=“ABCDE“:B.chars5=A、B、c、D、E;C.char*s;
5、s=“ABCDEF“;D.char*s; scanf(“%s“,:13.有下面的程序段: char str10,ch=“China“; str=ch; printf(“%s“,str); 则运行时_。(分数:1.00)A.将输出 ChinaB.将输出 ChC.将输出 ChiD.编译出错14.设有如下定义: char*a3=“aa“,“bb“,“cc“; 则以下说法正确的是_。(分数:1.00)A.数组 a 的第二个元素的值是“bb“B.输出“cc“使用语句 printf(“%s“,a2);C.数组 a 的 3 个元素分别存放的是含有两个字符的一维字符数组D.数组 a 的 3 个元素中各自存放了
6、字符a、b和c15.以下程序运行后的输出结果是_。 main () char a=“123456789“,*p; int i=0; p=a; while (*p) if (i%2=0) *p=*; p+; i+; puts(a); (分数:1.00)A.*2*4*6*8B.*2*4*6C.*2*4*6*8*D.*2468*16.以下程序运行后的输出结果是_。 main() char*s=“abcde“;s+=2;printf(“%1d/n“,s);(分数:1.00)A.cdeB.字符 c 的 ASCII 码值C.字符 c 的地址D.出错17.下面程序的运行结果是_。 main() char c
7、h7=“65ab21“; int i,s=0; for(i=0;chi=“0_) if( ) t=ai;ai:aj;aj=t; put s(a) printf(“/n“); (分数:2.00)填空项 1:_22.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是_。 #include string.h main() char strl=“How do you do“, *p1=strl strcpy(strl+strlen(strl)/2,“es she“): printf(“%s/n“,p1): (分数:2.00)填空项 1:_23.以下程序运行后的输出结果是_。 #include
8、string.h main() char ch=“abc“,x34;int i; for(i=0; i3;i+) strcpy(xi,ch); for(i=0;i3;i+) printf(“%s“,j+=2) s=10*s+pij-0; printf(“%d/n“,s); (分数:1.00)A.6385 B.22C.33D.693825解析:4.有以下程序 main() char s=“Yes/n/No“,*ps=s; puts(ps+4); *(ps+4)=0; puts(s); 程序运行后的输出结果是(注:选项 D 中的第一行是空行)_。(分数:1.00)A.n/No Yes /NoB./
9、No Yes C.n/No Yes /NoD./No Yes解析:5.以下能正确进行字符串赋值、赋初值的语句是_。(分数:1.00)A.char s5:a,e,i,o,u;B.char *s; s=“good“;C.char s5=“good“; D.char s5; s=“good“;解析:6.设已有定义:char*st=“how are you“;,下列程序段中正确的是_。(分数:1.00)A.char a11,*p;strcpy(p=a+1,j+=2) s=10*s+pij-0; printf(“%d/n“,s); 该程序的输出结果是_。(分数:1.00)A.69825B.63825C.
10、6385 D.693825解析:9.s1 和 s2 已正确定义,并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句S;,则以下选项正确的是_。(分数:1.00)A.if(s1s2) S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S; 解析:10.以下程序运行后的输出结果是_。 main() char a=“ABCDEFGH“,b=“abCDefGh“; char*p1,*p2;int k; p1=a;p2=b; for(k=0;k=7;k+) if*(p1+k)=*(p2+k)print
11、f(“%c“,*(p1+k); printf(“/n“); (分数:1.00)A.ABCDEFGB.CDG C.abcdefghD.abCDefGh解析:11.有以下程序 main() char a7=“a0/0a0/0“;int i,j; i=sizeof(a);j=strlen(a); printf(“%d%d/n“,i,j); 程序运行后的输出结果是_。(分数:1.00)A.2 2B.7 6C.7 2 D.6 2解析:12.下面能正确进行字符串赋值操作的语句是_。(分数:1.00)A.char s5=“ABCDE“:B.chars5=A、B、c、D、E;C.char*s;s=“ABCDE
12、F“; D.char*s; scanf(“%s“,:解析:13.有下面的程序段: char str10,ch=“China“; str=ch; printf(“%s“,str); 则运行时_。(分数:1.00)A.将输出 ChinaB.将输出 ChC.将输出 ChiD.编译出错 解析:14.设有如下定义: char*a3=“aa“,“bb“,“cc“; 则以下说法正确的是_。(分数:1.00)A.数组 a 的第二个元素的值是“bb“B.输出“cc“使用语句 printf(“%s“,a2); C.数组 a 的 3 个元素分别存放的是含有两个字符的一维字符数组D.数组 a 的 3 个元素中各自存放
13、了字符a、b和c解析:15.以下程序运行后的输出结果是_。 main () char a=“123456789“,*p; int i=0; p=a; while (*p) if (i%2=0) *p=*; p+; i+; puts(a); (分数:1.00)A.*2*4*6*8B.*2*4*6C.*2*4*6*8* D.*2468*解析:16.以下程序运行后的输出结果是_。 main() char*s=“abcde“;s+=2;printf(“%1d/n“,s);(分数:1.00)A.cdeB.字符 c 的 ASCII 码值C.字符 c 的地址 D.出错解析:17.下面程序的运行结果是_。 m
14、ain() char ch7=“65ab21“; int i,s=0; for(i=0;chi=“0_) if( ) t=ai;ai:aj;aj=t; put s(a) printf(“/n“); (分数:2.00)填空项 1:_ (正确答案:j+=2, aiaj)解析:22.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是_。 #include string.h main() char strl=“How do you do“, *p1=strl strcpy(strl+strlen(strl)/2,“es she“): printf(“%s/n“,p1): (分数:2.00)填空项 1:_ (正确答案:How does she)解析:23.以下程序运行后的输出结果是_。 #include string.h main() char ch=“abc“,x34;int i; for(i=0; i3;i+) strcpy(xi,ch); for(i=0;i3;i+) printf(“%s“,&xii); printf(“/n“); (分数:2.00)填空项 1:_ (正确答案:abcbcc)解析: