字符串(一)
(总分28,考试时间90分钟)
一、选择题
1. 有下面的程序段:
char str[10],ch[]="China";
str=ch; printf("%s",str);
则运行时______。
A) 将输出China B) 将输出Ch
C) 将输出Chi D) 编译出错
2. 对于下面语句,叙述正确的是______。
char c1[]="abcd";
char c2[]='a','b','c','d';
A) 数组c1和数组c2等价
B) 数组c1占用空间大于数组c2占用空间
C) 数组c1占用空间小于数组c2占用空间
D) 数组c1和数组c2的长度相同
3. 以下能正确进行字符串赋值、赋初值的语句是______。
A) char s[5]:'a','e','i','o','u';
B) char *s; s="good";
C) char s[5]="good";
D) char s[5]; s="good";
4. 下面程序的运行结果是______。
main()
char ch[7]="65ab21";
int i,s=0;
for(i=0;ch[i]>="0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n”,s);
A) 12ba56 B) 6521 C) 6 D) 62
5. 以下程序运行后的输出结果是______。
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))printf("%c",*(p1+k));
printf("\n");
A) ABCDEFG B) CDG C) abcdefgh D) abCDefGh
字符串函数编程题6. 以下程序运行后的输出结果是______。
main()
char*s="abcde";s+=2;printf("%1d\n",s);
A) cde B) 字符c的ASCII码值 C) 字符c的地址 D) 出错
7. 以下程序运行后的输出结果是______。
ss(char*s)
char*p=s;
while(*p)p++; return(p-s);
main()
char*a="abded";int i;
i=ss(a);
printf("%d\n",i);
A) 8 B) 7 C) 6 D) 5
8. 下面能正确进行字符串赋值操作的语句是______。
A) char s[5]="ABCDE":
B) chars[5]='A'、'B'、'c'、'D'、'E';
C) char*s;s="ABCDEF";
D) char*s; scanf("%s",s):
9. 以下程序的输出结果是______。
#include <string.h>
main()
char*a="abcdefghi";int k
fun(a);puts(a);
fun(char*s)
int x,y; char c
for(x=0,y=strlen(s)-1;x<y:x++,y--)
c=s[y];s[y]=s[x];s[x]=c;
A) ihgfedcba B) abcdefghi C) abcdedeba D) ihgfefghi
10. 以下程序运行后的输出结果是______。
main ()
char a[]="123456789",*p;
int i=0;
p=a;
while (*p)
if (i%2==0) *p='*';
p++; i++;
puts(a);
A) *2*4*6*8 B) *2*4*6 C) *2*4*6*8* D) *2468*
11. 有以下程序
main()
char s[]="Yes\n/No",*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
程序运行后的输出结果是(注:选项D中的第一行是空行)______。
A) n/No
Yes
/No
B) /No
Yes
C) n/No
Yes
/No
D)
/No
Yes
12. 有如下程序:
main()
char ch[2][5]="6937","8254",*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]!='\O';j+=2)
s=10*s+p[i][j]-'0';
printf("%d\n",s);
该程序的输出结果是______。
A) 69825 B) 63825 C) 6385 D) 693825
13. 以下程序运行后,输出结果是______。
main()
char ch[2][5]="693","825",*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>='0'&&p[i][j]<='9';j+=2)
s=10*s+p[i][j]-'0';
printf("%d\n",s);
A) 6385 B) 22 C) 33 D) 693825
14. 设有如下定义:
char*a[3]="aa","bb","cc";
则以下说法正确的是______。
A) 数组a的第二个元素的值是"bb"
B) 输出"cc"使用语句printf("%s",a[2]);
C) 数组a的3个元素分别存放的是含有两个字符的一维字符数组
D) 数组a的3个元素中各自存放了字符'a'、'b'和'c'
15. 下列程序执行后的输出结果是______。
main()
char arr[2][4];
strcpy (arr[0],"you");strcpy(arr[1],"me");
an[0][3]='&';
printf("%s \n",arr [0]);
A) you&me B) you C) me D) err
16. 有以下程序
main()
char a[7]="a0\0a0\0";int i,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
程序运行后的输出结果是______。
A) 2 2 B) 7 6 C) 7 2 D) 6 2
17. s1和s2已正确定义,并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;,则以下选项正确的是______。
A) if(s1>s2) S; B) if(strcmp(s1,s2))S;
C) if(strcmp(s2,s1)>0)S; D) if(strcmp(s1,s2)>0)S;
18. 设已有定义:char*st="how are you";,下列程序段中正确的是______。
A) char a[11],*p;strcpy(p=a+1,&st[4]);
B) char a[11];strcpy (++a,st);
C) char a[11];strcpy (a,st);
D) char a[], *p;strcpy(p=&a[1],st+2);
二、填空题
1. 以下程序运行后的输出结果是______。
main()
char a[]="Language",b[]="Programe";
char *p1,*p2;
int k;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k)) printf("%c,*(p1+k));
2. 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
surcen(chara[],char b[])
int num=0,n=0;
while(*(a+num)!=______)num++;
while(b[n])*(a+num)=b[n];num++;______;
return(num);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论