C语言程序设计期末试题及答案

时间:2017-04-28 12:00:16 C语言试题 我要投稿

C语言程序设计期末试题及答案

  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语言程序设计期末试题及答案】相关文章:

1.2017年C语言程序设计期末试题及答案

2.C语言程序设计期末试题附答案

3.C语言期末试题及答案

4.2017年C语言程序设计期末复习试题及答案

5.C语言程序设计试题及答案(四)

6.C语言程序设计模拟试题及答案

7.C语言程序设计试题及答案全套

8.C语言程序设计试题及答案(一)