字符串(一)
(总分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小时内删除。