加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

《C语言程序设计》核心试题(9-1)

(2011-09-13 23:18:46)
标签:

杂谈

分类: 教学文件

第十部分 :字符串


一、选择题
1)若有语句:char  *line[5];,以下叙述中正确的是
  A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量
  B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
  C)定义line是一个指针数组,语句中的*号称为间址运算符
  D)定义line是一个指向字符型函数的指针

2)有以下程序
 #include    <string.h>
 main()
 { char  p[]={'a', 'b', 'c'},  q[10]={'a', 'b', 'c'};
   printf("%d %d\n", strlen(p), strlen(q));
 }
以下叙述中正确的是
  A)在给pq数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
  B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
  C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
  D)由于pq数组中都没有字符串结束符,故长度都不能确定

3)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序
 #include    <string.h>
 void f(char  *p[], int  n)
 { char  *t;    int  i,j;
   for(i=0; i<n-1; i++)
     for(j=i+1; j<n; j++)
       if(strcmp(p[i],p[j])>0){ t=p[i];  p[i]=p[j];  p[j]=t;  }
 }
 main()
 { char  *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
   f(p, 5);
   printf("%d\n", strlen(p[1]));
 }
程序运行后的输出结果是
  A  
  B  
  C  
  D4

(4)
有定义语句:int  b;char  c[10];  ,则正确的输入语句是   
  Ascanf("%d%s",&b,&c);
  Bscanf("%d%s",&b,c);
  Cscanf("%d%s",b,c);
  Dscanf("%d%s",b,&c);

(5)
以下能正确定义一维数组的选项是   
  Aint  a[5]={0,1,2,3,4,5};
  Bchar  a[]={0,1,2,3,4,5};
  Cchar  a={'A','B','C'};
  Dint  a[5]="0123";

6)已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是   
  A)数组ab的长度相同
  Ba数组长度小于b数组长度
  Ca数组长度大于b数组长度
  D)上述说法都不对

7)以下语句或语句组中,能正确进行字符串赋值的是       
  Achar  *sp;  *sp="right!";
  Bchar s[10];  s="right!";
  Cchar  s[10];  *s="right!";
  Dchar  *sp="right!";

8)有以下程序
main()
{
   char  s[]="159",*p;
   p=s;
   printf("%c",*p++);
   printf("%c",*p++);
}
程序运行后的输出结果是             
  A15
  B16
  C12
  D59

9)有以下函数
fun(char  *a,char  *b)
{
   while((*a!='\0')&&(*b!='\0')&&(*a==*b))
    a++;   b++;}
   return  (*a-*b);
}
该函数的功能是                                     
  A)计算ab所指字符串的长度之差
  B)将b所指字符串复制到a所指字符串中
  C)将b所指字符串连接到a所指字符串后面
  D)比较ab所指字符串的大小

(10)
有以下程序
point(char  *p)
{
   p+=3;
}
main()
  char  b[4]={'a','b','c','d'},*p=b;
    point(p);    printf("%c\n",*p);
}
程序运行后的输出结果是             
  Aa
  Bb
  Cc
  Dd

(11) s12
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;

(12)
有以下程序
main()
{char str[][10]={"China","Beijing"},*p=str;
  printf("%s\n",p+10);
}
程序运行后的输出结果是
  A) China    
  B) Bejing   
  C) ng    
  D) ing

 (13)
有以下程序
main()
{char s[]="ABCD",*p;
  for(p=s+1;p<s+4;p++)printf("%s\n",p);
}
程序运行后的输出结果是
    A) ABCD      B) A      C) B      D) BCD
  
     BCD                       CD
  
     CD                        D
  
              D  

(14) 有以下程序
main()
{ char s[]"Yes\n/No",*ps=s;
  puts(ps+4);
  *(ps+4)=0;
  puts(s);
}
程序运行后的输出结果是(选项D中的第一行是空行)
    A) n/No      B) /No      C) n/NO      D)
  
    Yes             Yes          Yes            /No
  
    /No                          /No         Yes

(15)
有以下定义
#include <stdio.h>
char a[10],*b=a;
不能给数组a输入字符串的语句是
  A) gets(A)    
  B) gets(a[0])   
  C) gets(&a[0]); 
  D) gets(B) ;

 (16)
有以下程序
main( )
{ char *p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
  printf(“%d\n”,strlen(p[4]));
}
执行后输出结果是
  A) 2     
  B) 3     
  C) 4     
  D) 5

(17)
以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是
  A) char s[10]=”abcdefg”;   
  B) char t[]=”abcdefg”,*s=t;
  C) char s[10];s=”abcdefg”;   
  D) char s[10];strcpy(s,”abcdefg”);

(18)
下列选项中正确的语句组是
  A) char  s[8];  s={"Beijing"};  B) char  *s;  s={"Beijing"};
  C) char  s[8];  s="Beijing";    D) char  *s;  s="Beijing";

(19)
以下程序中函数scmp的功能是返回形参指针s1 s2所指字符串中较小字符串的首地址
#include   <stdio.h>
#include   <string.h>
char  *scmp(char  *s1,  char   *s2)
if( strcmp (s1, s2<0)
return(s1);
else   return(s2);
}
main ()
int  I;    char    string[20],  str[3][20];
for(i=0;i<3;i++)  gets(str[i]);
strcpy(string,scmp(str[0],str[1]));
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
运行时依次输入:abcdabbaabc三个字符串,则输出结果为
  A) abcd        
  B) abba         
  C) abc             
  D) abca

(20)
有以下程序
#include   <string.h>
main()
{ char   str[][20]={"Hello","Beijing"}, *p=str;
printf("%d\n",strlin(p+20));
}
程序运行后的输出结果是
  A) 0           
  B) 5           
  C) 7             
  D) 20

(21)
已定义以下函数
fun(char  *p2,  char   *p1)
  while((*p2=*p1)!=‘\0’){p1++;p2++; }  }
函数的功能是
  A) p1所指字符串复制到p2所指内存空间
  B) p1 所指字符串的地址赋给指针 p2
  C) p1p2两个指针所指字符串进行比较
  D) 检查p1p2两个指针所指字符串中是否有‘\0’

(22)
有以下程序
main()
char   *s[]={"one","two","three"},*p;
 p=s[1];
 printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是
  A) n,two    
  B) t,one   
  C)w,one   
  D) o,two

(23)
阅读以下函数
fun(char  *s1,char *s2)
  int   i=0;
while(s1[i]==s2[i]&& s2[i]!=‘\0’)i++;
return(s1[i]== && s2{i}!==‘\0’);
}
此函数的功能是
  A) s2所指字符串赋给s1
  B) 比较s1s2所指字符串的大小,若s1s2的大,函数值为1,否则函数值为0
  C) 比较s1s2所指字符串是否相等,若相等,函数值为1,否则函数值为0
  D) 比较s1s2所指字符串的长度,若s1s2的长,函数值为1,否则函数值为0

(24)
有以下程序
main()
  char str[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--) puts(ps);
}
执行后的输出结果是
  A) yz   B) z   C) z   D) x
   xyz      yz      yz       xy
   xyz      xyz

(25)
有以下程序
#include <string.h>
main()
{ char *p=“abcde\Ofghjik\0”;
printf(“%d\n”,strlen(p));
}
程序运行后的输出结果是
  A) 12   
  B) 15   
  C) 6   
  D) 5

(26)
有以下程序
void ss(char *s,char t)
{ while(*s)
{ if(*s==t) *s=t-‘a’+’A’;
  s++;
}
}
main()
{ char str1[100]=“abcddfefdbd”,c=’d’;
ss(str1,c);   printf(“%s\n”,str1);
}
程序运行后的输出结果是
  A) ABCDDEFEDBD        
  B) abcDDfefDbD
  C) abcAAfefAbA      
  D) Abcddfefdbd

(27)
以下程序的输出结果是
char  cchar(char  ch)
{
if(ch>=‘A’&&ch<=‘Z')  ch=ch-‘A'+‘a';
return  ch;
}
main()
char   s[]="ABC+abc=defDEF",*p=s;
while(*p)
{ *p=cchar(*p);
p++;
}
printf("%s\n",s);
}
  A) abc+ABC=DEFdef         
  B) abc+abc=defdef
  C) abcaABCDEFdef          
  D) abcabcdefdef

(28)
以下程序段的输出结果是
char   s[]="\\141\141abc\t";
printf  ("%d\n",strlen(s));
  A) 9         
  B) 12          
  C) 13         
  D) 14

(29)
以下程序的输出结果是
main()
char   cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
  A) "AAAA"      
  B) "BBB"     
  C) "BBBCC"    
  D) "CC"

(30)
以下程序的输出结果是
#include  <stdio.h>
#include  <string.h>
main() 
char  b1[8]="abcdefg",b2[8],*pb=b1+3;
while (--pb>=b1)  strcpy(b2,pb);
printf("%d\n",strlen(b2));
}
  A) 8   
  B) 3   
  C) 1      
  D) 7

(31)
以下定义语句中,错误的是
  A) int  a[]={1,2};     
  B) char  *a[3];
  C) char s[10]=”test”;   
  D) int  n=5,a[n];

(32)
以下选项中,不能正确赋值的是
  A) char  s1[10];s1=“Ctest”;
  B) char  s2[]={‘C’, ‘t’, ‘e’, ‘s’, ‘t’};
  C) char  s3[20]=“Ctest”;
  D) char  *s4=“Ctest\n”

(33)
以下程序的输出结果是
  A) ABCD   B) ABCD    C) EFG    D) EFGH
   FGH       EFG        JK       IJKL
   KL        IJ        O
       M

main()
{ char   w[][10]={ “ABCD”,”EFGH”,”IJKL”,”MNOP”},k;
  for(k=1;k<3;k++)   printf(“%s\n”,w[k]);
}

(34)
当执行下面的程序时,如果输入ABC,则输出结果是
  A) ABC6789      
  B) ABC67  
  C) 12345ABC6     
  D) ABC456789
#include  “stdio.h”
#include  “string.h”
main()
{ char  ss[10]=“1,2,3,4,5”;
  gets(ss); strcat(ss, “6789”);  printf(“%s\n”,ss);
}

(35)
有如下程序
main()
   char     s[]=”ABCD”,   *P;
for(p=s+l; p<s+4; p++)   printf (“%s\n”,p);
}
该程序的输出结果是
  A) ABCD            B) A               C) B              D) BCD
   BCD                                               CD
   CD                                                D
                    D

(36)
有如下程序
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]>’\0’;j+=2)
s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
}
该程序的输出结果是
  A) 69825          
  B) 63825          
  C) 6385          
  D) 693825

(37)
设有数组定义: char array [ ]="China"; 则数组 array所占的空间为
  A) 4个字节     
  B) 5个字节       
  C) 6个字节      
  D) 7个字节

(38)
设已有定义: 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);

(39)
下列程序执行后的输出结果是
  A) you&ne      
  B) you           
  C) me           
  D) err
     mai()
     { char  arr[2][4];
       strcpy(arr,"you");  strcpy(arr[1],"me");
       arr[0][3]='&';
       printf("%s \n",arr);
     }

(40)
执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是
  A) 123,456,789                    B) 1,456,789
  C) 1,23,456,789                   D) 1,23,456
     main()
     char  s[100];  int  c, i;
        scanf("%c",&c);  scanf("%d",&i);  scanf("%s",s);
        printf("%c,%d,%s \n",c,i,s);
     }

(41)
下列描述中不正确的是
  A) 字符型数组中可以存放字符串
  B) 可以对字符型数组进行整体输入、输出
  C) 可以对整型数组进行整体输入、输出
  D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

(42)
以下程序的输出结果是
  A) 123456780   
  B) 123  456  780 
  C) 12345678 
  D) 147
   main(  )
    char    ch[3][4]={"123"
"456""78"} *p[3]  int   i
       for(i=0
i<3i++)    p[i]=ch[i]
       for(i=0
i<3i++)    printf("%s"p[i])
   }

(43)
以下程序的输出结果是
  A)4 2 1 1   
  B) 0 0 0 8   
  C) 4 6 7 8  
  D) 8 8 8 8
   main(  )
     char  *s="12134211"
   int v[4]={0000}ki
   for(k=0
s[k]k++)
   switch(s[k])
        case '1'
i=0
           case '2'
i=1
           case '3'
i=2
           case '4'
i=3
       }
       v[i]++

   }
   for(k=0
k<4k++)   printf("%d "v[k])
   }

(44)
以下程序的输出结果是
   A) AfghdEFG     B) Abfhd     C) Afghd    D) Afgd
   #include   
   main(  )
     char    *p1
*p2str[50]="ABCDEFG"
        p1="abcd"
      p2="efgh"
        strcpy(str+1
p2+1)    strcpy(str+3p1+3)
        printf("%s"
str)
   }

(45)
以下程序运行后,输出结果是
  A) cde      
  B) 字符cASCII码值   
  C) 字符c的地址    
  D) 出错
          main()
           char   *s="abcde";
             s+=2;
             printf("%ld\n",s);
          }

(46)
下面能正确进行字符串赋值操作的语句是
  A) char s[5]={"ABCDE"};          
  B) char s[5]={'A','B','C','D','E'};
  C) char *s;s="ABCDEF";           
  D) char *s; scanf("%s",s);

(47)
以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为
  A) 8             
  B) 7              
  C) 6              
  D) 5
        #include<stdio.h>
        #include<string.h>
        func<char str[])
         int    num=0;
            while(*(str+num)!='\0') num++;
            return(num);
        }
        main()
       char  str[10],*p=str;
          gets(p);    printf("%d\n",func(p));
       }

(48)
下面程序运行的结果是
  A) 2ba56         
  B) 6521           
  C) 6              
  D) 62
      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);
       }

(49)
运行下面的程序,如果从键盘上输入:
     ab<
回车>
     c <
回车>
     def<
回车>
则输出结果为
  A) a             B) a              C) ab             D) abcdef
                               c
                               d
                d
  e
       

#include<stdio,h>
        #define   6
        main()
       char  c[N];
          int   i=0;
          for(     ;i<N;c[i]=getchar(),i++);
          for( i=0;i<N;i++)  putchar(c[i]);   printf("\n");
       }

(50)
以下程序运行后,输出结果是
  A) 8             
  B) 7              
  C) 6              
  D) 5
       #include<stdio,h>
       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);
      }

(51)
以下程序运行后,输出结果是
  A) 6385          
  B) 22             
  C) 33             
  D) 693825
       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);
        }

(52)
以下程序运行后,输出结果是
  A) 1234567       
  B) 7654321        
  C) 1711717        
  D) 7177171
        #inchude   <stdio,h>
        #inchude   <string,h>
        fun(char  *w,  int n)
        char   t, *s1,*s2;
           s1=w:  s2=w+n-1;
           while(s1<s2)
           t=*s1++;
              *s1=*s2--;
              *s2=t;
           }
        }
       main()
       char   *p;
          p="1234567";
          fun(p,strlen(p));
          puts(p);
       }

(53)
以下程序运行后,如果从键盘上输入:
     book <
回车>
     book <
空格><回车>
    
则输出的结果是
  A) *8            
  B) #9             
  C) #6             
  D) *9
        #include<string,h>
        main()
        char   a1[80],a2[80],*s1=a1, *s2=a2;
           gets(s1);   gets(s2);
           if(! strcmp(s1,s2))  printf("*");
           esle  printf("#");
           printf("%d/n",strlen(strcat(s1,s2)));
        }

(54)
给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为
  A) 数组X和数组Y等价               
  B) 数组x和数组Y的长度相同
  C) 数组X的长度大于数组Y的长度      
  D) 数组X的长度小于数组Y的长度

(55)
有以下程序
     main()
     { char   a[]="programming", b[]="language";
       char   *p1,*p2;
       int    i;
       p1=a;      p2=b;
       for(i=0;i<7;i++)
          if(*(p1+i)==*(p2+i))   printf("
c",*(p1+i));
     }
   
输出结果是
  A) gm           
  B) rg             
  C) or               
  D) ga

(56)
若有以下定义:
      char s[20]="programming",*ps=s;
     
则不能代表字符o的表达式是
  A) ps+2       
  B)s[2]    
  C) ps[2]          
  D)ps+=2,*ps

(57)
若有以下定义和语句:
char *s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是
  A) 4          
  B)5        
  C)9           
  D)10

(58)
下面程序的输出是
    main()
       char *s="121";
         int  k=0, a=0, b=0;
        do       {k++;
        if(k%2==0) {a=a+s[k]-'0';
             continue;} 
             b=b+s[k]-'0';
              a=a+s[k]-'0';
       }
        while (s[k+1]);
       printf("k=%d a=%d b=%d\n",k,a,b);
  A)k=3 a=2 b=3  
  B)k=3 a=3 b=2       
  C)k=2 a=3 b=2       
  D)k=2 a=2 b=3

(59)
以下程序输出的结果是
#include
#include
main()
{ char w[][10]={"ABCD","EFGH","IJKL","MNOP"},K;
for (k=1;k<3;k++)
printf("%s\n",&w[k][k]);
}
  A)ABCD                          B)ABCD
   FGH                                 EFG
   KL                                     IJ
   M
  C)EFG                            D)FGH
   JK                                 KL
   O
 
(60)
若有以下程序片段:
char str[]="ab\n\012\\\"";
printf(%d",strlen(str));
     
上面程序片段的输出结果是
  A)3              
  B)4                 
  C)6                
  D)12

(61)
函数调用:strcat(strcpy(str1,str2),str3)的功能是
  A) 将串str1复制到串str2中后再连接到串str3之后
  B) 将串str1连接到串str2之后再复制到串str3之后
  C) 将串str2复制到串str1中后再将串str3连接到串str1之后
  D) 将串str2连接到串str1之后再将串str1复制到串str3

(62)
不能把字符串:Hello!赋给数组b的语句是
  A) char b[10]={'H','e','l','l','o','!'};
  B) char b[10];b="Hello!";
  C) char b[10];strcpy(b,"Hello!");
  D) char b[10]="Hello!";

(63)
下面程序的输出是
main()
{ int x=3,y=6,a=0;
while(x++!=(y+=o1))
{ a+o=1;
if(y
#include
main()
{ char ss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
}
  A) ABC           
  B) ABC9          
  C) 123456ABC        
  D) ABC456789

(64)
下面程序的输出是
main()
{ char *a="12134211";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:v4++;
case '1':  v1++;
case '3': v3++;
case '2':  v2++; }
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
  A) v1=4,v2=2,v3=1,v4=1       
  B) v1=4,v2=9,v3=3,v4=1
  C) v1=5,v2=8,v3=6,v4=1      
  D) v1=8,v2=8,v3=8,v4=8

(65)
当执行下面程序且输入:ABC时,输出的结果是
#include<stdio.h>
#include<string.h>
main()
{ char ss[10]="12345";
gets(ss);printf("%s\n",ss);        }
  A) ABC           
  B) ABC9           
  C) 123456ABC        
  D) ABC456789

(66)
下面程序的输出是
#include<string.h>
main()
{ char*a="abcdefgh";
fun(a);puts(a);   }
fun (char * s)
{ int x=0,y;char c;
for(y=strlen(s)-1;x<y;x++,y--) { c=s[x];s[x]=s[y];s[y]=c;}  }
  A)abcdefgh       
  B)hgfdecba       
  C)dcbahgfe       
  D)hgfedcba

(67)
下述对C语言字符数组的描术中错误的是
  A) 字符数组可以存放字符串
  B) 字符数组中的字符串可以整体输入、输出
  C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
  D) 不可以用关系运算符对字符数组中的字符串进行比较

(68)
设有如下函数定义:
int f(char *s)
char *p=s;
while(*p!='\0') p++;
return(p-s);     }
如果在主程序中用下面的语句调用上述函数,则输出结果为
printf("%d\n",f("goodbey!"));
  A) 3           
  B) 6          
  C) 8          
  D) 0

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有