您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页C语言试卷

C语言试卷

来源:化拓教育网
题号 得分 一 二 三 四 总 分

一、选择题(请选择一个最合适的答案填在题前面的括号中,每题2分,15

题,计30分)

1、一个C程序的执行是从( A)

A、main()函数开始,直到main()函数结束 B、第一个函数开始,直到最后一个函数结束 C、第一个语句开始,直到最后一个语句结束 D、main()函数开始,直到最后一个函数结束 2、下列符号可以作为变量名的是( C )

A、+a B、*p C、_DAY D、next day 3、若定义int m=7,n=12; 则能得到值为3的表达式是( D ) A、n%=(m%=5) B、n%=(m-m%5)2 C、n%=m-m%5 D、(n%=m)- (m%=5)5

4、为了避免嵌套的if-else语句的二义性,C语言规定else总是与(C )组成配对关系 A、缩排位置相同的if B、在其之前未配对的if

C、在其之前最近的未配对的if D、同一行上的if

5、以下叙述中正确的是(A )

A、函数的定义不可以嵌套,但函数的调用可以嵌套 B、函数的定义可以嵌套,但函数的调用不可以嵌套 C、函数的定义和调用都可以嵌套 D、函数的定义和调用都不可以嵌套

6、已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\\103’是( C )

A、A B、B C、C D、D 7、下列语句段中不是死循环的是( B )

A、for (i=1;;i++) B、 i=100; Sum=sum+1; while(1)

{

i=i%100+1; if (i= =20) break;

}

C、k=0; D、s=3379;

do while (s++%2+3%2) { s++; ++k;

} while (k<=0)

8、以下关于字符数组的描述中错误的是( C) A、字符数组可以存放字符串

B、字符数组中的字符串可以整体输入和输出

C、可以在赋值语句中通过运算符“=”对字符数组整体赋值 D、不可以用关系运算符对字符数组中的字符进行比较 9、在定义了数组int a[3][6];后,第10个元素是B

A、a[2][4] B、a[1][3] C、a[3][1] D、a[4][2] 10、有以下程序

#include \"stdio.h\" #include \"string.h\" main() {

char s[]=\"sb\\n\\\\\\'\\r\\b\";

printf(\"%d,%d\\n\}

A、8,7 B、8,8 C、7,8 D、7,7 11、在C语言的程序中,下列叙述错误的是( D) A、形参是局部变量

B、不同的函数中,可以使用相同名称的变量

C、在一个函数的内部,可以在复合语句中定义变量

D、main()函数中定义的变量在整个文件或程序中都有效 12、C语言中规定函数的返回值的类型是由( D ) A、return语句中的表达试类型所决定

B、调用该函数时的主调用函数类型所决定 C、调用该函数时系统临时决定

D、在定义该函数时所指定的函数类型所决定

13、已知变量a被定义为int型变量,以下定义并初始化指针变量p的语句中正确的是( D)

A、int p=a; B、int *p=*a; C、int p=&a; D、int *p=&a;

14、若有定义char s[3][4];以下对数组元素s[i][j]的各种引用形式中错误的是( A ) A、*(s[i]+j) B、*(s+i)+j C、s[i][j] D、*(*(s+i)+j)

15、下面提供的一组函数中,用于按“记录”的方式进行输入和输出的是( C ) A、fread(),fwrite() B、fscanf(),fprintf() C、fgets(),fputs() D、fgetc(),fputc()

二、填空题(每题2分,10题,计20分)

1、c语言的语句必须以_____;_______结尾,C语言中可以利用______强制类型转换_______将一个表达式的值转换成指定的类型。

2、利用TC或VC++6.0编辑C语言源程序,源程序的后缀为___.c______,生成的可执行程序后缀为__.obj___________。

3、有定义int a,b,c;则“a是偶数”的表达式是 __a%2==0__________,若已经知

道a、b、c为正数,则a、b、c构成一个三角形的条件是_____(a+b)>c&&(a-b)4、C语言中do-while 与while循环的主要区别是:do-while的循环体_______执行一次循环体,后判断表达式___________________,while语句循环体____先判断表达式,再执行循环体_________________________。

5、C语言中,一个自定义函数一般由两个部分组成,它们是___函数首部__________和____函数体________。

6、C语言中的预处理命令均以_#_______符号开头,可以出现在程序中的 __任何___ 位置。

7、C语言中,将一个变量的地址称为 ___指针___ ,存放变量地址的变量称为 ____指针变量____ 。

8、若定义int (*p)( );则p是 ____指针___ ,而定义int * p( ); 则p是 ____指针函数_____ 。

9、C语言中,定义结构体类型的关键字是____ ___ ,文件(FILE)类型由系统在_______________头文件中的定义

10、C语言中,用基本类型变量作为函数参数只能进行 __单向___ 传值,而通过数组(指针、全局变量)等类型变量作为函数参数可以实现 ____双向_____ 传值。

三、阅读程序,按要求回答问题(每题3分,8题,计24分)

1、以下程序的运行结果是________________________ #include main() { int i=5,j=6,m=i+++j; printf(\"%d,%d,%d\\n\}

2、下面程序的运行结果是____________ __________ #include main()

{ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; }

case 2: a++;b++; break; case 3: a++;b++; }

printf(\"\\na=%d,b=%d\}

3、阅读下面程序,设编译后生成的可执行文件名为cfile#include

main(int argc,char * argv[]) {

while (argc>1) {

++argv;

printf(\"\\n%s\

--argc; } }

如果在操作系统状态下,输入cfile computer C_LANGUAGE 将显示如下:

_____________ _____ _______________________ 4、以下程序运行时,当输入Language Programming[Enter],其结果是____________ #include main() { char str[30]; scanf(\"%s\ printf(\"%s\\n\}

5、下面的自定义函数的功能是___________________________ int fun(int n) { int f;

if(n<0) printf(\"n<0,data error!\"); else if(n= =0||n= =1) f=1; else f=fun(n-1)*n; return(f); }

6、阅读下面程序,该程序的运行结果是: #include int i=1; other()

{ static int a=2; static int b; int c=10;

a=a+2; i=i+32; c=c+5; printf(\"-----OTHER------\\n\");

printf(\"i:%d a:%d b:%d c:%d\\n\ b=a; }

main()

{ static int a;

register int b=-10; int c=0;

printf(\"-----MAIN------\\n\");

printf(\"i:%d a:%d b:%d c:%d\\n\ c=c+8; other();

printf(\"-----MAIN------\\n\");

printf(\"i:%d a:%d b:%d c:%d\\n\ i=i+10; other(); } 7、设有定义:则对将stu1变量的出生月份置为12的语句是___ _________________;struct student

{ int num;

char name[20]; struct date { int month; int day; int year; }birthday; }stu1;

8、写出下面程序的运行结果 _____________________ #include \"stdio.h\" main() {

static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int *arr[3]={a[0],a[1],a[2]}; int i,**p; p=arr;

for(i=0;i<4;i++)

printf(\"%d \}

3 四、程序设计(1、2每题8分, 3题10分,3题,计26分)

1、 编程实现求一元二次方程ax2+bx+c=0的根。

要求:从键盘输入a、b、c的值,并把方程的根(只考虑实根)显示在屏幕上。

2、编程实现统计文本文件(file.txt)中字符的个数。

3、定义一个整型二维数组并初始化,编程求该数组所有元素的和。 要求:分别用数组下标法、一级指针法、二级指针法实现。

四、程序设计(1、2每题8分, 3题10分,3题,计26分)

2、 编程实现求一元二次方程ax2+bx+c=0的根。

要求:从键盘输入a、b、c的值,并把方程的根(只考虑实根)显示在屏幕上。 本答案为参,变量定义及赋值3分,控制与表达式 3分,其余2分。

# include float x1,x2,disc,p,q;

greater_than_zero(float a, float b) { x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a); }

equal_to_zero(float a,float b) { x1=x2=(-b)/(2*a); }

smaller_than_zero(float a,float b) { p= -b/(2*a);

q=sqrt(disc)/(2*a);

}

main( )

{ float a,b,c;

scanf(“%f,%f,%f”,&a,&b,&c); disc=b*b-4*a*c; if ( disc>0)

{ greater_than_zero(a,b);

printf(“x1=%5.2f\x2=%5.2f\\n\\n”,x1,x2); else if(disc = =0)

{ equal_to_zero( a,b);

printf(“x1=%5.2f\x2=%5.2f\\n\\n”,x1,x2); } else

{smaller_than_zero( a,b);

printf(“x1=%5.2f\x2=%5.2f\\n\\n”,x1,x2); } }

2、编程实现统计文本文件(file.txt)中字符的个数。

一、选择题(请选择一个最合适的答案填在题前面的括号中,每题2分,15

题,计30分)

1A 2C 3D 4C 5A 6C 7B(B\\C选择一个就算对) 8C 9B 10A 11D 12D 13D 14B 15A

二、填空题(每题2分,10题,计20分)部分对酌情给分

下面为参,意思正确也可给分。 1、分号(;) 强制类型转换 2、 .c(.cpp) .exe

3、 a%2==0 a+b>c&&a+c>b&&b+c>a

4、 do-while中循环体至少执行一次 while的循环体可能一次也不执行 。 5、 函数首部 函数体 。 6、 “#” 任何

7、 指针 指针变量 。 8、 指针 函数 。 9、 struct stdio.h 10、 单向 双向

三、阅读程序,按要求回答问题(每题3分,8题,计24分)部分对酌情给

部分答对酌情给分。 1、 6、6、11 2、 a=2,b=1 3、computer C_LANGUAGE 4、Language 5、递归求n! 6、

7、stu1.birthday.month=12; 8、 1 2 3 4

本答案为参,fopen 3分,循环体3分,其余2分。 #include \"stdio.h\" #include \"stdlib.h\" main() { FILE *fp; int count=0; if ((fp=fopen(\"c:\\\\out.txt\ { printf(\"can't open file\"); exit(0); } while (fgetc(fp)!=EOF) count++; fclose(fp); printf(\"it contains %d characters.\}

3、定义一个整型二维数组并初始化,编程求该数组所有元素的和。 要求:分别用数组下标法、一级指针法、二级指针法实现。

参略,数组定义及赋值2分,下标法3分、一级指针法2分,二级指针法2分,其余1分。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务