C语言综合练习题 下载本文

C语言综合练习题

一、填空题

1、设有int x=2,y=3,z=4; 则表达式x+y&&z的值为 1 。

2、已知有声明“int x=1,y=2; ”,则执行表达式“(x>y) && (--x>0) ”后x的值为 1 。 3、静态变量和外部变量的初始化是在 编译 阶段完成的,而自动变量的赋值是在 函数调用 时进行的. 4、若有定义:int a=2,b=3,c=4; 则执行完语句:a*=16+(b++)-(++c); 后,a的值是 28 。 5、设有int a=1,b=2,c=3; 执行语句a=b=c;后a的值是 3 。

6、若有声明“int a=30,b=7;”,则表达式“!a+a%b”的值是 2 。

7、下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出1,否则输出0。请

填空。 main()

{ int i, x, y=1;

scanf(\

for(i=2;i<= x-1或x/2 ; i++)

if ( x%i==0 ) { y=0; break; }

printf(\}

8、以下程序运行后的输出结果 10 11 。 #include void main()

{ int m=011, n=11;

printf(\%d %d\\n\,++m,n++); }

9、执行下列语句的结果是 4,4 。

int a=3; printf(\10、下面程序的运行结果是 135 。

#include void main()

{ char ch[6]={\

int j,s=0; p1=&ch[0];

for(j=0;*(p1+j)>='0'&&*(p1+j)<='9';j+=2) s=10*s+(*(p1+j)-'0'); printf(\}

11、下面程序的运行结果是 -3,-7,-4 。

#include

void sub(int x,int y,int *z) { *z=y-x; } void main() { int a,b,c;

sub(6,3,&a);

- 1 -

sub(4,a,&b); sub(a,b,&c);

printf(\

}

12、表示“x≥y≥z”的C表达式是 x>=y&&y>=z 。 13、int x=2,z; z=-x+++1; 则z的值为 -1 。

14、表达式 strlen(\的结果是 11 。 15、预处理命令行都必须以 # 号开始。 16、以下程序的执行结果是 37 。

#include void main() { int i;

for(i=3;i<13;i++) {

if(i%4==0) i+=2; else if(i/10) break;

else printf(\} }

17、若a,b和c均是int型变量,则计算表达式 a=(b=4)+(c=2) 后,a值为 6 ,b

值为 4 ,c值为 2 。 18、以下程序的输出结果是 54321 。

#include void main( )

{ int n=12345, d;

while(n!=0) { d=n; printf(\ n/=10; } }

19、已知 i=5,写出语句 i*=i+1; 执行后整型变量 i 的值是 30 。 20、以下程序运行时输出结果是 120 1 0 。

#include void main() { int i,j,row=0,col=0,m;

int arr[3][2]={100,110,120,28,91,35}; m=arr[0][0]; for(i=0;i<3;i++) for(j=0;j<2;j++) if(arr[i][j]>m) { m=arr[i][j]; row=i; col=j; }

printf(\ %d %d\\n\}

二、单选题

- 2 -

1、下面程序的输出结果是( C )。

main()

{ int x=10,y=10,i;

for(i=0;x>8;y=++i)

printf(\

}

A、10 1 9 2 B、9 8 7 6 C、10 10 9 1 D、10 9 9 0 2、下列叙述中正确的是( D )。

A、每个C程序文件中都必须要有一个main()函数 B、在C程序中main()函数的位置是固定的

C、C程序中所有函数之间都可以相互调用,与函数所在位置无关 D、在C程序的函数中不能定义另一个函数

3、若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++) 中的

条件表达式(x-y)等价的是( C )。

A、(x-y>0) B、(x-y<0) C、(x-y<0||x-y>0) D、(x-y= =0) 4、在位运算中,操作数每右移一位,其结果相当于( B )。

A、操作数乘以2 B、操作数除以2 C、操作数乘以16 D、操作数除以16

5、设有定义:int a; float b; 执行scanf(\%2d%f\,&a,&b);语句时,若从键盘输

入876 543.0<回车>,a和b的值分别是( B )。 A、876和543.000000 B、87和6.000000 C、87和543.000000 D、76和543.000000

6、已知变量x和变量y均为int型,则顺序执行下列语句后的结果是( D )。

x=x+y; y=x-y; x=x-y;

A、把x和y按从小到大排列 B、把x和y按从大到小排列 C、结果不确定 D、交换变量x和y的值 7、在嵌套使用if语句时,C语言规定else总是( C )。

A、和之前与其具有相同缩进位置的if配对 B、和之前与其最近的if配对

C、和之前与其最近的且不带else的if配对 D、和之前的第一个if配对

8、若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )。

A、a、=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b 9、以下叙述中正确的是( C )。

A、break语句只能用于switch语句体中

B、continue语句的作用是使程序的执行流程跳出包含它的所有循环 C、break语句只能用在循环体内和switch语句体内

D、在循环体内使用break语句和continue语句的作用相同 10、执行语句 for(i=1;i++<4;); 后变量 i 的值是( C )。

A、3 B、4 C、5 D、不定 11、有以下程序:

#include

- 3 -

void main()

{ int k=5;

while(--k) printf(\%d\; printf(\; }

执行后的输出结果是( A )。

A、1 B、2 C、4 D、死循环 12、下列语句的结果是( D )。

main() { int j; j=3;

printf(\ printf(\}

A、3,3 B、3,4 C、4,3 D、4,4 13、以下选项中,值为1的表达式是( B )。

A、1-'0' B、1-'\\0' C、'1'-0 D、'\\0'-'0' 14、以下正确的描述是:在C语言程序中( B )。

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

15、设有如下定义:char a[80]= \;则正确的输出语句是( D )。

A、puts(a,b); B、printf(\C、putchar(a,b); D、puts(a); puts(b); 16、以下不正确的叙述是( D )。

A、在C程序中所用的变量必须先定义后使用 B、程序中,APH和aph是两个不同的变量

C、若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变 D、当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值 17、设有以下变量均为int类型,则值不等于7的表达式是( C )。

A、(x=y=6,x+y,x+1) B、(x=y=6,x+y,y+1) C、(x=6,x+1,y=6,x+y) D、(y=6,y+1,x=y,x+1)

18、在C语言中,char型数据在内存中的存储形式是( D )。

A、补码 B、反码 C、原码 D、ASCII码

19、设C语言中,一个short int型数据在内存中占2个字节,则unsigned short int型数据的

取值范围为( C )。

A、0—255 B、0--32767

C、0—65535 D、0--2147483647

20、设x和y为浮点型变量,则以下( C )语句是正确的。

A、x=y%2 ; B、x*x=y ; C、x=x+10*y ; D、*x=y+2 ; 21、static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'};

说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存储方式,其中被初始化的下标变量是( C )。

- 4 -