C语言易错考题总结(九)

1.下列叙述正确的是(C)

A:C语言的基本组成单位是语句

B:C程序中的每一行只能写一条语句

C:C语句必须以分号结束

D:C语句必须在一行内完成

解释:

A:基本组成单位是函数

B、D都错

2.以下选项中,属于合法转移字符的是(A)

A:'\\'

B:'\108'

C:'xab'

D:'\nab'

解释:

B:八进制中数字最大是7

C:缺少反斜杠(\)

D:'\n'本就是一个单独的转移字符,n后面不能带其他东西

3.C语言规定:在一个源程序中,main函数的位置(C)

A:   必须在最开始

B:必须在系统调用的库函数的后面

C:可以任意

D:必须在最后

解释:

C程序中的主函数(main函数)是程序的入口点,程序从主函数开始执行。主函数可以在程序中的任何地方定义,不一定要在系统调用的库函数后面。在C程序中,系统调用的库函数可以在主函数之前或之后使用。只要正确地声明和调用这些库函数,它们可以在程序中的任何地方使用。编译器会根据函数的声明和调用来解析和链接这些函数的定义。需要注意的是,如果在主函数之前使用了库函数,需要在主函数之前提前声明这些函数,或者包含相应的头文件,以确保编译器能够正确的解析和链接这些函数。

4.以下选项中,不是合法整型常量的是(B)

A:160

B:-0xcdg

C:-01

D:-0x48a

解释:

A中160是十进制,C中-01是八进制,D中有0x是16进制,但是B中的字母到了g,16进制字母最高是F(15)。

5.下列对变量定义和初始化合法的是(A)

A:short _a=1.1e-1;

B:double b=1+5e2.5;

C:long do=oxfdaL;

D:float 2_and=1e-3;

解释:

A中虽然右边是小数,但是赋值后把小数点舍去,直接是0;B中e后面只能是整数,会报错;C中变量名do为关键字,不合法;D中变量名以数字2开头不合法

6.设x、y均为float型数据,则以下不合法的赋值语句是(B)

A:++x;

B:y=(x%2)/10;

C:x*=y+8;

D:x=y=0;

解释:A表示:x=x+1,正确;B中%运算符的运算数只能是整数,因此错误。

7.与数学表达式\frac{9x^{n}}{2x-1}对应的C语言表达式是(C)

A:9*x^n/(2*x-1)

B:9*x**n/(2*n-1)

C:9*pow(x,n)*(1.0/(2*x-1))

D:9*pow(n,x)/(2*x-1)

解释:

A中^是异或,不是次幂;B中**在C语言中不是次幂,在其他有写语言(比如python)是次幂;D中

计算的是n的x次幂,不符合题意。

8.有以下程序和输入,则输出结果是(D)

#include
void main()
{
	char c1,c2,c3,c4,c5,c6;
	scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
	c5=getchar();
	c6=getchar();
	putchar(c1);
	putchar(c2);
	printf("%c%c\n",c5,c6);
 }

输入:

 123<回车>
 45678<回车>

A:267

B:1256

C:1278

D:1245

解释:

输入123<回车>时,c1的值为'1',c2的值为'2',c3的值为'3',c4的值为'<回车>'。再执行"c5=getchar();c6=getchar()",从键盘输入45678<回车>,c5的值为'4',c6的值为'5'。

9.若a和b均是正整数型变量,则以下正确的switch语句是(D)

A:

	switch(pow(a,2)+pow(b,2))
	{
		case 1:case 3:y=a+b;break;
		case 0:case 5:y=a-b;
	}

B:

	switch(a*a+b*b);
	{
		case 3:
			case 1:y=a+b;break;
			case 0:y=b-a;break;
	}

C:

	switch a
	{
		default:x=a+b;
		case 10:y=a-b;break;
		case 11:y=a*d;break;
	}

D:

	switch(a+b)
	{
		case 10:x=a+b;break;
		case 11:y=a-b;break;
	}

解释:A中pow返回类型是double,而switch后面只能是整型或字符型;B中switch()后面加了分号“‘;”错误。C中switch后面少了括号()。

10.下述for循环语句(B)

 	int i,k;
 	for(i=0,k=-1;k=1;i++,k++) printf("* * * *");

A:判断循环结束的条件非法

B:是无限循环

C:只循环一次

D:一次也不循环

解释:

循环中用于判断结束的条件为"k=1",这个表达式永真(永远都不是0),所以循环会永远进行下去。

11.若有“int a=1,x=1;”,则下面循环语句执行(A)

while(a<10) x++;a++;

A:无限次

B:不确定次

C:9次

D:10次

解释:

for语句和while语句如果后面不加大括号{},那么其循环内容只是到第一个分号为止,因为每次只对x进行自加,a不受影响,而判断句结束条件又是a,所以循环无限次。

12.执行下面语句后,变量i的值为(C)

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

A:2

B:3

C:4

D:5

解释:

虽然i的值为3时,i++<3不成立,跳出循环,但是i++等价于i=i+1,所以i还是要加1的,因此i最后的值为4.

13.阅读下程序,当输入25,13,10<回车>时,输出结果为(D)

#include
int main()
{
	int x,y,z;
	scanf("%d%d%d",&x,&y,&z);
	printf("x+y+z=%d\n",x+y+z);
	return 0;
 } 

A:x+y+z=48

B:x+y+z=35

C:x+z=35

D:不确定值

解释:

输入时各数之间以逗号间隔,而再scanf中没有逗号,所以输入不确定。

14.以下程序的结果为(A)

#include
int main()
{
	int a,b,c;
	a=7;b=8;c=9;
	if(a>b)
		a=b,b=c;c=a;
	printf("a=%d b=%d c=%d",a,b,c);
	return 0;
 }

A:a=7 b=8 c=7

B:   a=7 b=9 c=7

C:   a=8 b=9 c=7

D:   a=8 b=9 c=8

解释:

在if语句的下一行,a=b,b=c后面有一个分号,表示if语句包含到此为止,下面的c=a与if语句无关。ab为假,if语句不会执行,但是c=a会执行。

15.对一下程序的叙述正确的是(D)

#include
int main()
{
	int x=1;
	do
	{
		x=-1*x;
	}while(!x)
	return 0;
 }

A:是死循环

B:循环执行一次

C:循环执行两次

D:有语法错误

解释:

while()后面要有分号;,没有会报错

你可能感兴趣的:(c语言,开发语言)