全国计算机二级第五套

12以下选项中,当且仅当x的绝对值在1至6范围内表达式值为“真”的是

  A) (x>=-6)&&(x<=-1)||(x>=1)&&(x<=6)

  B) (x>=1)&&(x<=6)&&(x>=-6)&&(x<=-1)

  C) (x>=-6)||(x<=-1)||(x>=1)||(x<=6)

  D) (x>=1)&&(x<=6)||(x>=-1)&&(x<=-6)

  答案:A

【解析】选项B中,x既要取值1~6,又要取值-6~-1,这是不可能的,所以选项B表达式的值始终为假,选项B错误;选项C无论x取何值,表达式的值始终为真;选项D中当x=-2时,表达式的值为假,选项D错误;选项A中,仅当x的绝对值在1~6内表达式的值才为真,选项A正确;

13以下运用if语句判断x和y大小的程序段,错误的是

  A) if  (x>y)  printf(" x>y ");

        if  (x<y)  printf(" x<y ");

        else  printf(" x=y ");

 

  B) if(x>=y)

        if(x>y) printf("x>y");

        else    printf("x=y");

        else    printf("x<y");

 

  C) if  (x>y)  printf(" x>y ");

        if  (y>x)  printf(" x<y ");

        if  (x==y) printf(" x=y ");

 

  D) if   (x>y)  printf(" x>y ");

        else if (x<y)  printf(" x<y ");

        else  printf(" x=y ");

 

  答案:A

【解析】C语言规定,else语句总是与前面最近的if配对,因此选项A的语句中,当x > y时,执行printf(“x > y”);接着判断if(x < y)为false,接着执行printf(“x = y”),不能判断x和y的大小;所以答案A错误; 选项B中,第一个if与第二个else配对,第二个if与第一个else配对,程序执行正确;选项C中,三条if语句相互独立,分别都需要执行,正确;选项D

14设有语句:printf("%2d\n",2010);,则以下叙述正确的是

  A) 程序运行时输出2010              B) 程序运行时输出20     

  C) 程序运行时输出10                D) 指定的输出宽度不够,编译出错

  答案:A

【解析】printf()函数格式化字符串的一般形式为:[标志][输出最小宽度][.精度][长度]类型。对于%2d,%d表示结果以十进制形式输出带符号的整数,数字2表示输出的最小宽度为2,若实际位数多于2,则按实际位数输出,所以程序输出2010,答案选A。

 

15以下选项中,合法的C语言实数是

  A) .4e0             B) 4.3e0.2          C) E4.8             D) 0.29E

  答案:A

【解析】C语言中,实数有两种形式,十进制小数形式和指数形式,由四个选项可知,本题考查的是实数的指数形式,指数形式一般为: aEn,其中a为十进制数,n为十进制整数,表示的值为:a*10nB、C错在阶码必须是整数,D错在无阶码,答案为A, A的值为: 0.4 * 100 = 0.4。

16设有定义:double  x;,以下选项中不能将输入数据3.14读入赋给变量x的是

  A) scanf("%4.2f",&x);              B) scanf("%lf",&x);

  C) scanf("%le",&x);                D) scanf("%4lf",&x);

  答案:A

【解析】scanf()函数格式字符串的一般形式为:%[*][输入数据宽度][长度]类型。输入数据宽度必须是十进制的整数,它没有精度控制,%4.2f是错误的,不能企图用此语句输入小数点为2位的实数,选项A错误;scanf()函数的长度格式符为l和h,%lf表示用小数形式输入双精度浮点数,满足条件,选项B正确;%le表示用指数形式输入双精度浮点数,满足条件,选项C正确;%4lf表示用小数形式输入宽度为4的双精度浮点数,选项D正确;答案为A。

17有以下程序

    #include <stdio.h>

    main()

    {  int  x,y=0,z=0,t;

       do

       {  scanf("%d",&x);

          t=x>0;

          switch (t)

          {  case 0:  break;

             case 1:  y+=x; continue;

          }

          z+=x;

       }

       while(x);

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

    }

程序运行时输入:-1 1 -2 2 0<回车>,则输出结果是

  A)    1,1         B) 1,0              C) 3,-3             D) 3,0

  答案C

【解析】分析程序结构,在do…while循环中,嵌套一个switch语句,switch语句中两个case语句分别执行break和continue,其中break语句是跳出switch语句,接着执行do…while循环体剩下的部分;而continue语句是直接进入do…while的下一个循环,由此可知每次循环,当t=0时,执行break语句,接着将z值累加x;当t=1时,执行continue语句,将y值累加x,所以当x输入-1、-2、0时,t = 0,z值累加为-3;当x输入1、2时,t=1,y值累加为3,输出y、z的值分别为 3、-3,答案选C。

 

18以下选项中能正确定义二维数组的选项是

  A) double  a[][3]={ 2*3 };         B) double  a[][3];

  C) double  a[][3]={  };            D) double  a[2][3]={ {1.0},{2.0},{3.0,4.0}};

  答案:A

【解析】如果第一维的长度没有指定,则定义的同时需要完成初始化,否则不知道分配多大的内存空间给它,所以选项B、C错误;二维数组a[2][3]中只有两个元素,都是一维数组,一维下标最大只能a[1],所以选项D错误;若完成初始化的二维数组,第一维的长度没有指定,则第一维的大小按如下规则确定:若初值个数能被第二维大小整除,所得的商就是第一维的大小,若不能整除,则所得的商加1作为第一维的大小,所以选项A相当于:

double a[1][3] = {6};其中a[0][0]=6,其他元素赋值0,选项A正确,答案为A。

19若有函数定义如下

          int fun(int  x,int  y)

          {  return  x-y;  }

则以下涉及上述函数的说明语句错误的

  A) int fun( int  x,y );            B) int fun( int ,int );

  C) int fun( int  a,int  b );       D) int i,fun(int  x,int  y);

  答案:A

【解析】C语言中函数的说明形式为:类型说明符 函数名

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值