收藏 分销(赏)

C语言试卷集(10套)-试题.doc

上传人:xrp****65 文档编号:7031884 上传时间:2024-12-25 格式:DOC 页数:89 大小:242.50KB 下载积分:10 金币
下载 相关 举报
C语言试卷集(10套)-试题.doc_第1页
第1页 / 共89页
C语言试卷集(10套)-试题.doc_第2页
第2页 / 共89页


点击查看更多>>
资源描述
试卷一                                               (本试卷包括第一卷和第二卷,答卷时间总共120分钟) 第一卷 第一部分:基础知识(20项,共40分) 1.一个C语言程序是由(    )  组成的。    A.主程序       B.子程序      C.函数         D.过程 2.转换说明符%x的输出形式是(    )。    A.十进制       B.八进制    C.十六进制       D.二进制 3.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!=b;++a,++b)    printf ( “ ------------“) ;的正确说法是(    ) 。    A.循环体只执行一次                 B.死循环    C.循环体一次也不执行               D.输出----------- 4.若x、y、z均为int 型变量,则执行下列语句后的z值为 (    )。    x=1; y=2; z=3; z=(x>y)?z :y ; z = (z<y)?z:x;    A.1         B.4       C.2             D.3 5.下面标识符中,合法的用户标识符为(    )。    A.P#Ad      B.12a       C.char           D._int 6. ‘A’ + 3 的结果是(    )。    A.’A’       B.’D’的ASCⅡ码      C.65           D.3 7.语句char str[20];说明str是一个字符串,最多能表示 (    ) 。    A.20个字符      B.19个字符    C.18个字符     D.21个字符 8.将int 型变量n转换成float型变量的方法是 (    )。 A.float n      B.(float)n     C.float(n)    D.21个字符 9.以下不正确的描述是 (    )。 A. 使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成 B. while循环是先判断表达式后执行循环体语句 C. do-while和for循环均是先执行循环体语句,后判断表达式 D. for、while、do-while循环中的循环体均可以由空语句构成 10.在循环中使用break 语句的功能是(    )。 A. 使程序的执行跳出break所在的那一重循环 B. 使程序执行结束 C. 跳出包含此break语句的所有循环 D. 终止本次循环,继续下次循环 11.下面是一个初始化指针的语句:int *px = &a;其中指针变量的名字应该是(    )。     A.*pz           B.a         C.px           D.&a 12.若指针 px为空指针,则 (    )。     A.px指向不定        B.px的值为零 C.px的目标为零       D.px的地址为零 13.对于语句int *px[10],以下说法正确的是(    ) 。 A. px是一个指针,指向一个数组,数组的元素是整数型。 B. px是一个数组,其数组的每一个元素是指向整数的指针。 C. A和B均错,但它是C语言的正确语句。 D. C语言不允许这样的语句。 14.具有相同基类型的指针变量P和数组变量Y,下列写法中不合法的是 (    ) 。 A.P = Y                      B.*P = Y[i]   C.P + &Y[i]                   D.P = &Y 15.已知static int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p,则表达式 *(p[0]+1)+**(q+2)的值是(    )。     A.5         B.4         C.6                D.7 16.已知for(;n>=1;n--),下列语句实现将S2所指字符数组中前n个字符复制到S1所指字符数组中,其中代码不正确的是(    )。     A.*S1++=*S2++                    B.S1[n-1]=S2[n-1]     C.*(S1+n-1)=*(S2+n-1)            D.*(++S1)=*(++S2) 17.调用函数的实参与被调用函数的形参应该有如下关系(    ) 。     A.只要求实参和形参个数相等   B.只要求形参和实参顺序相同     C.只要求实参和形参数据类型相同    D.上述三点均需具备 18.联合体成员的数据类型 (    )。 A.相同                  B.可以不同也可以相同  C.长度一样               D.是结构体变量 19.由系统分配和控制的标准输出文件为(    ) 。     A.键盘     B.磁盘       C.打印机       D.显示器 20.C语言标准库函数fread(fd,buffer,n)的功能是(    )。     A.从文件fd中读取长度不超过n个字节的数据送入buffer指向的内存区域     B.从文件fd中读取长度不超过n-1个字节的数据送入buffer指向的内存区域     C.从文件fd中读取长度不超过n个字符送入buffer指向的内存区域     D.从文件fd中读取长度不超过n-1个字符送入buffer指向的内存区域 第二部分:简单程序(12项,共30分) 21.下列程序 main() {  int x,y,z;    x=y=2;z=3; y=z++-1;    printf(“%d\t%d\t”,x,y);    y=++x-1; printf(“%d \t%d\n”,x,y);    y=z---1;    printf(“%d\t%d\t”,z,y);    y=--z-1;    printf(“%d\t%d\n”,z,y); } 运行后输出的数据为¬¬¬_______。 A. 3 1 4 2      B. 3 1 3 3      C. 2 2 3 2       D.  2 1 3 2   2 4 1 3        2 4 2 2        3 3 2 1           1 3 1 2 22.下列程序 main() {  int i,j;char *a,c; a=”computer”; printf(“%s”,a); for(i=0,j=7;i<j;i++,j--) { c=a[i]; *(a+i)=*(a+j); a[j]=c; } printf(“->%s\n”,a); c=a[j-1,i=2+j]; printf(“a[%d]=%c\n”,i,c); } 运行后输出的数据为___   . A. computer->computer     B. computer->retupmoc a[3]=u                   a[5]=m C. computer->retupmoc     D. computer->retupmoc a[4]=p                   a[2]=t 23.下列程序 int sum(int n) { int p=1,s=0,i; for(i=1;i<=n;i++)  s+=(p*=i); return s; } main() { printf(“sum(5)=%d\n”,sum(5)); } 运行后输出的数据为_   ___ A.sum(5)=151  B.sum(5)=152   C.sum(5)=153    Dsum(5)=155 24.下列程序 main() {  static int a[]={5,6,7,3,2,9}; int s1,s2,i,*ptr; s1=s2=0; ptr=&a[0]; for(i=0;i<5;i+2=2) { s1+=*(ptr+i); s2+=*(ptr+i+1); } printf(“s1=%d,s2=%d\n”,s1,s2); } 运行后输出的数据为_____ A.s1=18,s2=14  B.s1=14,s2=32   C.s1=14,s2=18   D.s1=15,s2=19 25.下列程序 int c=1; main() {static int a=5;int b=6; printf(“a=%d b=%d c=%d\n”,a,b,c); func(); printf(“a=%d,b=%d,c=%d\n”,a,b,c); func(); } func() { static int a=4;int b=10; a+=2; c+=10; b+=c; printf((“a=%d,b=%d,c=%d\n”,a,b,c); } 运行后输出的数据为_   ___. A. a=5 b=6 c=1                 B. a=5 b=6 c=1   a=6 b=21 c=11                 a=7 b=17 c=11   a=5 b=6 c=11                  a=5 b=6 c=11   a=8 b=31 c=21                 a=9 b=17 c=21   C. a=5 b=6 c=1                D. a=5 b=6 c=1 a=6 b=21 c=11                 a=7 b=17 c=11 a=6 b=21 c=11                 a=7 b=17 c=11 a=8 b=31 c=21                 a=9 b=38 c=21 26.已知 struct student {char ﹡name;   int student_n;   char grade; };  struct student temp,*p=&temp; temp.name=”chou”; 则下面不正确的是_______。      表达式                    值 A.p→name                  chou    B.(*p)→name+2               h    C.*p→name+2                e    D.*(p→name+2)              o 27.下列程序    #define MAX 10    main()    {  int i,sum,a[ ]={1,2,3,4,5,6,7,8,9,10};       sum=1; for(i=0;i<MAX;i++) sum-=a[i]; printf(“SUM=%d”,sum);          } 程序运行结果是:               A.SUM=55   B.SUM=-54   C.SUM=-55   D.SUM=54 28.下列程序    void inv(int*x,int n)    {int *p,t,*i,*j,m=(n-1)/2; i=x; j=x+n-1; p=x+m; for(;i<p;i++,j--) { t=*i; *i=*j; *j=t;       }      return;    }    main( ) {  static int i,a[10]={3,7,9,11,0,6,7,5,4,2};       inv(a,10); for(i=0;i<10;i++) printf(“%d,”,a[i]);    }    程序运行结果:            A.0,2,3,4,5,6,7,7,9,11          B.11,9,7,7,6,5,4,3,2,0    C.3,7,9,11,0,6,7,5,4,2          D.2,4,5,7,6,0,11,9,7,3 29.下列程序    main()    {  int a[10],b[10],*pa,*pb,i;      pa=a;pb=b;      for(i=0;i<3;i++,pa++,pb++)      {*pa=i;*pb=2*i;       printf(“%d\t%d\n”,*pa,*pb); } printf(“\n”); pa=&a[0]; pb=&b[0]; for(i=0;i<3;i++)   {*pa=*pa+i;    *pb=*pb*i;     printf(“%d\t%d\n”,*pa++,*pb++);   } } 运行后输出的数据为______。 A. 0  0    B.0  0    C. 0  0    D. 0  0   1  2      1  2      1  2      2  2   2  4      2  4      2  4      2  4   0  0      0  0      0  0      0  0   2  2      2  2      1  2      1  2   4  8      2  4      2  4      4  8 30.下列程序    copy_string(from,to)    char *from,*to;    { while(*from) *to++=*from++;     *to=’\0’;    }    main()    { static char s1[ ]=”c_program.”;     static char s2[80];     copy_string(s1,s2);     printf(“%s\n”,s2); copy_string(“123”,s2); printf(“%s\n”,s2);        }   运行后输出的数据为(    )。   A. c_program  123   B.123    C. c_program123    D. c_program                                              123 31.下列程序:    #include  <stdio.h>    main() {  char a[40],b[40];       int i,j; printf(“Enter the string:”); scanf(“%s”,a);       i=j=0; while(a[i]!=’\0’) { if(!(a[i]>=’\0’&&a[i]<=’9’)) { b[j]=a[i]; j++;          }         ++i;   } b[j]=’\0’; printf(“%s”,b);    }   运行后输出的结果是(    ) 。 A. 把键盘输入的字符串显示在屏幕上 B. 把键盘输入的字符串中的数字字符删掉,然后显示该字符串 C. 把键盘输入的字符串中的字符0和9删掉,然后显示该字符串 D. 只保留由键盘输入的字符串中的字母数字,然后显示该字符串 32.下列程序 #include<stdio.h> main() {  char a[80];   int i,j;   printf(“Enter the string:”); scanf(“%s”,a); i=0; while(a[i]!=’\0’) { if(a[i]>=’A’&&a[i]<=’Z’)   a[i]=a[i]-‘A’+’a’;    } printf(“%s”,a); } 运行后输出的结果是(    )。 A. 把键盘输入的字符串中的大写字母变换成小写字母,然后显示变换后的字符串。 B. 把键盘输入的字符串中的数字字符删除掉,然后显示该字符串。 C. 把键盘输入的字符串中的小写字母变换成大写字母,然后显示变换后的字符串。 D. 把键盘输入的字符串原封不动地显示在屏幕上。 第二卷 说明:(1)第二卷含二大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。           (2)每空栏填对得3分,两大题共10个空栏,全填对得30分。 试题一 一个整数称为完全平方数,是指它的值是另一个整数的平方。如81是个完全平方数,因为它是9的平方。下列程序是在三位的正整数中寻找符合下列条件的整数:它既是完全平方数,且三位数字中又有两位数字相同:例如144(12*12)、676(26*26)等,从程序中找出并输出所有满足上述条件的三位数。 程序如下: main() {  int n,k,a,b,c;   for(k=1;  ;k++) {______①______      if(n<100)  _____②_____      if(n<999)  _____③_____      a=n/100;      b=_____④_____      c=n%10,      if(flag(a,b,c))        printf(“n=%d=%d*%d\n”,n,k,k);     } } flag_____⑤_____ {  return(!(x-y)*(x-z)*(y-z)); } 试题二 以下程序所列函数replace(char *s1,char *s2,char str1,char *str2)的功能是将已知字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后所生成的新的字符串存于字符数组s2中。 说明:生成字符串s2的过程是一个循环,顺序访问字符串s1的每个字符;当从某个字符开始不能构成与str1相同的子字符时,就把该字符拷贝到数组s2,当从某个字符开始能构成一个与str1相同的子字符串时,就将字符串str2的各字符拷贝到字符数组s2,并继续访问字符串s1中那个子串之后的字符,直至字符串s1被访问完毕,字符复制即告结束。 下列程序运行的结果是输出: ABCXYZdefg  abABCXYZd  abab 程序如下: replace(char *s1,char *s2,char *str1,char *str2) { char  *t0,*t1,*t2;   while(   ⑥  )    { for(t0=s1,t1=str1;*t1!=’\0’&&   ⑦  ;t0++,t1++);      if(*t1!=’\0’) *s2++=   ⑧    ;      else {     for(t1=str2;*t1!=’\0’;)               *s2++=      ⑨        ;                   ⑩        ;} }   *s2=’\0’; } main() {  char s1[]=”abcdefg  ababcd  abab.”;   char s2[80];   replace(s1,s2,”abc”,”ABCXYZ”);   printf(“%s\n”,s2); }   试卷2 (本试卷包括第一卷和第二卷,答卷时间总共120分钟) 第一卷 说明:(1)第一卷全部为选择题,每题可供选择的答案中,只有一个正确答案。       (2)答本卷的题目时,要在标准答题纸上编号对应的栏口中,用铅笔将正确答案涂黑。在试题上直接勾划不得分。       (3)本卷共分70分,其中第1—26题每题2分,第27—32题每题3分。 第一部分:基础知识(20题,共40分) 1、一个C语言的源程序中,(    ) 。 (A)必须有一个主函数        (B)可以有多个主函数 (C)必须有主函数和其他函数  (D)可以没有主函数 2、下列数据中,为字符串常量的是(    ) 。 (A)‘A’    (B)“house”    (C)How do you do.  (D)’$abc’ 3、若有定义:int a=8,b=5,c;,执行语句c=a/b十0.4;后,c的值为(    ) 。 (A)1.4    (B)1    (C)2.0    (D)2 4、设有int x=11;则表达式(x++*l/3)的值为(    )。 (A)3    (B)4    (C)11    (D)12 5、执行x=5>1+2&&2||2*4<4-!0后,x的值为(    )。 (A)-l    (B)O    (C)1    (D)5 6、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子:(x)/(y×z)的c语言表达式是(    )。 (A)x/y*z    (B)x*(1/(y*z))  (C) x/y*1/z      (D)x/y/z 7、设有以下说明语句 struct ex {int x;float y;  char  z;}example; 则下面的叙述不正确的是(    )。 (A)struct是结构体类型的关键字 (B)example是结构体类型名 (C)x,y,z都是结构体成员名 (D)struct ex是结构体类型 8、假定w、x、y、z、m均为int型变量;有如下程序段: w=1;x=2;y=3;z=4; m=(w<x)?w:x;  m=(m<y)?m:y;  m=(m<z)?m:z; 则该程序段执行后,m的值是(    )。 (A)4    (B)3    (C)2    (D)  1 9、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(    ) 。   (A)  地址传递                                       (B)  单向值传递 (C)  由实参传给形参,再由形参传回实参               (D)  传递方式由用户指定 10、以下定义语句中,错误的是 (    )。 (A)int  a[]={1,2};      (B) char *a[3]; (C)char  s[10]="text";   (D) int n=5,a[n]; 11、下列程厅执行后的输出结果是(    ) 。  main()  {  char  arr[2][4]; strcpy(arr,"you");strcpy(arr[1],"me");    arr[0][3]='&';    printf("%s\n",arr);   } (A)you&me    (B)you    (C) me   (D)err 12、标有/*  */的语句的执行次数是(    )。   int  y,i;   for(i=O;i<20;i++)   { if(i%2==0)     continue;     y+=i;    /*   */    }   (A)  20    (B)  19    (C)  10    (D)  9 13、若用数组名作为函数调用的实参,传递给形参的是(    )。   (A)  数组的首地址              (B)  数组第一个元素的值   (C)  数组中全部元素的值        (D)  数组元素的个数 14、下列语句执行后的结果是(    )。    y=5;p=&y;x=*p++;   (A)  x=5,y=5    (B)  x=5,y=6     (C)  x=6,y=5    (D)  x=6,y=6 15、执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为 (    )。   int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p;   (A)  8      (B)  7      (C)  6      (D)  5 16、经过下面的语句后   int i,a[10],*p;   定义后,下列语句中合法的是 (    )。   (A)  p=100:    (B)  p=a[5];     (C)  p=a+2;    (D)  p=&(i+2); 17、若有以下说明和语句,则对pup中sex域的正确引用方式是(    )。   struct pupil {char name[20];    int  sex;   }pup,*p; p=&pup; (A)p.pup.sex         (B)p->pup.sex   (C)(*p).pup.sex      (D)(*p).sex 18、若已定义了如下的共用体类型变量x,则x所占用的内存字节数为(    ) 。 union  data { int  i;   char  ch;   double  f;  }x; (A)  7    (B)  11    (C)8   (D) 10 19、若有下面的说明和定义: struct  test { int  m1;char m2;float m3;   union  uu{  char u1[5];int u2[2];}ua;   }  myaa; 则sizeof(struct test)的值是 (    ) 。   (A)  12    (B)  16    (C)  14    (D)9 20、若要打开:A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(    ) 。     (A)fopen("A:\\user\\abc.txt","r")     (B)  fopen("A:\\user\\abc.txt","r+")     (C)fopen("A:\\user\\abc.txt","rb")    (D)  fopen("A:\\userl\\abc.txt","w") 第二部分:简单程序(12题,共30分) 21、以下程序的运行情况是(    )  。    main()   {int i=1,sum=0;    while(i<10)      sum=sum+1;     i++;    printf("i=%d,sum=%d",i,sum);   }   (A)  i=10,sum=9    (B) i=9,sum=9     (C)  i=2,sum=l     (D) 运行出现错误 22、若输入B,以下程序的运行结果为(    )  。 main() { char grade;   scanf("%c",&grade);   switch(grade)     {case    'A':printf(">=85");      case    'B':      case    'C':printf(">=60");      case    'D':printf("<60"); default:printf("error");} }    (A)>=85    (B)>=60    (C)>=60<60error    (D) error 23.有如下程序    main()   {  int x=23;      do       {  printf("%d",x--);}while(!x);      } 该程序的执行结果是(    ) 。 (A)321      (B)23      (C)不输出任何内容       (D)陷入死循环 24.有如下程序 int func(int a,int b) {  return  (a+b);} main() {int  x=2,y=5,z=8,r;  r=func(func(x,y),z);  printf("%d\n",r);  } 该程序的输出结果是 (    )  。   (A)  12       (B)  13        (C)14        (D)15 25.以下程序的输出结果是(    )  。 main() { int a,b;   for(a=1,b=1;a<=100;a++)    { if(b>=10)  break;      if(b%3==1)       { b+=3;continue;}     }  printf("%d\n",a); } (A)101       (B) 6        (C)5        (D)4 26.以下程序的输出结果是(    )  。    int a,b;    void  fun()     {  a=100;b=200;}   main()   { int a=5,b=7;     fun();     printf("%d%d\n",a,b);    }    (A)  100200    (B)57    (C)200100      (D)75  27.下面的程序执行后,文件test.t中的内容是 (    )   。 #include  <stdio.h> void fun(char *fname,char *st) { FILE *myf; int i; myf=fopen(fname,"w"); for(i=0;i<strlen(st);i++)fputc(st[i],myf); fclose(myf); } main() { fun("test.t","new world");fun("test.t","hello,");}   (A)  hello,    (B)new,worldhello     (C)  new,world     (D)hello,rld 28.以下程序的运行结果是(    )   。 #include   <stdio.h> main(){    static char  s[30]="abcdefg";    static char t[]="abcd";    int i,j;    i=0;    while(s[i]!='\0')       i++;    j=0;     whi1e(t[j]!='\0') { s[i+j]=t[j];       j++;   }    s[i+j]='\0';    printf("%s\n",s);   } (A)  abcdabcdefg      (B)abcdefg      (C)abcd      (D)abcdefgabcd 29.有如下程序     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 30.若已建立如下图所示的单向链表结构                                       在该链表中,指针p,s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是(    ) 。 (A) p=p->next;s->next=p;p->next=s; (B) p=p->next;s->next=p->next;p->next=s; (C) s->next=NULL;p=p->next;p->next=s (D) p=(*p).next;(*s).next=(*p).next; (*p).next =s; 31.请选择正确的运行结果填入(    ) 中。 include  <stdio.h> int x,y; num() {  int a=15,b=10;  int x,y;  y=a-b;  y=a+b;  return; } main() { int  a=7,b=5;   x=a+b;   y=a-b;   num();   printf("%d,%d\n",x,y); } (A)  12,2      (B)  5,25         (C)2,12      (D)不确定 32.以下程序的输出结果是(    ) 。   #define  M(x,y,z)  x*y+z   main()    { int a=1,b=2,c=3;      printf("%d\n",M(a+b,b+c,c+a));    } (A)19     (B)17       (C)15      (D)12   第二卷 说明:(1)第二卷含两大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。       (2)每空栏填对得3分,两大题共10个空栏,全对得30分。 试题一:     有一函数,实参传来一个字符串,统计此字符串中字母、数字、空各和其他字符的个数,在主函数中输入字符串以及输出上述的结果。 int  letter,digit,space,others;  /*是全局变量*/    main()  {int count(char _____(1)_____);  char text[80];  printf("\nlnput string:\n");  ____(2)___;  printf("string:");  puts(text);  letter=O;  digit=O;  space=O;  others=O;  _____(3)_____;   printf("letter:%d,digit:%d,space:%d,other:%d\n",letter,digit,        space,others);  }  int count(char str[])   {int i;    for(i=O;str[i]!='\0';i++)    if((____(4)____>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))      letter++;    else if(str[i]>='0'&&str[i]<='9')      digit++;    else if(str[i]=
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服