C语言易错题(2)

一、填空题

  1. 若变量已正确定义,要求用语句scanf("%f%c%f%c",&a,&c1,&b,&c2);给c1赋予字符%,给c2赋予字符#,给a赋予2.0,给b赋予4.0,则正确的输入形式是  2.0%цц4#(ц代表空格,代表回车)    解析:字符在输入时,前面的变量输入完毕后,直接输入字符可以,若有其他字符出现,如空格、回车都会被%c对应的变量所接收,而数值型数据不会受影响。

  2. 函数的实参传递到形参有两种方式:___值传递___和___引用传递___。

  3. 假定一个二维数组的定义为double b[4][5];,则在VC编译系统中,这个数组所占存储空间的字节数为___160___。  解析:double占8个字节
  4. 设有定义int a[5]={1,2,3,4,5},*p=a;则p+2表示的意思是   a[2]的地址     
  5. 以数组名作函数参数时,传递的不是整个数组元素,而是     数组的首地址        

二、单选题

  1. 若有以下定义:int x[10];int *pt=x;则对x数组元素的正确引用是(  )。

    A.pt+3       B.*&x[10]     C.*(pt+10)        D.*(x+3)  解析:pt是int类型指针,指向int数组x的首部。D项,*(x+3)相当于x[3];A项,int类型指针,指向x中第3个元素,并非是对x数组元素的引用。

  2. 一个C语言程序的执行是从(  C )。

     A第一个语句开始,直到最后一个语句结束

     B. 第一个函数开始,直到最后一个函数结束

     C. main函数开始,直到main函数结束

     D. main函数开始,直到最后一个函数结束

  3. 以下叙述中正确的是(  B )。

    AC语言的函数必须有一个返回值 BC语言的函数至多有一个返回值

     CC语言的函数可以有多个返回值 DC语言的函数不能有返回值

  4.  若变量已经正确定义并赋值,则以下选项是合法的表达式的是( B )。

         A. a=a+7;          B. a=7+b+c,a++          C. int(12%4)         D. a=a+7=c+b                             解析:A是语句,不是表达式;B是逗号表达式;C %要求两边对象都必须是整形;D “=”左边不能有表达式,给表达式是不能赋值的

  5. 下列叙述中正确的是( D)

    A.每个C程序文件中都必须要有一个main()函数

    B.在C程序中main()函数的位置是固定的

    C.C程序中所有函数之间都可以相互调用,与函数所在位置无关

    D.在C程序的函数中不能定义另一个函数                                                                                   解析:每一个C程序中都必须有且只有一个main()函数,但一个C程序可以由多个程序文件组成,所以并非每个C程序文件中都必须要有一个main()函数,故选项A)不正确。C语言并未对main()函数的位置作要求,因此选项B)也是错误的。C语言中,在一个函数被调用之前一定要先声明该函数,所以定义靠后的函数若在前面没有声明该函数的原型,是不能被定义靠前的函数所调用的,即函数之间的调用并非与函数所在位置无关,所以选项C)不正确。故本题的正确答案应该为选项D)。

  6. 下面各语句行中, 能正确进行赋字符串操作的语句行是( C)

       A.char st[4][5]={"ABCDE"};

       B.char s[5]={'A','B','C','D','E'};

       C.char *s;  s="ABCDE";

       D.char *s;  scanf("%s",s);                                                                                                        解析:A不用说了.
    B是一个合法的“字符数组”初始化语句,但是不是一个正确的“字符串”赋值语句,因为字符串要求最后有字符串结束标志'\0'.
    C对."ABCDE"是一个字符串常量,它存储在静态数据区中.
    D不对.这个语句跟下面这种情况类似:
    int *p;
    scanf("%d", p);
    p是一个野指针,不能直接往p指向的内存空间中输入数据.对于这个题目来说,只能用:
    char s[10];
    scanf("%s", s);这种操作.

三、判断题

  1. 函数的声明包括函数头和函数体两部分。(F解析:函数的声明包括函数头和分号两部分。

  2. 在定义数组时,数组长度可以为变量,只要变量中有确定的值就可以。(F) 解析:数组长度不可以为变量

  3. C语言标准输入操作中,gets()函数一次只能读取一个字符。(F

  4. 运算符*为间接访问运算符,后跟一个指针变量,表示取这个指针变量所指向的变量的值。(T解析:*值  &地址

  5. 在C程序中,除了主函数外,任何一个函数都不能独立地在程序中存在。(T

  6.  C程序是由函数组成的,函数是由语句组成的。(F解析:一个程序由一个或多个源程序文件组成

  7. 可以在一个函数中定义另一个函数。(F解析:C语言只允许在函数中声明和嵌套调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值