C语言程序设计期末试题及答案
C语言既有高级语言的特点,又具有汇编语言的特点。以下是由阳光网小编整理关于C语言程序设计期末试题的内容,希望大家喜欢!
C语言程序设计期末试题及答案(一)
1.以下程序输出结果是( )
main()
{ int m=5;
if(m++>5) printf("%d\n",m);
else printf("%d\n",m--);
A)7 B)6 C)5 D)4
2以下程序的输出结果为( )
# include <stdio.h>
main ( )
{ int i=0, j=0, a=6;
if ((++i>0)&&(++j>0)) a++;
printf ("i=%d, j=%d, a=%d\n", i,j,a);}
A) i=0, j=0, a=6 B) i=1, j=1, a=7
C) i=1, j=0, a=7 D) i=0, j=1, a=7
3有如下程序
main()
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c++;
printf("%d\n",c);
}
该程序的输出结果是( )
A) 0 B) 1 C) 2 D) 3
4若i为int型,且有程序如下,则输出结果是( )
i=111;
if(i%3==0)
printf("####");
printf("****");
A) #### B) **** C) ####**** D) 无输出结果
5若运行时x=12,则运行结果为( )
{int x, y;
scanf("%d", &x);
y=x>12 ? x+10:x-12;
printf("%d\n", y);}
A) 0 B) 22 C) 12 D) 10
6以下程序的输出结果是( )
main()
{ int i=0, j=0, k=6;
if ((++i>0)||(++j>0)) k++;
printf("%d, %d, %d\n", i, j, k);
}
A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7
7若变量都已正确说明,则以下程序段输出为( )
int a=1,b=2,c=3;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
A)a=1 b=2 c=1 B)a=1 b=2 c=3
C)a=1 b=3 c=1 D)a=2 b=3 c=2
8当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )
if(a<b)
if(c<d)x=1;
else
if(a<c)
if(b<d)x=2;
else x=3;
else x=6;
else x=7;
A) 1 B)2 C)3 D)6
9以下不正确的语句为( )
A)if(x>y);
B)if(x==y)&&(x!=0)x+=y;
C)if(x!=y)scanf("%d",&x);else scanf("%d",&y);
D)if(x<y){x++;y++;}
10有以下程序:
#include"stdio.h"
main( )
{char i;
for (; (i=getchar ())!='\n';)
{switch (i-'a')
{case 0: putchar (i);
case 1: putchar (i+1);break;
case 2: putchar (i+2);
case 3: break;
default: putchar (i);break;
}
}
printf ("\n");
}
输入下列数据后,程序的输出结果是( )
abcde<CR>
A) abcde B) abcee
C) abbde D) abccdd
11若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是( )
A) switch(a+b); B) switch(a*a+b*b)
{ case 1:y=a+b; break; {case 3:
case 0:y=a-b; break; case 1:y=a+b;break;
} case 3:y=b-a,break;
}
C) switch a D) switch(a-b)
{ case 1 :y=a-b; break {
case 2: x=a*d; break case c1:case 4:x=a+b;break;
default:x=a+b; case c2:case 11:y=a-b;break;
} default:y=a*b;break;
}
12写出下面程序输出结果( )
{int x=1, y=0, a=0, b=0;
switch(x)
{case 1:
switch(y)
{case 0: a++;
case 1: b++; }
case 2: a++; b++;
}
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
13C语言的for语句中的表达式可以部分或全部省略,但两个( )不可省略。但当三个表达式
均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。
A) < B) ++ C) ; D) ,
14下面有关for循环的正确描述是( )。
A) for循环只能用于循环次数已经确定的情况
B) for循环是先执行循环体语句,后判定表达式
C) 在for循环中,不能用break语句跳出循环体
D) for循环体语句中,可以包含多条语句,但要用花括号括起来
15以下程序段( )。
x=-1;
do
{ x=x*x;}
while(!x)
A) 是死循环 B) 循环执行2次 C) 循环执行一次 D) 有语法错误
16如下的数组中,数组array占用的内存空间是( )个字节。
char array[]={'c','h','i','n','a'};
A. 1 B. 5 C. 6 D. 不确定
17设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述正确的是( )。
A) while 循环执行10次 B) 循环是无限循环
C) 循环体语句一次也不执行 D) 循环体语句执行一次
18下列程序段的运行结果是( )
int n=0;
while(n++<3);
printf("%d",n)
A. 2 B. 3 C. 4 D. 以上都不对
19设有程序段
t=0;
while(printf("*"));
{ t++;
if (t<3) break;
}
下面描述正确的是( )。
A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价
C) 其中循环控制表达式是不合法的 D) 以上说法都不对
20下面程序的运行结果是( )。
#include <stdio.h>
main()
{ int y=10;
do { y--;} while(--y);
printf("%d\n",y--);
}
A) -1 B) 1 C) 8 D) 0
21以下程序段的输出结果是( ).
main()
{ int i=5;
for ( ;i<=15; )
{ i++;
if (i%4==0) printf("%d ",i);
else continue;}
}
A. 8 12 16 B. 8 12 C. 12 16 D. 8
22以下不是无限循环的语句为( )。
A) for(y=0,x=1;x>++y;x=i++) i=x;
B) for( ; ;x++=i);
C) while(1){x++;}
D) for(i=10; ; i--) sum+=i;
23有如下语句
int x=3;
do
{ printf("%d\n",x-=2);} while(!(--x));
则上面程序段( )
A. 输出的是1 B. 输出的是1和-2
C. 输出的是3和0 D. 是死循环
24以下不是无限循环的是( )
A. for(y=0,x=1;x>++y;x=i++) i=x;
B. for( ; ;x++=i);
C. while(1) x++;
D. for(i=10; ;i--) s+=i;
25以下正确的描述是( )。
A) continue语句的作用是结束整个循环的执行
B) 只能在循环体内和switch语句内使用break语句
C) 在循环体内使用break语句或continue语句的作用相同
D) 从多层循环嵌套中退出时,只能使用goto语句
26以下程序输出结果为( )
#include "stdio.h"
main()
{int i,b,k=0;
for(i=1;i<=5;i++)
{ b=i%2;
while (b-->=0) k++;}
printf("%d,%d\n",k,b);
}
A. 3,-1 B. 8,-1 C. 3,0 D. 8,-2
27以下程序段中循环体总的执行次数是( )
int i,j;
for(i=7;i;i--)
for(j=0;j<6;j++)
{......}
A) 42 B) 21 C) 13 D) 36
28以下不正确的描述是( )
A. break 语句不能用于循环语句和switch语句外的任何其他语句
B. 在switch语句中使用break语句或continue语句的作用相同
C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行
D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
1else语句总是和靠它最近的if匹配。
2switch语句中一定有default分支
3case后只能跟常量,不能跟变量
4break语句的作用就是结束本层循环。
5do-while语句构成的循环不能用其它语句构成的循环来代替。
6用do-while语句构成循环时,只要while后的表达式为0时就结束循环。
7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。
8for循环中,如果表达式2为空,则该循环一定是死循环。
9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。
10for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50。
C语言程序设计期末试题及答案(二)
一、选择(每题2分,共30分)
1. 下列选项中,不能用作标识符的是( )。
A. _1234_ B. _1_2 C. int_2_ D. 2_int_
2. 下列字符常量不合法的`是( )。
A. „2‟ B. „\101‟ C. „ab‟ D. „ \n‟
3. 执行以下程序后的输出结果为( )。
main( )
{ int x; float y;
y=3.6; x=(int)y+10; printf(“x=%d,y=%f”,x,y); }
A. x=13.6,y=3.600000 B. x=13,y=3.600000 C. x=13,y=3 D. x=13,y=3.6
4. 以下选项中不合法的常量是 ( )。
A. 123L B. 0x35 C. 018 D. 6e-2
5. 设m=10,n=4,则赋值运算m%=n+1执行后m的值是( )。
A. 1 B. 2 C. 3 D. 0
6. 下面程序的输出结果为( )。
main( )
{ int x=10,y=3,z; printf(“%d\n”,z=(x%y,x/y));}
A. 0 B.1 C. 3 D. 4
7. 下面程序的输出结果为( )。
main( )
{ int x=010,y=0x10,z=10; printf(“%d,%d,%d ”,x,y,z);}
A. 10,10,10 B. 8,16,10 C. 16,8,10 D. 8,10,10
8. 以下选项中不是C语句的是( )。
A. {int i; i++; printf("%d\n", i); }
C. a=5,c=10
1 B. ; D. { ; }
9. 以下程序的输出结果是( )。
main( )
{ int x=2,y=-1,z=2;
if( x<y)
if(y<0) z=0;
else z=z+1;
printf(“%d”,z); }
A. 0 B. 1 C. 2 D. 3
10. 不能表达:x为奇数时表达式为“真”,偶数时表达式为“假”的表达式是( )。
A. x%2= =1 B. !(x%2= =0) C. !(x%2) D. x%2
11. 以下程序段中while语句的循环次数是( )。
int i=0;while(i=1) i++;
A.无限次 B. 有语法错误,不能执行 C. 一次也不执行 D. 执行一次
12. 假设a,b均为字符数组以下正确的输入语句是( )。
A.gets(a,b); B. scanf(“%s %s”,a,b); C. scanf(“%s %s”,&a,&b); D.gets(“a”); gets(“b”);
13. 若有定义:int a,*p; 则以下正确的赋值表达式是 )。
A. p=&a B. p=a C. *p=&a D. *p=*a
14. 以下函数调用语句中,func( (exp1,exp2),(exp3,exp4,exp5));含有的实参个数是( )。
A. 1 B. 2 C. 3 D. 5
15. 有以下定义:
struct person{char name[9]; int age;}
struct person class[10]={“Johu”,17,
“Paul”,19,
“Mary”,18,
“Adam”,16,};
则下面能输出字母M的语句是( )。 A. printf(“%c\n”,class[3].name); B. printf(“%c\n”,class[3].name[1]); D. printf(“%c\n”,class[2].name[0]); C. printf(“%c\n”,class[2].name[1]);
【C语言程序设计期末试题及答案】相关文章: