【www.lexiangwang.net--程序员】

  C语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。以下是由阳光网小编整理关于C语言程序设计试题的内容,希望大家喜欢!

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

  一、单项选择题(20分,每题2分)

  1.以下叙述中错误的是。C

  A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

  B)数组名代表的是数组所占存储区的首地址,其值不可改变

  C)当程序执行时,数组元素的下标越界时,系统给出“下标越界”的出错信息

  D)可以通过赋初值的方式确定数组元素的个数

  2.以下叙述中,正确的是:C

  A)continue和break语句只能用于循环体内

  B)continue和break语句只能用于分支语句中

  C)continue语句只能用于循环体内

  D)continue语句只能用于分支语句中

  3.执行下列程序段后,正确的结果是 C

  char x[8] = {8,7,6,5,0,0}, *s;

  s = x+1;

  printf(“%d\n”, s[2]);

  A) n B) 0 C) 5 D) 6

  4.C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:A

  A)单向值传递 B) 地址传递 C) 相互传递 D) 由用户指定方式

  5.变量的指针,其含义是指该变量的 B

  A)值 B)地址 C)名 D)一个标志

  6.执行下列程序段后,正确的结果是A

  int i=5;

  while(i=1)

  i--;

  printf(“%d”,i)

  A) 5 B) 0 C) 1 D) 无限循环

  7.for(i=0;i<10;i++) A

  if(i〈=5) break;

  则循环结束后i的值为

  A)0 B)1 C)5 D)10

  8.执行下列程序段后,正确的结果是C

  char x[8] = {8,7,6,5,0,0}, *s;

  s = x+1;

  printf(“%d\n”, s[2]);

  A) n B) 0 C) 5 D) 6

  9.C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:A

  A)单向值传递 B) 地址传递 C) 相互传递 D) 由用户指定方式

  10.设有数组定义:char str[]=”China”;则下面的输出为B

  printf(“%d”,strlen(str));

  A)4 B)5 C)6 D)7

  二、填空题(30分,每空2分)

  1.C语言提供的三种逻辑运算符是__&&___、__||___和__!__。

  2.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是 1 B 。

  #include <stdio.h>

  main()

  {

  char a,b;

  a=getchar();

  scanf("%d",&b);

  a=a-'A'+'0';

  b=b*2;

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

  }

  3.以下程序运行后的输出结果是 4 3 5 。

  main()

  {

  int a=3,b=4,c=5,t=99;

  if(b<a && a<c) { t=a;a=c;c=t;}

  if(a<c && b<c) {t=b;b=a;a=t;}

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

  }

  4.下面程序将字符数组a复制到字符数组b中。

  main()

  {

  char a[]="I am a boy.",b[20];

  int i;

  for(i=___0____;a[i]!='\0';i++)

  {

  ____ b[i]=a[i]____;

  }

  _____ b[i]= '\0'____;

  }

  5.若有定义:double x[3][5];

  则x数组行下标的上限是__0___,列下标的下限是__4___。

  6.以下程序运行后的输出结果是 101 。

  #define S(x) 4*(x)*(x)+1

  main()

  {

  int i=2,j=3;

  printf("%d\n",S(i+j));

  }

  7.若有定义:double x[3][5];

  则x数组行下标的上限是_0____,列下标的下限是_4___。

  8.已知宏定义#define s 2+3

  printf(”%d”,s*4);的输出结果是__14_____。

  9.若有int a[3][2] = {{1},{3,2},{4,5}};,则a[1][1]的值是 2 。

  三、写出程序的运行结果(30分,每题10分)

  1.写出程序运行后的输出结果。

  int f(int b[][4])

  {

  int i,j,s=0;

  for(j=0;j<4;j++)

  {

  i=j;

  if(i>2)

  i=3-j;

  s+=b[i][j];

  }

  return s;

  }

  main( )

  {

  int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

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

  }

  16

  2.写出程序运行结果

  #include <stdio.h>

  main()

  {

  int i=10,j=0;

  do

  {

  j=j+i;

  i--;

  }while(i>2);

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

  }

  52

  3.写出程序运行后的输出结果。

  int f(int b[][4])

  {

  int i,j,s=0;

  for(j=0;j<4;j++)

  {

  i=j;

  if(i>2)

  i=3-j;

  s+=b[i][j];

  }

  return s;

  }

  main( )

  {

  int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

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

  }

  16

  四、编程(完形填空)(20分,每题10分)

  1.打印所有水仙花数,所谓水仙花数是指一个三位数,其各位数的立方和等于其本身。

  include <stdio.h>

  main()

  {

  int i,j,k,m;

  for(i=100; i<1000; i++)

  {

  j=i/100;

  k= i/10 ;

  m=i;

  if( j*100+k*10+m==m*m*m+j*j*j+k*k*k )

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

  }

  }

  2.以下程序计算某年某月有几天,1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月为28天、闰年2月为29天。

  main()

  {

  int yy,mm,day;

  scanf(“%d%d”,&yy,&mm);

  switch(_mm__)

  {

  case1:

  case3:

  case5:

  case7:

  case8:

  case10:

  case12: day=__31_;

  break;

  case4:

  case6:

  case9:

  case11: day=__30___;

  break;

  case2: if(((yy%4==0)__&&___(yy0!=0))__||__(yy@0==0))

  day=29;

  else

  day=28;

  break;

  }

  }

  C语言程序设计试题及答案(二)

  1. 若有定义"float x=1.5;int a=1,b=3,c=2;",则正确的switch语句是() (2分)

  A.switch(x)

  {

  case 1.0: printf("* ");

  case 2.0 printf("** ");

  }

  B.switch((int)x)

  {

  case 1.0: printf("* ");

  case 2.0 printf("** ");

  }

  C.switch(a+b)

  {

  case 1: printf("* ");

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

  }

  D.switch(a+b)

  {

  case 1: printf("* ")

  case c: printf("** ");

  }

  标准答案:C

  2. 若有宏定义如下:

  #define X 5

  #define Y X+1

  #define Z Y*X/2

  则执行以下printf语句后,输出的结果是( )

  int a; a=Y;

  printf("%d ",Z);

  printf("%d",--a); (2分)

  A.7,6 B.12,6 C.12,5 D.7,5

  标准答案:D

  3. 下面的符号常量定义中,正确的是 ( ) (2分)

  A.#define PI 3.14; B.#include PI 3.14;

  C.#define PI=3.14 D.#define PI 3.14

  标准答案:D

  4. 以下程序的输出结果是( )

  int a, b;

  void fun()

  { a=100; b=200; }

  main()

  { int a=5, b=7;

  fun();

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

  } (2分)

  A.100200 B.57 C.200100 D.75

  标准答案:D

  5. 若有以下调用语句,则不正确的fun函数的首部是( )

  main()

  { …

  int a[50],n;

  …

  fun(n, &a[9]);

  …

  } (2分)

  A.void fun(int m, int x[])

  B.void fun(int s, int h[41])

  C.void fun(int p, int *s)

  D.void fun(int n, int a)

  标准答案:D

  6. 以下程序的输出结果是( )

  fun(int x, int y, int z)

  { z=x*x+y*y; }

  main()

  { int a=31;

  fun(5,2,a);

  printf("%d",a);

  } (2分)

  A.0 B.29 C.31 D.无定值

  标准答案:C

  7. 以下只有在使用时才为该类型变量分配内存的存储类说明是( ) (2分)

  A.auto和static B.auto和register

  C.register和static D.extern和register

  标准答案:B

  8. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( ) (2分)

  A.地址传递

  B.单向值传递

  C.由实参传给形参,再由形参传回实参

  D.传递方式由用户指定

  标准答案:B

  9. 以下函数值的类型是( )

  fun ( float x )

  { float y;

  y= 3*x-4;

  return y;

  } (2分)

  A.int B.不确定 C.void D.float

  标准答案:A

  10. C语言规定函数的返回值的类型是由( ) (2分)

  A.return语句中表达式类型决定

  B.调用该函数时的主调函数类型决定

  C.调用该函数时系统临时决定

  D.在定义该函数时所指定的函数类型决定

  标准答案:D

  11. 若有说明:int i,j=7, *p=&i; 则与i=j;等价的语句是( ) (2分)

  A.i= *P; B.*p=*&j; C.i=&j; D.i=* *p;

  标准答案:B

  12. 以下程序执行后a的值是( )

  main()

  { int a,k=4,m=6,*p1=&k,*p2=&m;

  a=p1==&m;

  printf("%d ",a);

  } (2分)

  A.4 B.1 C.0 D.a无定值

  标准答案:D

  13. 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是( ) (2分)

  A.*p=&a;scanf("%ld",p);

  B.p=(long *)malloc(8);scanf("%ld",p);

  C.scanf("%ld",p=&a);

  D.scanf("%ld",&a);

  标准答案:A

  14. 以下程序的输出结果是( )

  #include

  int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;

  main()

  {p=(int *)malloc(sizeof(int));

  f(p,a);

  printf("%d ",*p);

  }

  f(int *s,int p[][3])

  {*s=p[1][1];} (2分)

  A.1 B.4 C.7 D.5

  标准答案:D

  15. 设已有定义: char *st="how are you"; 下列程序段中不正确的是( ) (2分)

  A.char a[12], *p; strcpy(p=a+1,&st[4]);

  B.char a[12]; strcpy(++a, st);

  C.char a[12]; strcpy(a, st);

  D.char a[12], *p; strcpy(p=&a[1],st+2);

  标准答案:B

  18. 以下程序的输出结果是_____ B___。

  main()

  {

  char cf[3][5]={"AAAA","BBB","CC"};

  printf(""%s" ",ch[1]);

  } (2分)

  A."AAAA" B. "BBB" C."BBBCC" D."CC"

  标准答案:B

  19. 以下程序的输出结果是_______。

  main()

  {

  int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

  for(i=0;i for(j=i;j printf("%d ",t);

  } (2分)

  A.3 B.4 C.1 D.9

  标准答案:B

  20. 在下列变量中,()不是局部变量 (2分)

  A.register类 B.外部static类

  C.auto类 D.函数形参

  标准答案:B


1.C语言程序设计试题及答案

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

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

4.C语言期末考试试题及答案

5.大学《C语言》试题及答案

本文来源:https://www.lexiangwang.net/jisuanjikaoshi/237973.html