2011年计算机二级考试-C语言试题

如题所述

一、选择题

  1.一个C语言程序是由( )构成。

  A.语句

  B.行号

  C.数据

  D.函数

  2.下面标识符中正确的是( )。

  A.a#bc

  B.123ABC

  C.sime

  D.Y·M·D

  3.在C语言中,存储一个整型、字符型、双精度实型变量所需的字节数是( )。 )。 )。 )。

  A.2、1、8

  B.4、1、4

  C.4、1、4

  D.2、2、8

  4.为了避免嵌套的条件分支语句 if--else中的else总是与( ) 组成成对关系。

  A. 缩排位置相同的

  B. 在其之前未配对的

  C. 在其之前未配对的最近的if

  D. 在同一行上的if

  5.下列表达式的结果正确的是( )。

  int a,b,c,d;

  a=b=c=d=2;

  d=a+1==3?b=a+2:a+3

  A.2 B.4 C.3 D.5

  二、填空题

  1.在C语言中,正确的标识符是由______________________组成的,且由_______________开头的。

  2. 设x=3,那么表达式y=(++x)+(++x)的结果为_________,表达式执行后,变量x的结果为_________。

  3. 一个变量的指针是指_________________________________________________________________。

  4. 组成数组元素的特点是_______________________________________________;

  组成结构体元素的特点是________________________________________________。

  5. 在C语言程序中,对文件进行操作首先要______________________________;然后对文件进行操作,最后要对文件实行__________________________________操作,防止文件中信息的丢失。

  6. 对字符串进行操作的函数有_______________________________________________________等。

  7. C语言程序是由___________________构成的,而C语言的函数是由____________________构成的。

  8. 要想定义整型变量a , 实型变量 b , 字符型的变量c,应该使用的正确语句为______________________________________________________________________________________。

  9. 写出下面表达式的值

  3*5/7+7%3_______________________ x=2 ; y=4; (x++)+y _________________________

  3+4>=7-10_______________________ 3>4 ? 3%2: 1 ______________________________

  x=2,y=2;++x&&++y_________________ x=3 ; x+=x-=2 ______________________________

  三、判断题

  1. C语言的一个特点是可以对计算机硬件进行操作 ( )

  2. 在循环过程中,使用break语句和continue语句的作用是一样的 ( )

  3. 在函数的定义和调用过程中,形式参数和实在参数数目可以不一致 ( )

  4. 指针变量可以接收任何类型的值 ( )

  5. 在C语言程序设计中,字符数组和字符串不是完全一样的概念 ( )

  6. 文件指针是结构体类型,用符号file来表示 ( )

  7. 选择结构(if语句)和循环结构都可以使用嵌套形式 ( )

  8. 在定义二维数组时,可以将该数组的两个维数全部省略 ( )

  9. 逻辑运算符 && || ! 的运算顺序是 ! 优先于 && 优先于 || ( )

  10. 任何数组都可以实现整体使用操作 ( )

四、程序填空题

  1.下面是实现打印九九乘法表的程序,请在画线的位置填上适当的语句,使程序(段)完整。

  main()

  { int i , j , k;

  for(i=1;_____________; i++)

  { for(j=1;______________; j++)

  printf(“%d*%d=%d”,_______________);

  printf(________________);

  }

  }

  2.自己设计一个自定义函数,实现求两个数的最大数的功能,自定义函数如下:

  int max(x,y)

  int x , y ;

  {

  }

  3.设有如下面的结构体,请用C语言的语句定义出正确的结构体形式:

  学生信息:包括(姓名,性别,年龄,分数),并且定义变量stud和数组stud1[30]

  struct student

  {

  }

  4. 根据给出的程序段,请写出正确的结果

  x=1 ; sum=1 ;

  for (x=1 ; x<=5 ; x++)

  sum=sum*x;

  上面的程序段实现的功能是:______________________________________________________ ;

  其运行结果为______________________________________________________________________。

  5.设有如下的语句。

  int a=43,b,c;

  b=23;

  c=a++ * --b;

  (1)上面的语句段执行后a= b= c= ;

  (2)简述a++和++a的相同点和不同点:

  6.设有如下的程序:

  main( )

  { int i=3,*p1;

  int a[3]={15,30,45},*p2;

  p1=&i; p2=a;

  p1=p2+2;

  printf(“%d,%d\n”,*p1,*p2);

  }

  程序运行结果是:_______。

  五、编程题 (25分)

  1.编程实现对10个整数进行冒泡排序(要求排成升序)。

  2.编程实现求下面的式子的结果

  3.编程实现将文本文件file1.dat中的内容复制到文本文件file2.dat中去

  六、附加题

  用C语言程序实现在已知链表中的第三个位置插入数值为a的程序

参考答案

  一、选择题

  1.D 2. C 3. A 4. C 5. B

  二、填空题

  1.字母、数字、下划线;以字母、下划线开头。

  2.10;5。

  3. 该变量的地址。

  4.一组数据类型相同的元素构成的;一组数据类型不同的元素构成的。

  5. 打开;关闭。

  6.字符串长度、取子字符串、字符串替换、字符串复制等。

  7. 函数;语句。

  8. int a ; float b ; char c ;

  9 9 9.3 6 1 1 1 2

  三、判断题

  1. 对 2. 错 3. 错 4. 错 5. 对

  6. 错 7. 对 8. 错 9.对 10. 错

  四、程序填空题

  1. i<=9 j<=9

  printf(“%d*%d=%d”,i,j,i*j);

  printf(“\n”); i , j , k;

  2. int z;

  if (x>=y) z=x;

  else z=y;

  return z;

  3. char name[20];

  char sex;

  int age;

  float score;

  4. 实现功能:计算连续数之积, 即sum=1*2*3*4*5 ;

  运行结果:sum=120

  5. 44 22 946

  a++:先加1,后使用表达式的值;++a表示先加1,后使用表达式的值,它们最后的结果使a加1。

  6.45,15

  五、编程题

  1.编程实现对12个整数进行冒泡排序(要求排成升序)。

  Main()

  { int a[12]; int m,n,p;

  for (m=0;m<=11;m++)(m=0;m<=11;m++)

  scanf(“%d”,&a[m]);

  for (m=0;m<=11;m++)

  for(n=0;n<11-m;n++)

  if(a[n]>a[n+1])

  { p=a[n]; a[n]=a[n+1]; a[n+1]=p; }

  for (m=0;m<=11;m++)

  printf(“%d”,a[m]); }

  2.编程实现求下面的式子的结果

  # include “math.h”

  main()

  { float x,y;

  scanf(“%f”&x);

  if (x>6) y=(x-3)/(2*x-12);

  else y=-2*x*x+4*x-10;

  printf(“y=%f”,y); }

  3.编程实现将文本文件file1.dat中的内容复制到文本文件file2.dat中去

  main()

  { char ch;

  FILE *fp1,*fp2;

  Fp1=fopen(“file1.dat”, “r”);

  Fp2=fopen(“file2.dat”, “w”);

  Ch=fgetc(fp1);

  While(ch!=EOF)

  { fputc(ch,fp2);

  Ch=fgetc(fp1); }

  Fclose(fp1);

  Fclose(fp2); }

  六、附加题

  p=H;K=0;

  While(p!=NULL && k

  { p=p->next;

  k++; }

  if(p==NULL && H!=NULL) printf(“this is invilid”);

  else

  { q=(Struct Linklist *)malloc(sizeof(Struct Linklist));

  q->data=x; q->data=x;

  q->next=p->next;

  p->next=q; }
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-11
找习题集做做,应该就能过了,只要把谭浩强那本书看明白了,通过笔试问题不大,上机考试的话多做习题,c语言体系很完整,重在编程的原理方面,重在理解,但是实用性不是很强啊,更适合作为一种教学语言。
第2个回答  2012-01-11
只要把c语言那本书看两遍就好了,基本上都能做上,很简单的
第3个回答  2012-01-11
考题并不难,把典型题看看
相似回答