当前位置:文档之家› C语言试题2

C语言试题2

C语言试题2
C语言试题2

124 第 6 章选择结构程序设计

考纲要求

1.用if语句实现选择结构。

2.用switch语句实现多分支选择结构。

3.选择结构的嵌套。

知识点讲析

【用if语句实现选择结构】

C语言中的if语句有两种基本形式:

不含else子句的if语句

语句形式如下:

if(表达式)

语句

例如:

if(x>y)

printf("%d",x);

其中,if是C语言的关键字,表达式两侧的圆括号不可少,最后是一条语句,称为if 子句。如果在if子句中需要多个语句,则应该使用花括号把一组语句括起来组成复合语句,这样在语法上仍满足“一条语句”的要求。

含else子句的if语句

语句形式如下:

if(表达式)

语句1

else

语句2

例如:

if(x>y)

printf("%d",x);

else

125 printf("%d",y);

在这里,“语句1”称为if子句,“语句2”称为else子句,这些子句只允许是一条语句,若需要多条语句时,则应该使用花括号把这些语句括起来组成复合语句。

读者应该注意:else不是一条独立的语句,它只是if语句的一部分,不允许有这样的语句:

else printf("***");

在程序中else必须与if配对,共同组成一条if-else语句。

【用switch语句实现多分支选择结构】

switch语句是多分支选择语句。语句形式如下所示。

switch(表达式)

{ case 常量表达式1:语句1

case 常量表.达式2:语句2

.

case 常量表达式n:语句n

default :语句n+1

}

说明

1.switch是关键字,switch语句后面用花括号括起来的部分称为switch语句体。

2.紧跟在switch后一对括号中的“表达式”可以是整型表达式及后面将要学习的字符型或枚举型表达式等。表达式两边的一对括号不能省略。

3.case也是关键字,与其后面的常量表达式合称case语句标号。常量表达式的类型必须与swicth后的表达式类型相同。各case语句标号的值应该互不相同。

4.default也是关键字,起标号的作用。代表所有case标号之外的那些标号。default 标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有default标号。 5.case语句标号后的语句1,语句2,等等,可以是一条语句,也可以是若干语句。 6.必要时,case语句标号后的语句可以省略不写。

7.在关键字case和常量表达式之间一定要有空格,例如case 10:不能写成case10:。【选择结构的嵌套】

前面我们介绍了用if语句实现的选择结构和用switch语句实现的多分支选择结构,接下来我们来介绍一下选择结构的嵌套。if和else子句可以是任意合法的C语句,因此当然也可以是if语句,通常称此为嵌套的if语句。内嵌的if语句既可以嵌套在if子句中,又可以嵌套在else子句中。

在if子句中嵌套具有else子句的if语句

语句形式如下:

if(表达式1)

if(表达式2)

语句1

else

语句2

else

语句3

当表达式1的值为非0时,执行内嵌的if-else语句;当表达式1的值为0时,执行语句3。

在if子句中嵌套不含else子句的if语句

语句形式如下:

if(表达式1)

{

if(表达式2)

语句1

}

else

语句2

注意:在if子句中的一对花括号不可缺少。因为C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。因此以上语句如果写成:

if(表达式1)

if(表达式2)

语句1

else

语句2

实质上等价于:

if(表达式1)

if(表达式2)

语句1

else语句2

当用花括号把内层if语句括起来后,使得内层if语句在语法上成为一条独立的语句,从而使得else与外层的if配对。

在else子句中嵌套if语句

语句形式如下:

1.嵌套if语句带有else: 2.嵌套if语句不带else:

if(表达式1) if(表达式1)

语句1 语句1

else else

if(表达式2)语句2 if(表达式2)语句2

else语句3

或写成:或写成:

if(表达式1) if(表达式1)

语句1 语句1

127 else if(表达式2) else if(表达式2)

语句2 语句2

else 语句3

由以上两种语句形式可以看到,内嵌在else子句中的if语句无论是否有else子句,在语法上都不会引起误会,因此建议读者在设计嵌套的if语句时,尽量把内嵌的if语句嵌在else子句中。

C语言程序有比较自由的书写格式,但是过于“自由”的程序书写格式,往往使人们很难读懂,因此要求读者参考本书例题程序中按层缩进的书写格式来写自己的程序。

不断在else子句中嵌套if语句可形成多层嵌套。如:

if(表达式1)

语句1

else

if(表达式2)

语句2

else

if(表达式3)

语句3

.

else

语句n

这时形成了阶梯形的嵌套if语句,此语句可用以下语句形式表示,使得读起来既层次分明又不占太多的篇幅。

if (表达式1)

语句1

else if(表达式2)

语句2

else if(表达式3)

语句3

.

else

语句n

以上形式的嵌套if语句执行过程可以这样理解:从上向下逐一对if后的表达式进行检测。当某一个表达式的值为非0时,就执行与此有关子句中的语句,阶梯形中的其余部分就被越过去。如果所有表达式的值都为0,则执行最后的else子句;此时,如果程序中最内层的if语句没有else子句,即没有最后的那个else子句,那么将不进行任何操作。

补充与扩展

【if语句的执行过程】

128 首先计算紧跟在if后面一对圆括号中的表达式的值,如果表达式的值为非0(“真”),则执行其后的if子句,然后去执行if语句后的下一个语句。如果表达式的值为0(“假”),则跳过if子句,直接执行if语句后的下一个语句。

流程图如图6-1所示。

假(0)

表达式

真(非0)

语句

图6-1 if语句的执行过程

下面我们举例说明if语句的执行过程。

例如:输入两个数,分别放入x和y中,若两数不相等,则输出其中的大数;若两数相等,则输出字符串“x==y”和x的值。

程序6-1:P6-1.c

main()

{ int x,y;

printf("Enter x&y:\n");

scanf("%d,%d",&x,&y);

if(x>y)

printf("x=%d\n",x);

if(y>x)

printf("y=%d\n",y);

if(x==y)

printf("x==y,x=%d\n",x);

}

本题是一个应用if语句的简单程序,其执行过程如下所示。

1.prinif语句在屏幕上显示了提示信息:Enter x&y:之后,scanf语句等待用户给变量x、y输入两个整数,然后把输入的两个数显示在屏幕上。

2.执行第5行的if语句。计算表达式x>y的值。如果x大于y,表达式的值为1,则调用printf函数输出x的值;否则,如果x小于或等于y,表达式的值为0,则跳过此输出

语句继续执行步骤3。

3.执行第6行的if语句。计算表达式y>x的值;如果y大于x,则调用printf函数输出y的值;否则跳过此输出语句继续执行步骤4。

4.执行第7行的if语句。计算表达式x==y的值;如果x等于y,则调用printf函数输出x的值;否则跳过此输出语句继续执行步骤5。

5.程序结束。

【if-else语句的执行过程】

首先计算紧跟在if后面一对圆括号内表达式的值。如果表达式的值为非0,执行if 子句(即语句1),然后跳过else子句(语句2),去执行if语句后的下一条语句;如果表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。

流程图如图6-2所示。

真表达式假

语句1 语句2

图6-2 if-else语句的执行过程

例如:输入两个不等的整数分别给x和y,输出其中的大数。

程序6-2:P6-2.c

main()

{ int x,y;

printf("Enter x&y:");

scanf("%d,%d",&x,&y);

printf(“x,y:%d,%d\n",x,y);

if(x>y)

printf("max=x=%d\n",x);

else

printf("max=y=%d\n",y);

printf("**end**");

}

当执行以上程序时,若把5输入给变量x,把3输入给变量y;则if后表达式x>y的值为1,因此,将执行if子句,输出x的值;然后去调用最后一行中的printf函数,输出字符串:**end**。

如果给x输入3,给y输人5,这时if语句中表达式x>y的值为0,因此将跳过if子句,直接执行else分支中的else子句,输出y的值;然后执行最后一行中的语句,输出字符串:**end**。

【if语句的补充说明】

1.if后面圆括号中的表达式,可以是任意合法的C语言表达式(如:逻辑表达式、关系表达式、算术表达式、赋值表达式等),也可以是任意类型的数据(如:整型、实型、字符型、指针型等)。

2.无论是否有else子句,if子句中如果只有一条语句,则此语句后的分号不能省略。如:

if(x!=0)

printf("%f",x);

130else

printf("%f",y);

【switch语句的执行过程】

当执行switch语句时,首先计算紧跟其后一对括号中的表达式的值,然后在switch 语句体内寻找与该值吻合的case标号,如果有与该值相等的标号,则执行该标号后开始的各语句,包括在其后的所有case和default中的语句,直到switch语句体结束。如果没有与该值相等的标号,并且存在default标号,则从default标号后的语句开始执行,直到switch语句体结束,如果没有与该值相等的标号,且不存在default标号,则跳过switch 语句体,什么也不做。

例如:用switch语句编写程序,根据输入的学生成绩,给出相应的等级。90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。

程序如下:

程序6-3:P6-3.c

main()

{ int grade;

printf("Enter a mark: ");

scanf("%d",&grade); /*grade中存放学生的成绩*/

printf("grade=%d:",grade);

switch(grade/10)

{

case 10:

case 9: printf("A\n");

case 8: printf("B\n");

case 7: printf("C\n");

case 6: printf("D\n");

default: printf("E\n");

}

}

当执行以上程序输入了一个85分的学生成绩后,接着执行switch语句,首先计算switch后一对括号中的表达式:85/10,它的值为8;然后寻找与8吻合的case 8分支,开始执行其后的各语句。程序的输出结果如下所示

grade=85:B

C

D

E

在输出了与85分相关的B之后,又同时输出了与85分毫不相关的等级C、D、E,这显然不符合原意。为了改变这种多余输出的情况,switch语句常常需要与break语句配合使用。【switch语句中的break语句】

break语句也称间断语句。可以在case之后的语句最后加上break语句,每当执行到 132break语句时,立即跳出switch语句体。switch语句通常总是和break语句联合使用,使得switch语句真正起到分支的作用。

现用break语句修改的程序6-3,如下:

程序6-4:P6-4.c

main()

{ int grade;

printf("Enter a mark: ");

scanf("%d",&grade); /*grade中存放学生的成绩*/

printf("grade=%d:",grade);

switch(grade/10)

{

case 10;

case 9: printf("A\n"); break;

case 8: printf("B\n"); break;

case 7: printf("C\n"); break;

case 6: printf("D\n"); break;

default: printf("E\n");

}

}

流程图如图6-3所示。

grade

90-100 80-89 70-79 60-69 其他

输出输出输出输出输出

A B C D E

图6-3 程序流程图

程序执行过程如下所示。

1.当给grade输入100时,switch后一对括号中的表达式:grade/10的值为10。因此选择case 10分支,因为没有遇到break语句,所以继续执行case 9分支,在输出:grade=100:A之后,遇break语句,执行break语句,退出switch语句体。由此可见,成绩90~100分,执行的是同一分支。

2.当输入成绩为45时,switch后一对括号中表达式的值为4,将选择default分支,在输出grade=45:E之后,退出switch语句体。

3.当输入成绩为85时,switch后一对括号中表达式的值为8,因此选择case 8分支, 133在输出grade=85:B之后,执行break语句,退出switch语句体。

典型例题

【例题6-1 基本if语句】

题干

对下述程序,()是正确的判断。

程序6-5:P6-5.c

#include

main()

{ int x,y;

scanf("%d,%d",&x,&y);

if(x>y)

x=y;y=x;

else

x++;y++;

printf("%d,%d",x,y);

}

A)有语法错误,不能通过编译

B)若输入数据3和4,则输出4和5

C)若输入数据4和3,则输出3和4

D)若输入数据4和3,则输出4和4

解题方法

不管if语句中的条件为真或假,只能执行一个语句,而程序中的x=y; y=x; 违反了这一点,故选项A是正确的判断。改正的办法是将多个语句合成一个复合语句。即在x=y;y=x;的基础上加上花括号{x=y; y=x;}。

知识点分析

if语句可称为条件语句或分支语句,其基本形式只有两种,即含else与不含else子句的两种情况,前面我们已经有相关的介绍了,在这里就不再重述了。

if语句中else与if的搭配关系:复杂的if语句中可能有许多个if和else,其配对的原则是:一个else应与距离最近且没有与其他else配对的if搭配使用。

这里再指出一点:if语句的结构简单,试题通常集中在格式、错误和不良编程习惯上。例如,可能使用了如下形式的if语句:

if(x>0);

y=x;

这里,if之后的分号是多余的。也有在程序段中漏掉if或else部分的语句后面的分号

134的情况。

答案

A

难度提示

简单。这道题主要考查应试者关于if语句的了解情况。在本题中,命题者利用考生在答题时紧张的情绪,出了一个比较隐蔽的错误,只要考生作过相关的题目,并且在考试的时候仔细审题,这种试题应该是必得的。

【例题6-2 if语句1】

题干

以下程序的输出为()。

int a,b,c;

a=10;

b=50;

c=30;

if(a>b) a=b,

b=c;

c=a;

printf("a=%d,b=%d,c=%d",a,b,c);

A)a=10,b=50,c=10 B)a=10,b=30,c=10

C)a=50,b=30,c=10 D)a=50,b=30,c=50

解题方法

在回答此题时应先注意到“a=b, b=c;”是一个语句,将原程序按正常格式改写后就一目了然了。

int a,b,c;

a=10;b=50;c=30;

if(a>b)

a=b,b=c;

c=a;

printf("a=%d,b=%d,c=%d",a,b,c);

可见,因a>b为假,if语句什么都不做。再注意到语句“c=a;”与if语句无关,总要执行。所以,程序执行后,a,b值不变,c值为10。

知识点分析

在这题中主要用到了if语句和逗号表达式的相关内容。

答案

A

135难度提示

简单。这道题主要考查应试者关于if语句和逗号表达式的了解情况。

136【例题6-3 if语句2】

题干

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

程序6-6:P6-6.c

#include

main( )

{ int x=1000,a=10,b=20;

int v1=5,v2=0;

if(a

if(b!=15)

if(!v1)

x=1;

else

if(v2) x=10;

x=-1;

printf("%d",x);

}

A)100 B)?1 C)1 D)10

解题方法

本题与上一题类似,只要注意到语句“x= -1;”是无条件执行的,不必考虑前面那些复杂的if结构。这些语句都只是“幌子”。

知识点分析

相关的if语句知识。

答案

B

难度提示

简单。这道题主要考查应试者的审题仔细程度。

【例题6-4 if语句中的条件表达式】

题干

对下述程序段正确的描述是()。

程序6-7:P6-7.c

#include

main()

{ int x=0,y=0,z=0;

137 if(x=y+z)

printf("***");

else

printf("###");

}

A)有语法错误,不能通过编译 B)输出***

C)可以编译,但不能通过连接,因而不能运行 D)输出###

解题方法

在C语言中,比较容易用混的运算是“=”和“==”,尤其在if语句中更是如此。本题中,y+z值为0。因此,表达式x=y+z使变量x的值为0,此赋值表达式的值也为0,逻辑含义为假。所以,程序应执行if结构中else之后的语句,输出为“###”。

知识点分析

if语句,赋值运算 = 与关系运算 == 的差别。在这里再指出一点:试题中经常出现一些混用的相近运算,而其代码又很简单,应多加注意。这样的运算主要包括 = 和 ==,&&和 & 及 || 和 |。

答案

D

难度提示

简单。只要读者作了相关的题目之后,这类题不应该是丢分的题。

【例题6-5 switch语句的基本形式】

题干

下述程序段中,正确的是()。

A)int x=0,y=10; B)int x=0,y;

switch(x) switch(x)

{ case y: x++;break; { case x>0: y=1;break;

case y+2: x+=10;break; case x==0: y=0;break;

case y-1: x=-7;break; case x<0: y=-1;break;

} }

C)#define y 20 D)int x=0,y;

int x=10,z; switch(x)

switch(x) { case 3:

{ case 12: z=3;break; case –1: y=2;break;

case y+1: x+=10;break; case 2: break;

case y-8:y-=3;break; }

}

解题方法

在本题中没有具体运算内容,本题只能考核switch语句的语法现象。前三个选项中各出现了一个错误。在选项A中,case后的表达式含有变量,但C语言要求必须是常量或常量表达式;在选项B中,case之后是表达式,一方面其中含有变量,更主要的是对switch

结构的执行机理不理解:执行该语句时,C语言只是将switch后面的表达式与case后的常量做值比较,因此,case之后一般不能使用关系、逻辑等表达式;选项C中的错误是在两个case后的常量都是12(12和y-8),而C语言要求case后的常量不能重复。

尽管选项D)中的switch语句有点怪,但从语法角度看是正确的。如果x的值为3或?1,程序都将执行y=2并结束,子句“case 2”没有实际用处,可以删除。

知识点分析

switch语句的基本结构常识,在前面我们已经有相关的介绍了。

答案

D

难度提示

简单。只要应试者真正掌握了switch语句的结构,这类题目很容易就可以解决的。【例题6-6 switch语句的嵌套】

题干

下述程序的输出结果是()。

程序6-8:P6-8.c

#include

main()

{ int x=1,y=0,z=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);

}

A)a=1,b=0 B)a=2,b=1 C)a=1,b=1 D)a=2,b=2 解题方法

139 这是“嵌套”形式的switch语句,因为break语句对switch结构影响较大,因此,分析此程序时应清楚地意识到第一个case后没有break语句。

程序执行时,x=1,执行内嵌的switch语句,因y=0,计算a++,使变量a的值为1并终止内层switch结构,回到外层。程序继续执行“case 2:”后面的语句“a++;b++;”,这使变量a,b的值分别为2和1,外层switch语句结束。

知识点分析

嵌套形式的switch语句:switch语句可以嵌套,且任何switch结构中的break语句只对该层switch语句起作用。

switch语句何时终止:当x与某一个case后的表达式值相等时,程序执行其后的语句序列,直到遇到break语句或者switch结构末尾终止。

答案

B

难度提示

中级。这道题不是单纯地考查switch语句,它对switch进行了扩展,加入了嵌套的结构,所以增加了难度。

【例题6-7 switch语句填空题】

题干

某物品原有价值为p,由于使用使其价值降低,价值的折扣率根据时间t(月数)确定如下:

t<3, 无折扣

3

6

12

t>21, 10%折扣

下述程序根据输入的时间和原有价值计算物品的现有价值,请填空。

程序6-9:P6-9.c

#include

main()

{ int t,d;

float p;

scanf("%d,%f",&t,&p);

switch(__(1)__)

{ case 0: =0;

break;

case 1: d=2;

break;

140 case 2:

case 3: d=5;

break;

case 4:

case 5:

csee 6: d=8;

break;

default: =10;

}

printf("Price=%f",p*(1-__(2)__));

}

解题方法

本题考查switch语句的用法,说明如何将区间表示的数据转换成若干个整数表示。此外,也说明了在进行除法运算时应注意参加运算的数据类型问题。

观察题目给的已知条件t所描述的数据区间,容易发现,区间的边界都是3的倍数,因此,使用表达式t/3即可将区间转化为整数(注意t是整数)。当t处于题目所给定的区间时,表达式t/3的值分别为0(t<3);1(3

(t>21)。与程序相比较即知,(1)处应填入t/3。

对于空白处(2),显然是计算折扣的百分比表达式,应填入d/100.0,或者(float)/100等,总之,至少d和100应有一个是浮点数,因为直接使用表达式d/100的值为0。

知识点分析

switch语句的结构。

区间到整数的转换。

答案

(1)t/3 (2)d/100.0

难度提示

中级。这道题不是单纯地考查switch语句,还插入了相关的转换机制。

本章练习

【选择题】

1.下述语句中,()中的if语句语法是错误的。

A)if(x>y);

B)if(x==y) x+=y;

C)if(x!=y) scanf("%d",&x) else scanf("%d",&y);

D)if(x

2.下述程序的输出结果是()。

程序6-10:P6-10.c

#include

main()

{ int a=0,b=0,c=0;

if(++a>0||++b>0)

++c;

printf("\na=%d,b=%d,c=%d",a,b,c);

}

A)a=0,b=0,c=0 B)a=1,b=1,c=1

C)a=1,b=0,c=1 D)a=0,b=1,c=1

3.阅读下述程序段:

y=-1;

if(x!=0)

if(x>0)

y=1;

else

y=0;

该程序段所描述的数学关系是()。

? x <0

1 x <0

A) 0 x =0 B)

0 x =0

1 x >0 ?1 x >0

0 x <0 ? x <0

C) D)

?1 x =0 1 x =0

1 x >0 0 x >0

4.若执行下述程序时,从键盘输入的数据是3和4,则程序的输出结果是()。程序6-11:P6-11.c

#include

void main()

{ int a,b,s;

scanf("%d%d",&a,&b);

s=a;

if(a

s=b;

s=s*s;

printf("%d",s);

}

A)14 B)16

142 C)20 D)20

5.请读程序:

程序6-12:P6-12.c

#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;

}

printf("a=%d,b=%d\n",a,b);

}

上面程序的输出结果是()。

A)a=2,b=1 B)a=1,b=1

C)a=1,b=0 D)a=2,b=2

6.若执行下面的程序时从键盘上输入5,则输出是()。

程序6-13:P6-13.c

main()

{ int x;

scanf("%d",&x);

if(x++>5)

printf("%d\n",x);

else

printf("%d\n",x--);

}

A)7 B)6

C)5 D)4

7.两次运行上题中的程序,并且从键盘上分别输入6和4,则输出结果是()。 A)7和5 B)6和3

C)7和4 D)6和4

8.若有以下定义:

float x;

int a,b;

则正确的switch语句是()。

143 A)switch(x) B) switch(x)

{ case 1.0: printf("*\n"); { case 1,2: printf("*\n");

case 2.0: printf("**\n"); case 3: printf("**\n");

} }

C)switch(a+b) D) switch(a+b);

{ case 1: printf("*\n"); { case 1: printf("*\n");

case 1+2: printf("**\n"); case 2: printf("**\n");

} }

9.假定所有变量均已正确说明,下列程序段运行后x的值是()。

a=b=c=0;

x=35;

if(!a)

x--;

else if(b);

if(c)

x=3;

else x=4;

A)34 B)4

C)35 D)3

10.与y=(x>0?1:x<0?-1:0);的功能相同的if语句是()。

A)if(x>0) y=1; B)if(x)

else if(x<0) y=-1; if(x>0) y=1;

else y=0; else if(x<0) y=-1;

else y=0;

C)y=-1; D)y=0;

if(x) if(x>=0)

if(x>0) y=1; if(x>0) y=1;

else if(x==0) y=0; else y=-1;

else y=-1;

【填空题】

1.以下两条if语句可合并成一条if语句为______。

if(a<=b) x=1;

else y=2;

if(a>b) printf("****y=%d\n",y);

else printf("####x=%d\n",x);

2.当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为______。

if(a

if(c

144 else

if(a

if(b

else x=3;

else x=6;

else x=7;

3.以下程序的输出结果是______。

程序6-14:P6-14.c

main()

{ int a=-1,b=2,k;

if((++a<0)&&!(b--<=0))

printf("%d%d\n",a,b);

else

printf("%d%d\n",b,a);

}

4.在执行下面程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是________。

程序6-15:P6-15.c

main()

{ int s,t,a,b;

scanf("%d,%d",&a,&b);

s=1;t=1;

if(a>0) s=s+1;

if(a>b) t=s+1;

else if(a==b) t=5;

else t=2*s;

printf("t=%d\n",t);

}

【本章小结表】

1.你是否按计划预定时间完成了本章复习?是□ 否□

2.本章复习的效果好吗?不好□ 还行□ 好□3.本章疑难问题汇总:

4.对自己说点什么吧:

第6章答案

【选择题】

1.C 2.C 3.C 4.B 5.A 6.B 7.A 8.C 9.A 10.A 【填空题】

1.if(a<=B){x=1;printf("####x=%d\n",x);} else {y=2;printf("****y=%d\n",y);}

2.2

3.20

4.a>0&&a

C语言试卷2及答案

扬州大学试题纸 系课程 C语言程序设计(A)卷2002—2003学年第2学期 班级_________学号________姓名__________得分___________ 一、选择题(每题分,共30分): 1、已知:char a; int b; float c; double d; 则执行语句:c=a+b+c+d; 后,变量c的类型为。 A. char B. int C. float D. double 2、已有定义int x; float y; 且执行scanf(“%2d%f”,&x,&y);语句时, 从第一列开始输入数据12345 67<回车>,则y的值是。 A. 无定值 B. 345.00000 C. D. 3、设有以下程序段 int x=0; s=0; while (!x!=0) s+=++x; printf(“%d”,s); 则。 A. 运行程序段后输出0 B. 运行程序段后输出1 C. 程序段中的控制表达式是非法的 D. 程序段执行无限次 4、若i为整型变量,则以下循环执行次数是。 for(i=2; i==0;) printf(“%d”, i--); A. 无限次 B. 2次 C. 1次次 5、假设char ch=’a’, *p=&c h; ,以下语句中,有语法错误的是 . A. (*p)++; B. ch+=—‘a’+’A’; C. toupper(ch)=ch; D. ch++; 6、若说明:char *language[ ]={“VFP”,”C”,”VB”,”VC”,”JAVA”}; 则language[2]的值是。 A. 一个字符 B. 一个地址 C. 一个字符串 D. 一个不定值 7、C语言程序中,当调用函数时。 A. 实参和虚参可以共用存储单元 B. 实参和虚参各占一个独立的存储单元 C. 可以由用户指定是否共用存储单元 D. 由计算机系统自动确定是否共用存储单元 8、在程序中要使用语句:printf(“%s\n”, STRING); 输出提示信息:“OK! ”(包括双引号),则应使用宏定义语句。 A. #define STRING “OK!” B. #define STRING “”OK!”” C. #define STRING \”OK!\” D.以上三个答案都是错误的 9、数组和链表都可以用于存储一组数据,以下说法不正确的是_____________。 A. 数组占用连续的一块存储区域,链表可能占用若干不连续的存储区域 B. 数组和链表所占用的存储区域均不能在程序运行期间动态分配 C. 数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取 D. 数组的长度是固定的,链表的长度是不固定的。 10、已知语句FIL E *fp; char ch= ‘c’;fp=fopen(“”,”w”);如果需要将ch的值保存到一个磁盘文件中,

C语言试卷及答案

《C语言程序设计》考试试卷(答案) 一、填空题(每小空1分,共10分) 1.C语言程序的三种基本结构是顺序结构、选择结构、循环结构。 2.一个C程序有且仅有一个main( ) 函数。 3.C语言描述“x和y都大于或等于z”的表达式是x>=z && y>=z。 4.C语言可以用来实现循环的结构化语句是while、do while、for。 5.数组名表示数组在内存的首地址。 6.int a=3,*p=&a;*p+2的值是5。 二、单项选择题(每小题2分,共70分) 1.__B___是C语言合法的常量。 (A).45(B)078 (C)25.6e3.4 (D)‘xy’2.一个程序的执行是从 A 。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 (C)本程序的main函数开始,到本程序文件的最后一个函数结束。 (D)本程序文件的第一个函数开始,到main函数结束。 3.以下叙述正确的是 C 。 (A)在C程序中,main函数必须位于程序的最前面。 (B)C程序每行中只能写一条语句。 (C)C语言本是没有输入输出语句。 (D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 4.以下叙述不正确的是 D 。 (A)逗号运算符的运算级最低。 (B)ABC和abc是两个不同的变量。 (C)若a和b类型相同,在执行a=b后,b的自身值不变。 (D)‘a’和“a”是完全等价的常量。 5.int x=3,y=2;则表达式x+=x*=y+8的值为 C 。 (A)28 (B)30 (C)60(D)17 6.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为 B 。 (A)2.7 (B)3.7(C)4.7 (D)4.03 7.执行下面两个语句后,输出的结果为__D___。 char c1=98; printf(“%d %c”,c1,c1-32); (A)97 66 (B)98 b (C)b 66 (D)98 B 8.执行下面语句后的结果为 C 。 y=10;x=y++; (A)x=10,y=10 (B)x=11,y=11 (C)x=10,y=11(D)x=11,y=10 9.Char w;int x;float y;double z;则表达式w*x+z-y值的数据类型是A 。 (A)double (B)char (C)int (D)float 10.C语言中要求操作数必须是整数的运算符是 B 。

c语言试卷第二套

以下叙述中正确的是(D)。 A.C语言中的函数不可以单独进行编译 B.C语言的源程序不必通过编译就可以直接运行 C.C源程序经编译形成的二进制代码可以直接运行 D.C语言中的每条可执行语句最终都将被转换成二进制的机器指令 若有说明语句:char c='\72';则变量c(D)。 A.说明不合法,c的值不确定 B.包含2个字符 C.包含3个字符 D.包含1个字符 定义字符变量c1的值是'A',c2的值是'D'. 执行语句printf("%d,%d",c1,c2-2);后,输出结果是(A)。 A.65,66 B.65,68 C.A,68 D.A,B 若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为"假",则以下不能满足要求的表达式是(D)。 A.A%2==1 B.A%2 C.!(A%2==0) D.!(A%2) 为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定: else子句总是与(A)配对。 A.其之前最近的if B.其之后最近的if C.同一行上的if D.缩排位置相同的if 下面程序段运行的结果是(A). x=-1; do{ x=x*x; }while (!x); A.循环执行一次 B.有语法错误 C.死循环 D.循环执行两次 以下正确的描述是(A). A.只能在循环体内和switch语句内使用break语句 B.continue语句的作用是终止整个循环的执行 C.从多层嵌套的外层循环中退出时,只能使用goto语句

D.在循环体内使用break和continue语句的作用相同 以下不能正确定义二维数组的选项是(A)。 A.int a[2][]={{1,2},{3,4}}; B.int a[2][2]={{1},2,3}; C.int a[2][2]={{1},{2}}; D.int a[][2]={1,2,3,4}; char a[10];不能将字符串"abc"存储在数组中的是(B)。 A.int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; B.a="abc"; C.strcpy(a,"abc"); D.a[0]=0;strcat(a,"abc"); 在C语言中,引用数组元素时,其数组下标的数据类型允许是(B)。 A.整型常量 B.整型常量或整型表达式 C.整型表达式 D.任何类型的表达式 在定义全局变量和局部静态变量的同时赋值,变量的初始化在(C)时确定的. A.运行 B.编辑 C.编译 D.调试 以下不正确的说法是:C语言规定(C)。 A.实参可以是常量,变量或表达式 B.实参可以为任何类型 C.形参可以是常量,变量或表达式 D.形参应与其对应的实参类型一致 C语言程序中必须有的函数是(B)。 A.#include "stdio.h" B.main C.printf D.scanf 在"文件包含"的预处理中,被包含的文件应是(A). A.文本文件 B.可执行文件 C.目标文件 D.二进制文件 若有说明:int *p,m=5,n;以下正确的程序段是(D)。 A.scanf("%d",&n);*p=n; B.p=&n;scanf("%d",*p)

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是( D )。 A. 软件是一种逻辑实体,具有抽象性 B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显着特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于( D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。

上海理工大学 C语言 第二套试题

注意: 1. 本练习时间为1小时,如有多余时间请完成实验5 2. 请单号的机器完成A 卷测试题,双号机器完成B 卷测试题 3. 以自己学号为文件夹名,并上传1.cpp,2.cpp,3.cpp 3个源代码文件 A 卷测试题目(机器号为单号学生完成) 1. 输入两个值分别为a,b,请输出ab b 42 的值, 程序保存为1.cpp. 2. 编写程序,判断输入的两个小数是否相互等, 程序保存为2.cpp. 3.编写程序, [问题的描述] 百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现有100元钱要买100只鸡,列出所有可能的购鸡方案。 程序保存为3.cpp. B 卷测试题目(机器号为双号学生完成) 1. 编写程序 [问题的描述] 有2个变量,分别存入2个不同的整数,有人试图将这2个变量中的值互换。 [案例] 原始状态为:x=5 y=6 互换后的状态为:y=6 x=5 程序只允许定义两个变量,程序保存为1.cpp.

2.编写程序,连续输入10个值,请输出输入值的最大值和最小值, 程序保存为2.cpp. 3.[问题的描述] 打印出下图所示的杨辉三角形 两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方=x的平方+2xy+y的平方,这样系数就是1,2,1这就是杨辉三角的其中一行,立方,四次方,运算的结果看看各项的系数,这就是杨辉三角,也叫贾宪三角,2项式乘方展开式的系数规律。如图,在贾宪三角中,第3行的第三个数恰好对应着两数和的平方公式依次类推,杨辉三角是一个由数字排列成的三角形数表,一般形式如下图所示。 [案例] 输出10行的图

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C语言程序设计模拟试题2(附答案)new

《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是______ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是________。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( ) { if (x>amax) amax=x; else if (x

} 4.设n 是整型变量,且已具有某正整数值。根据下述数学式 1 1 14131312121+? ++?+?+n n 求s 的值并输出。 可编写如下之程序段实现之。请填空。 int k; double s,d; s=0.0; d=1.0; K=0; do { s=s+d; ___ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是____ ____。 #inclued main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是_________ ________。 #include main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)

C语言试卷第2套 含答案

第二套试题 一、判断题 第1题:C语言允许直接访问物理地址。参考答案:对第2题:在标准C语言中,共用体变量中的各成员的首地址是不一样的。参考答案:错第3题:全局变量的作用域一定比局部变量的作用域范围大参考答案:错 第4题:C语言的源程序不必通过编译就可以直接运行参考答案:错 第5题:指针变量与变量的指针都与地址有关参考答案:对 第6题:C语言的函数可以嵌套定义参考答案:错 第7题:局部变量的作用域是当前文件。参考答案:错 第8题:在标准C语言中,宏替换是程序运行时完成的。参考答案:错 第9题:在标准C中,“=”是判断两个数是否相等。参考答案:错 第10题:C语言编译时不检查语法参考答案:错 二、选择题(请选择正确的选项) 第1题:以下程序的输出结果是 main( ) { int n=4; while(n--) printf("%d ",--n); } 参考答案:A A、2 0 B、3 1 C、3 2 1 D、2 1 0 第2题:数组定义为int a[3][2]={1, 2, 3, 4, 5, 6},数组元素_____的值为6。 参考答案:B A、a[3][2] B、a[2][1] C、a[1][2] D、a[2][3] 第3题:字符串指针变量中存入的是 参考答案:A A、字符串的首地址 B、字符串 C、第一个字符 D、字符串变量 第4题:下列表达式的值为0的是() 参考答案:C A、3﹪5 B、3/5.0 C、3/5 D、3<5 第5题:C语言中以追加方式打开一个文件应选择_______________参数参考答案:D A、“r” B、“w” C、“rb” D、“a” 第6题:C语言中while和do-while循环的主要区别是 参考答案:A A、do-while循环体至少无条件执行一次 B、while的循环控制条件比do-while循环控制条件严格 C、do-while循环允许从外部转到循环体内 D、do-while循环体不能是复合语句

c语言试题及答案 (2)

C语言部分 一、选择题(每小题2分,共10分) (下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。 1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D, E ) A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。 B、*(a[1]+1)的值为2 为8,故B不正确 C、**(a+1)+2的值为8 这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确; D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。 E、a[1][2]的值为10 它是指第二行的第三个元素,为10,正确 2、对函数的正确使用方法描述( A,C,D )。 A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组 B、实参数组元素和形参数组元素类型可以不一致 C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度 E、数组名做参数属于值传递 3、对静态变量的正确描述( A,B,D,E ) A、静态局部变量在静态存储区内分配单元() B、静态外部变量可以赋初值,也可以不赋初值 C、静态外部变量的作用与外部变量相同 D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。 E、静态局部变量只赋一次初值 4、下列描述正确的是( A ,C)。 A、由main 函数及其参数argc和* argv[]可以实现命令行方式 B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中 //先写缓冲区数据到文件中,再释放文件指针 C、字符数组并不要求它的最后一个字符是‘\0’ //是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。 D、‘A’和“A”都是字符串常量 E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7 5、在缓冲文件系统中用于读写的函数有( A,B,D ) A、putchar () B、fread() C、rewind () D、purw() E、fseek() 二、程序阅读,并给出运行结果(共10分,每题5分)。 (1)main() { unsigned a,b,x int n; a=0x763 输出结果:

C语言全部题目及答案

C语言全部题目及答案 SANY GROUP system office room 【SANYUA16H-

C语言全部题目及答案 Exercise 1: Programming Environment and Basic Input/Output 1.Write a program that prints “This is my first program!” on the screen. (a)Save this program onto your own disk with the name of e2-1a; (b)Run this program without opening Turbo C; (c)Modify this program to print “This is my second program!”, then save it as e2-1b. Please do not overwrite the first program. 2.Write a program that prints the number 1 to 4 on the same line. Write the program using the following methods: (a)Using four “printf” statements. (b)Using one “printf” statement with no conversion specifier(i.e. no ‘%’). (c)Using one “printf” statement with four conversion specifiers 3.(a) Write a program that calculates and displays the number of minutes in 15 days. (b) Write a program that calculates and displays how many hours 180 minutes equal to. (c) (Optional) How about 174 minutes?

c语言模拟题目第十七套

第十七套 设a=12,且a定义为整型变量。执行语句a+=a-=a*=a;后a的值为()。 A、0 B、144 C、132 D、12 【参考答案】错误 A 【学生答案】 [未答此题] 设变量定义为"int a, b;",执行下列语句时,输入( ),则a和b的值都是10. scanf("a=%d, b=%d",&a, &b); A、a=10, b=10 B、a=10 b=10 C、10, 10 D、10 10 【参考答案】错误 A 【学生答案】 [未答此题] main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d",a,b); }该程序的输出结果是( ) A、a=1,b=1 B、a=1,b=0 C、a=2,b=2 D、a=2,b=1 【参考答案】错误 D 【学生答案】 [未答此题] 执行下列语句后的输出为()。

int j=-1; if(j<=1) printf("****\n"); else printf("%%%%\n"); A、%%%% B、**** C、有错,执行不正确 D、%%%%c 【参考答案】错误 B 【学生答案】 [未答此题] 以下正确的描述是( ). A、只能在循环体内和switch语句内使用break语句 B、continue语句的作用是终止整个循环的执行 C、从多层嵌套的外层循环中退出时,只能使用goto语句 D、在循环体内使用break和continue语句的作用相同 【参考答案】错误 A 【学生答案】 [未答此题] 设有如下程序段: int k=10; while(k==0) k--; 则下述说明中正确的是( ). A、循环体一次也不执行 B、循环体执行一次 C、死循环 D、循环体执行10次 【参考答案】错误 A 【学生答案】 [未答此题] 对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。 A、将5个初值依次赋给a[6]至a[10] B、将5个初值依次赋给a[0]至a[4] C、因为数组长度与初值的个数不相同,所以此语句不正确 D、将5个初值依次赋给a[1]至a[5] 【参考答案】错误 B

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由

主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言习题及解答-2-1

C语言概述 一.选择题 1.下列选项中,合法的C语言关键字是 A) VAR B) cher C) integer D) default 2.请选出可用作C语言用户标识符的一组标识符____ A) Void define WORD B) a3_b3 _123 IF C) For -abc Case D) 2a Do sizeof 3.C语言提供的合法的数据类型关键字是____ A) Double B) short C) integer D) Char 4.在下列字符中,不可用作C语言标识符的是 A) water B) price C) a>b D) a12 5.一下叙述正确的是 A) C语言比其他高级高级 B) C语言可以不用编译就能被计算机识别执行 C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D) C语言出现的最晚、具有其他语言的一切优点 6.在一个C语言程序中 A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现 C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置 7.下列符号不属于C语言保留字的是 A) if B) then C) static D) for 8.下列说法正确的是 A) 主函数名main是由程序设计人员按照“标识符”的命名规则来选取的 B) 分号和回车符都可以作为语句的结束符号 C) 在程序清单的任何地方都可以插入一个或多个空格符号 D) 程序的执行总是从主函数main()开始的 参考答案 1.D 2.B 3.B 4.C 5.C 6.B 7.B 8.D 数据类型与表达式 一.选择题 1. 下列字符序列中,不可用作C语言标识符的是()。 A)abc123 B)no.1 C)_123_ D)_ok 2. 正确的C语言标识符是()。 A)_buy_2 B)2_buy C)?_buy D)buy?

c语言模拟题目第二十套

第二十套 下列程序段的输出结果为()。 float x=213.82631; printf("%3d",(int)x); A、213.82 B、213.83 C、213 D、3.8 【参考答案】错误 C 【学生答案】 [未答此题] a,b为整型变量,二者均不为0,以下关系表达式中恒成立的是()。 A、a/b*b+a%b==a B、a/b*b==a C、a*b/a*b==1 D、a/b*b/a==1 【参考答案】错误 A 【学生答案】 [未答此题] int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为()。 A、3 B、2 C、1 D、不一定 【参考答案】错误 C 【学生答案】 [未答此题] C语言的switch语句中case后( )。 A、可为任何量或表达式 B、可为常量或表达式或有确定值的变量及表达式 C、只能为常量或常量表达式 D、只能为常量 【参考答案】错误 C 【学生答案】 [未答此题]

设j和k都是int类型,则下面的for循环语句( )。 for(j=0,k=0;j<=9&&k!=876;j++) scanf("%d",&k); A、最多执行9次 B、是无限循环 C、循环体一次也不执行 D、最多执行10次 【参考答案】错误 D 【学生答案】 [未答此题] 以下程序中,while循环的循环次数是( ). main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } } A、1 B、6 C、死循环,不能确定次数 D、4 【参考答案】错误 C 【学生答案】 [未答此题] 以下不能对二维数组a进行正确初始化的语句是()。 A、int a[2][3]={{1,2},{3,4},{5,6}}; B、int a[][3]={{1,2},{0}}; C、int a[2][3]={0}; D、int a[][3]={1,2,3,4,5,6}; 【参考答案】错误 A 【学生答案】 [未答此题] 下面函数调用语句中,fun含有实参的个数为( ). fun((x,y),(x+y,z,x/y));

C语言考试题库及答案,推荐文档(2)

C 语言理论上机考试选择题部分(共200 题) 1、下面程序的输出是___D ______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D _______ A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是_______ A ____ . A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9 的值是________ D ___ . A) true B) 非零值C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是 B . A) Double B) short C) integer D) Char 6、字符(char) 型数据在微机内存中的存储形式是 __D__. A) 反码B) 补码C) EBCDIC 码D) ASCII 码 7、 C 语言程序的基本单位是 ____ C _____ . A) 程序行B) 语句C) 函数D) 字符 &设int a=12,则执行完语句a+=a-=a*a后,a的值是 ___ D ___ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10 、下面程序的输出是____ B _____ . {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11 、下面程序的输出的是_____ C ___ . #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是_____ A ____ . #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0 的关 系,则能正确表示这一关系的表达式为_______ D__. A) a<>0 B) !a C) a=0 D) a 14、以下程序的输出结果是____ D _____. #include void main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 15、设有如下定义: int x=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是____ D ____ . A) 1 B) 0 C) 4 D) 3 16、为表示关系x > y > z,应使用C语言表达式 ___A___. 17、 C 语言中非空的基本数据类型包括_____ B ___ . A) 整型,实型,逻辑型B) 整型,实型,字符型 C) 整型,字符型,逻辑型 D) 整型,实型,逻辑型,字符型 #include void main() A) (x>=y)&&(y>=z) C) (x>=y>=z) B) (x>=y)AND(y>=z) D) (x>=y) & (y>=z)

C语言期末考试题含答案

C语言期末考试题含答 案 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是( ) A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中( ) A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是( ) A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是( ) A )x1=%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:float a=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(21 的计算结果不. 相符的是( ) A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是( ) A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue

7.在while(!x)语句中的!x与下面条件表达式等价的是() A) x!=0 B) x==1 C) x!=1 D) x==0 8、有以下程序: #include <> void main(){ int i=1,j=1,k=2; if( (j++||k++)&&i++ ) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2B)2,2,1C)2,2,2D)2,2,3 9、有以下程序: #include <> void main(){ int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: void fun(int n,double x){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是() A)fun(int y,double m); B)k=fun(10,; C)fun(x,n); D)void fun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

c语言模拟题目第三套

第三套 若x,i,j,k 都是int型变量,则计算x=(i=4,j=16,k=32)后,x的值为:( ). A、52 B、16 C、4 D、32 【参考答案】错误 D 【学生答案】 [未答此题] 执行以下程序段后,输出结果和a的值是()。 int a=10; printf("%d",a++); A、11 和 10 B、10 和 11 C、11 和 11 D、10 和 10 【参考答案】错误 B 【学生答案】 [未答此题] 以下程序的输出结果是:( ) main() {int m=5; if(m++>5) printf("%d\n",m); else printf("%d\n",m--); } A、6 B、5 C、7 D、4 【参考答案】错误 A 【学生答案】 [未答此题] 执行下面程序段后,i的值是( ). int i=10; switch(i) {case 9: i+=1;

case 10: i--; case 11: i*=3; case 12: ++i; } A、28 B、10 C、9 D、27 【参考答案】错误 A 【学生答案】 [未答此题] 下面有关 for 循环的正确描述是( )。 A、for 循环是先执行循环体语句,后判断表达式 B、在 for 循环中,不能用 break 语句跳出循环体 C、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 D、for 循环只能用于循环次数已经确定的情况 【参考答案】错误 C 【学生答案】 [未答此题] 针对下列程序段回答问题( ). for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0) continue; printf("%3d",t); } A、x>=0时什么也不输出 B、最多允许输出100个非负整数 C、printf函数永远也不执行 D、当x<0时整个循环结束 【参考答案】错误 B 【学生答案】 [未答此题] 若char a[10];已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是()。 A、for(i=0;i<10;i++)a[i]=getchar(); B、scanf("%s",a); C、gets(a);

相关主题
文本预览
相关文档 最新文档