C语言 百分网手机站

C语言试题及答案(2)

时间:2020-11-07 10:55:29 C语言

C语言试题及答案

  main()

  { int k, a[10]={1,2,3,4,5};

  for(k=1; k<3; k++) fun(a);

  for(k=0; k<5; k++) printf("%d", a[k]);

  }

  上面程序的输出结果是

  A.34756

  B.23445

  C.35743

  D.12345

  (40) 请读程序:

  #include

  #define SUB(X,Y) (X)*Y

  main()

  { int a=3, b=4;

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

  }

  上面程序的输出结果是

  A.12

  B.15

  C.16

  D.20(41) 请读程序:

  #include

  main()

  { int mun=0;

  while(num<=2)

  { num++; printf("%d\n",num);}

  }

  上面程序的输出结果是

  A.1

  B.1

  C.1

  D.1

  2 2 2

  3 3

  4

  (42) 请读程序:

  #include

  main()

  { float x,y;

  scan("%f",&x);

  if(x<0.0) y=0.0

  else if((x<5.0)&&(x!=2.0))

  y=1.0/(x+2.0);

  else if (x<10.0) y=1.0/x;

  else y=10.0;

  printf("%f\n",y);

  }

  若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是

  A.0.000000

  B.0.250000

  C.0.500000

  D.1.000000

  (43) 请读程序:

  #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

  (44) 若有下面的程序片段:

  int a[12]={0}, *p[3], **pp, i;

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

  p[i]=&a[i*4];

  pp=p;

  则对数组元素的错误引用是

  A.pp[0][1]

  B.a[10]

  C.p[3][1]

  D.*(*(p+2)+2)

  (45) 请读程序:

  #include

  #include

  main()

  { float x,y,z;

  scan("%f%f",&x,&y);

  z=x/y;

  while(1)

  { if(fabs(z)>1.0)

  { x=y; y=z; z=x/y;

  }

  else break

  }

  printf("%f\n",y);

  }

  若运行时从键盘上输入3.6 2.4(表示回车),则输出的结果是

  A.1.500000

  B.1.600000

  C.2.000000

  D.2.400000

  (46) 请读程序:

  #include

  f(in b[], int n)

  { int i, r;

  r=1;

  for(i=0; i<=n; i++) r=r*b[i];

  return r;

  }

  main()

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

  x=f(a, 3);

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

  }

  上面程序的输出结果是

  A.720

  B.120

  C.24

  D.6

  (47) 请读程序:

  #include

  #include

  void fun( char *s)

  { char a[10];

  strcpy( a, "STRING");

  s=a;

  }

  main()

  { char *p;

  fun(p);

  x=f(a, 3);

  printf("%s\n",p);

  }

  上面程序的输出结果是(└┘表示空格)

  A.STRING└┘└┘└┘└┘

  B.STRING

  C.STRING└┘└┘└┘

  D.不确定的值

  (48) 若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是

  A.s->next=NULL; p=p->next; p->next=s;

  B.p=p->next; s->next=p->next; p->next=s;

  C.p=p->next; s->next=p; p->next=s;

  D.p=(*p).next; (*s).next=(*p).next; (*p).next=s;

  (49) 请读程序:

  #include

  void fun(float *pl, float *p2, float *s)

  { s=( float * )calloc( 1, sizeof(float));

  *s=*p1+ *(p2++);

  }

  main()

  { float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;

  fun(a, b, s)

  printf("%f\n",*s);

  }

  上面程序的输出结果是

  A.11.100000

  B.12.100000

  C.21.100000

  D.1.100000

  (50) 请读程序:

  #include

  #include

  void fun( char *w, int m)

  { char s, *p1, *p2;

  p1=w; p2=w+m-1;

  while (p1  { s=*p1++; *p1=*p2--; *p2=s;}

  }

  main()

  { char a[]="ABCDEFG";

  fun( a, strlen(a));

  puts(a);

  }

  上面程序的输出结果是

  A.GFEDCBA

  B.AGADAGA

  C.AGAAGAG

  D.GAGGAGA

  二、填空题(每空2分,共40分)

  请将每空的正确答案写在答题卡上【1】-【20】序号后的横线上,答在试卷上不得分。

  (1) DOS命令分为内部命令与外部命令,XCOPY命令是 【1】 命令

  (2) 为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该用命令 【2】 。

  (3) 设当前盘为A盘,当前目录为\X\Y,A盘上的一个文件QR.C在当前目录下的子目录W中。现已将A盘的当前目录改为\D\XY,当前盘改为C盘,如需指定A盘上该文件应写成 【3】 。

  (4) 用十六进制给存储器中的字节地址进行编号,其地址编号是从0000到FFFF,则该存储器的容量是【4】KB。

  (5) 设有两个八位二进制数00010101与01000111相加,其结果的十进制表示为 【5】 。

  (6) 数学式子 写成C语言表达式是 【6】 。

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

  #include

  main()

  { static char b[]="Goodbye";

  char *chp=&b[7];

  while( --chp >=&b[0]) putchar( *chp);

  putchar(’\n’);

  }

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

  #include

  void as( int x, int y, int *cp, int *dp)

  { *cp=x+y;

  *dp=x-y;

  }

  main()

  { int a=4, b=3, c, d;

  as( a, b, &c, &d);

  printf( ’%d %d\n", c, d);

  }

  (9) 请读程序:

  #include

  main( int argc, char *argv[])

  { int i;

  printf( ’%d\n", argc);

  for( i=0; i<=argc+1; i++) printf( "%s ", argv[i]);

  printf("\n");

  }

  若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行

  abc file1 file2(表示回车)

  程序执行后的输出结果是 【9】 。

  (10) 条件“20  (11) 设二进制数a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变,则二进制数b应是 【11】 。

  (12) 若有以下说明和定义语句,则变量w在内存中所占的字节数是 【12】 。

  union aa

  { float x, y;

  char c[6];

  };

  struct st { union aa v; float w[5]; double ave; } w;

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

  #include

  #define N 5

  fun( char *s, char a, int n)

  { int j;

  *s=a; j=n;

  while( e  return j;

  }

  main()

  { char s[N+1];

  int k, p;

  for( k=1; k<=N; k++)

  s[k]=’A’+k+1;

  printf( "%d\n", fun(s, ’E’, N));

  }(14) 下面程序的输出结果是 【14】 。

  #include

  void fun( char *a1, char *a2, int n)

  { int k;

  for( k=0; k  a2[k]=( a1[k]-’A’-3+26)&+’A’;

  a2[n]=’\0’;

  }

  main()

  { char s1[5]="ABCD", s2[5];

  fun( s1, s2, 4);

  puts( s2);

  }

  (15) 下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。

  findmax( int s[], int t)

  { int k, p;

  for( p=0, k=p; p  if( s[p]>s[k]) 【15】 。

  return k;

  }

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

  #include

  fun( int x)

  { int p;

  if( x==0||x==1) return(3);

  p=x-fun( x-2);

  return p;

  }

  main()

  { printf( "%d\n", fun(9));}

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

  #include

  funa( int a, int b)

  { return a+b;}

  funb( int a, int b)

  { return a-b;}

  sub( int (*t)(), int x, int y)

  { return((*t)( x,y));}

  main()

  { int x, (*p)();

  p=funa;

  x=sub(p,9,3);

  x+=sub(funb, 8, 3);

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

  }

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

  #include

  main()

  { char *p[]={ "BOOL", "OPK", "H", "SP"};

  int i;

  for(i=3; i>=0; i--,i--) printf( "%c", *p[i]);

  printf("\n");

  }

  (19) 为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是向结点的指针域),请填空。

  data next

  struct link { char data; 【19】 } node;

  (20) 下面的程序用来统计文件中字符的个数,请填空。

  #include

  main()

  { FILE *fp;

  long num=0;

  if(( fp=fopen("fname.dat","r"))==NULL)

  { printf( "Can’t open file! \n"); exit(0);}

  while 【20】

  { fgetc(fp); num++;}

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

  fclose(fp);

  }

  参考答案

  一`选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)

  (1)C (2)A (3)B (4)D (5)D (6)A (7)C (8)B (9)D (10)C

  (11)B (12)D (13)A (14)C (15)B (16)A (17)B (18)A (19)C (20)C

  (21)D (22)B (23)B (24)A (25)C (26)D (27)D (28)B (29)C (30)A

  (31)B (32)B (33)D (34)C (35)A (36)C (37)A (38)B (39)C (40)A

  (41)C (42)C (43)A (44)C (45)B (46)B (47)D (48)C (49)D (50)C

  二` 填空题(每空2分,共40分)

  (第(2)`(3)空允许小写或大小写混合使用,其它空均须与答案一样)

  (1) 外部

  (2) DIR ?? C*.*

  (3) A:\X\Y\W\QR.C

  (4) 64

  (5) 92

  (6) pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)

  (7) eybdooG

  (8) 7 1

  (9) 3 abc.exe file1 file2 (注:两个答案,每个1分)

  (10) ((20   (11) 11110000

  (12) 34

  (13) 3

  (14) XYZA

  (15) k=p

  (16) 7

  (17) 17

  (18) SO

  (19) struct link *next

  (20) (!feof(fp))或(feof(fp)==0)

【C语言试题及答案】相关文章:

1.C语言笔试试题及答案

2.常用C语言测试题及答案

3.C语言经典例题及答案

4.中软c语言面试题及参考答案

5.计算机二级C语言试题及答案

6.C语言试题(精选)

7.C语言试题大全

8.C语言试题训练

9.计算机二级《C语言》专项试题及答案