卷子解析+程序测试
一、单选题
1、在C语言中,下面符号串中能用作变量名的标识符为____B____。
A)  auto    B)  put          C)  1*num        D)  and-2
解析:标识符的命名规则:
1.组成:字母、数字、下划线
2.注意:首位不能是数字;
      不能为关键字(在程序运行中,能够直接被识别:if、for(与For不同)、static、while)
拓展:C语言中auto是个关键字,用于声明变量的生存期为自动与static相对应
      例如:auto int a,b;(相当于 int a,b;)一般都是省略不写,所以在程序书写时很少出现
      Static:静态变量,调用后不消失而是保留原值(占内存不释放)
      程序举例:阶乘:
图1—阶乘
2、将十六进制数F49转换成十进制数是___C____ 。
A)  4038          B)  2573            C)  3913        D)  1912
解析:十六进制表示[0~9;A~F]
      A=10;B=11;C=12;D=13;E=14;F=15
      题目中F    4    9        15    4    9
            162   161  160        162   161  160
        对应匹配之后开始计算:15*162+4*161+9*160=3048+64+9=3913
3、C语言对四种基本变量的存储空间分配从小到大依次为:__B_____ 。
A)  int char float double            B)  char int float double
C)  double float char int            D)  char double int float
解析:对于字节分配
      char                1
          long  int      4 (在VC6.0的编译器中写int默认为long int占4个字节)
          short  int      2
    float                4
    double              8   
4、设i为int型变量,f为float型变量,通过语句scanf(“i=%d,f=%f”,&i,&f);希望将100和765.12分别赋给i和f, 则正确的键盘输入为___B____。
A)  100,765.12                B)  i=100,f=765.12
C)  i=100  f=765.12            D)  100  765.12
解析:本题考的是对于scanf的键盘输入
      严格按照 scanf引号(“”)中来输入
      i=数据,f=数据(不要忘记还有逗号)
5、以下对于函数的描述中正确的是__C_____。
A)  函数必须有参数。                 
B)  函数的返回值类型不能为空。
C)  函数必须先定义后使用。         
D)  函数中不能有复合语句。
解析:A.错的—不是所有函数都有参数;例如(随便声明一个):fun()也是可以的
      B.错的—返回值类型在函数定义时可以为空;例如:void fun();
      C.对的—需要申请一个内存地址,有了地址才能对其进行赋值
      D.错的—函数定义就可以在复合语句中
6、已知 w=1,x=2,y=3,z=4; 条件表达式“(w>x?w: y)<z ?y:z”的结果是___D____。
A)  1            B)  2            C)  4            D)  3
解析:从右向左一个一个看 
    w>x?w:y    //先判断w是否大于x,判断正确:w;判断错误:y
    题中w=1,x=2;可知判断错误,结果为y=3;
    在拿第一次的判断结果,进行后面的判断
    3<z?y:z    //同理上述判断 z=4
    判断正确:输出y的值=3
   
7、以下程序的输出结果是_B_____。
void main()
{  int x=023;
  printf( "%d\n",--x);
}
A)17            B) 18            C) 22            D) 24
解析:从定义开始 int x=023;  //一般情况下普通十进制数字定义,是不会这样写的
      可以判断,它的书写时八进制(如果写成0023则是十六进制)
      首先将八进制023换成十进制:0    2   3
                                  82  81   80
      同理十六进制转换:3*80+2*81+0*82=19
      Printf中检测到的是“--x”(即为先减后用)输出结果为18
拓展:若Printf中检测到的是“x--”(即为先用再减)输出结果就保持19
程序测试:
图 2—“--x”
图 3—“x--”
   
8、假定变量均已正确声明,下列程序段运行后x的值是__B____。
a=b=c=0;x=35;
if(!a) --x;
else if(b) x++;
if(c) x=3;
else  x=4;c语言中的逗号表达式
A)3            B) 4                C) 34            D) 35
解析:题目中出现了一个判断语句[if (!a)],解释为判断!a的真假
      在if判断语句中如果不是一个判断句(例如a>5、a==0之类的)它所能检测到的就只有0和1
      0为假;1为真(判断出的1,不是数值1,而是非零,例如if(5)就是真的;
      题目中a=b=c=0
      因为a=0,因此if(!a)即为非0为真(相反则为假)
      在程序的第一个else if 后面出现一个分号“;”这表示第一个判断到此结束
      最后一个else是和if(c)对应的,在C语言中0为假,非0为真,所以会执行到最后一个else,的分支——x=4
拓展:程序测试:
图 4—“if else”测试

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。