C语言试卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、选择题(请选择一个最合适的答案填在题前面的括号中,每题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",sizeof(s),strlen(s));A

}

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",i,j,m);

}

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",a,b);

}

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

#include

main(int argc,char * argv[])

{

while (argc>1)

{

++argv;

printf("\n%s",*argv);

相关文档
最新文档