当前位置:文档之家› C语言试卷及答案

C语言试卷及答案

一、选择题(每题 1 分,共 20 分)1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。

A、循环B、递归C、转移D、嵌套2. 下列标识符中,合法的是_______ 。

A) unsigned B) 5ab C) INT# D)_num23. 若float x ;x = 10/4 ;x的值是。

A、2.5B、2.0C、3D、 24. 表达式!x 等价于。

A、x==0B、x==1C、x != 0D、x != 15. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。

A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算6. 能将高级语言编写的源程序转换为目标程序的是。

A、链接程序B、解释程序C、编译程序D、编辑程序7. 下列语句定义pf为指向float类型变量f的指针,是正确的。

A、float f, *pf = f;B、float f, *pf = &f;C、float *pf = &f, f;D、float f, pf = f;8. 一个C程序的执行是从。

A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。

A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B、(x>=1)||(x<=10)||(x>=200)||(x<=210)C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)10. 对两个数组a和b进行如下初始化char a[]=“ABCDEF”;char b[]={ ‘A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的是。

A、a和b数组完全相同B、a和b长度相同C、a和b中都存放字符串D、a数组比b数组长度长11. 是不正确的字符常量。

A、'\n'B、'1'C、"a"D、'\101'12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。

A、k=(a>b)?1:0;B、k=a>b;C、k=a<=b;D、a<=b ? 0 : 1;13. 设变量定义为“int x, *p=&x;”,则&*p相当于。

A、pB、*pC、xD、*&x14. 有两个字符数组a、b,则以下正确的输入语句是。

A)gets(a,b); B) scanf(“%s%s”,a,b);C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”);15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。

A、地址传递B、单向值传递C、由实参传给形参,再由形参传回给实参D、由用户指定传递方式16. C语言规定,函数返回值的类型是由。

A、return语句中的表达式类型所决定B、调用该函数时的主调函数类型所决定C、调用该函数时系统临时决定D、在定义该函数时所指定的函数类型所决定17. 若已定义char s[10]; 则在下面表达式中不表示s[1]的地址的是。

A、s+1B、 s++C、&s[0]+1D、&s[1]18. 下列关于switch语句和break语句的说法中,正确的是。

A、break语句是switch语句中的一部分。

B、在switch语句中可以根据需要使用或不使用break语句。

C、在switch语句中必须使用break语句。

D、以上三个结论中有两个是正确的。

19. 以下对二维数组a的正确说明是。

A、int a[ ][3]={ 0 };B、int a[3][ ]={ {1},{2},{3} };C、int a[1][3]={ 1,2,3,4 };D、int a[2][3]={ {1,2},{3,4},{5,6} };20. 以下结构体类型和变量的定义,正确的是。

A、struct studentB、struct{ int number, {int number,char name[20], char name[20],}s; };s;C、struct studentD、struct student{ int number; {int number;char name[20]; char name[20];}s; };s;二、填空题(每空 2 分,共 20 分)1.写出语句printf ("%d, %o, %x", 0x12, 12, 012); 的输出结果①。

2.C语言运算符中,优先级最低的是②。

3.int x; float y;且执行scanf(“%3d%f”,&x,&y);语句时,从第一列开始输入数据12345 678 ,则x 的值是③y的值是④。

4.定义int i=1;执行while(i++<5)后i的值为⑤。

5.执行下列语句char s[4]=”DEF”,*p; p=s;后,*(p+3)的值是⑥。

6.构成数组的各个元素必须具有相同的⑦。

5.在C语言中,二维数组元素在内存中的存放顺序是⑧。

7.在C语言中,逻辑“假”值为⑨。

8.字符串”ab\034\\\x79”的长度为⑩。

三、读程序,写结果(每题4分,共20分)1.写出下列程序段的输出结果。

#include <stdio.h> main( ) {int k ;for( k=10; k != 0; k-- ) ; printf ( "%d", k ); }3.写出下列程序的输出结果。

#include <stdio.h> main( ){ struct st { int x, y;} a[4]={{10,20},{30,40},{50,60},{70,80}}; struct st *p=a;printf("%d,", (*a).x); printf("%d,", a[2].y);printf("%d\n", (*(p+3)).x); }5.写出下列程序的输出结果。

#include "stdio.h" void main(){ int a[10]={1,2,3,-4,5,6,7,-8,9,10},s=0; for(int i=0;i<10;i++) { if (a[i]<0) break; s+=a[i]; }printf("%d",s); }四、程序填空题(每空 2 分,共 20 分)1.下列程序,求数组中主对角线元素之和。

main(){ int a[3][3],s=0;for(int i=0;i<3;i++ )2.写出下列程序的输出结果。

#include <stdio.h>void sub(int x, int y, int *z) { *z=y-x;} main( ) {int a,b,c; sub(7,3,&a); sub(2,a,&b); sub(a,b,&c);printf("%d,%d,%d\n",a,b,c); }4.写出下列程序的输出结果。

#include "stdio.h" void main() {int k, j, a[5][5], b[5]; for(k=0; k<5; k++) for(j=0; j<5; j++) a[k][j]=k*5+j+1; for(k=0; k<5; k++) {b[k] = 0;for(j=0; j<5; j++) b[k] += a[k][j]; }for(k=0; k<3; k++) printf("%4d", b[k]);}for(int j=0;j<3;j++)scanf("%d", ①);for(i=0;i<3;i++)for(int j=0;j<3;j++)if( ②)s+= ③;printf("s=%d\n",s);}2.下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、及其它字符的个数,请填空。

#include<stdio.h>void main(){ int alpha,space,digit,other;char *p,s[80];alpha=space=digit=other=0;gets(s);for(p=s;*p!='\0';p++)if( ④ )alpha++;else if( ⑤ )space++;else if( ⑥ )digit++;else other++;printf("alpha:%d space:%d digit:%d other:%d\n",alpha,space,digit,other);}输入10个数,按从大到小的顺序排序输出。

#include<stdio.h>void main(){ int i,j,a[10],temp;for(i=0;i<10;i++)⑦for(i=0;i<9;i++)for( ⑧;⑨;j++)if( ⑩){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}for(i=0;i<10;i++)printf("%d ",a[i]);}五、编程题 ( 每题10分,共 20 分)1.从键盘输入10个整数,求所有素数的和。

要求判断整数是否为素数的功能用函数实现。

2.a为float 型的一维数组,输入n个实数,去掉一个最大数,去掉一个最小数,求其他n-2个数的平均值(输出时要求保留一位小数.)如输入 5 /* n=5 */2.13.54.3 1.9 3.7则输出3.5+2.1+3.7的平均值:3.1。

相关主题