江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2010秋江苏省计算机二级C考试试题

绝密★ 启用前

2010年秋

江苏省高等学校非计算机专业学生

计算机基础知识和应用能力等级考试

二级试卷

试卷语种:C语言
















一、选择题(用答题卡答题,答案依次填在2130答题号内,10)

21.以下关于C源程序的叙述中正确的是___(21)___   

    A.注释只能出现在程序的开始位置或语句后面

    B.一行中不能写多条语句    

    C.一条语句可以分写在多行中

    D.一个源程序只能保存在一个文件中

22.C源程序中的命令#include#define是在___(22)___阶段被处理的。

    A.预处理    B.编译    C.连接    D.执行

23.以下语句中有语法错误的是___(23)___

    A.printf("%d",0xAB);    B.printf("%f",3.45E2.5);

    C.printf("%d",037);     D.printf("%c",'\\');

24.已有声明"int x=5,y;float z=2;",以下表达式中语法正确的是_____(24)____   

    A.y=x%z    B.x>0?y=x:y=-x    C.y=x/2=z    D.y=x=z/2

25.已知字母AASCII码是65,字母aASCII码是97,变量c中存储了一个大写字母的编码.若要求将c中大写字母编码转换成对应小写字母编码,则以下表达式中不能实现该功能的是______(25)_____

    A.c=tolower(c)    B.c=c+32    C.c=c-'A'+'a'  D.c=(c+'A')&-'a'

26.一元二次方程ax +bx+c=0有两个相异实根的条件是a0b -4ac>0,以下选项中能正确表示该条件的C语言表达式是 ___(26)___   

    A.a!=0,b*b-4*a*c>0     B.a!=0||b*b-4*a*c>0

    C.a && b*b-4*a*c>0     D.!a && b*b-4*a*c>0

27.以下关于breakcontinue语句的叙述中正确的是 ___(27)______   

  A.breakcontinue语句都可以出现在switch语句中  

  B.breakcontinue语句都可以出现在循环语句的循环体中

  C.在循环语句和switch语句之外允许出现breakcontinue语句

  D.执行循环语句中的breakcontinue语句都将立即终止循环

28.若有一函数定义为"int f(int x,int *y){return x/*y;}",声明该函数的正确形式是__(28)___ .

  A.void f(int,int);    B.int *f(int,int *); 

  C.int f(int *,int *); D.int f(int,int *);

29.已知有声明"char a[]="program",*p=a+1;",则执行以下语句不会输出字符a的是      _____(29)______    .

    A.putchar(*p+4);                B.putchar(*(p+4));

    C.putchar(a[sizeof(a)-3]);      D.putchar(*(a+5));

30.已有定义和声明:

    struct student

    {int no;

     char name[20];

     struct{int year,month,day;}birth;

    } s;

    若要求将日期"19891112"保存到变量sbirth成员中,则能实现这一功能的程序段是____(30)____

  A.year=1989;  month=11;day=12;

  B.s.year=1989;s.month=11;s.day=12;

  C.birth.year=1989;birth.month=11;birth.,day=12;

  D.s.birth.year=1989;s.birth.month=11;s.birth.day=12;

二、填空题(将答案填写在答题纸的相应答题号内,每个答案只占一行,30)

  基本概念

1.若有声明"double n;",则数学公式" "对应的C语言表达式正确形式是___(1)___ 

2.已知有声明"char ch;int a;",执行语句"scanf("%c%d",&ch,&a);"时如果从键盘输入的数据是"123",则变量a得到的值是___(2)___   

3.若有声明"int a=0,b=1,c=2;",执行语句"if(a>0&&++b>0)c++;else c--;",变量abc的值分别___(3)___   

4.若有以下宏定义:

  #define M(a,b) -a/b

  则执行语句"printf("%d",M(4+3,2+1));"后输出结果为___(4)___

5.声明"FILE *p;"中的类型标识符"FILE"是在头文件 ___(5)___中定义的。

  阅读程序

6.以下程序运行时输出到屏幕的结果为___(6)___   

  #include

  enum{A,B,C,D}x;

  void main()

  {char s[]="your";

    for(x=B;x<=D;x++)

      putchar(s[x]);

  }

7.以下程序运行时输出到屏幕的结果是  (7)   

  #include

  void main()

  {int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i,j;

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

    {j=s[i];

     c[j]++;

    }

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

      printf("%d",c[i]);

    }

 8.以下程序运行时输出到屏幕的结果是___(8)___   

    #include

    int fun(int x)

    {static int c,y;

     if(c==0) y=1;

     else y=y+x;

     c++;

     return y;

    }

    void main()

    {int i;

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

       printf("%d",fun(2));

    }

9.以下程序运行时输出到屏幕的结果中第一行是___(9)___,第二行是___(10)___

    #include

    void fun(int *a,int b)

    {while(b>0)

     {*a+=b;

      b--;

     }

    }

    void main()

    {int x=0,y=3;

     fun(&x,y);

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

    }

10.以下程序运行时输出到屏幕的结果是___(11)___

  #include

  int f(int x)

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

    return x*x-f(x-2);

  }

  void main()

  {printf("%d\n",f(3));}