c语言学习-近期错题整理

文章详细解析了多道编程题目,涉及switch-case结构中的break使用,逻辑条件判断,八进制计算,命名规则,编译问题,字符类型,逻辑运算符的优先级,sizeof运算符的应用,do-while循环及逗号运算符在if语句中的作用。
摘要由CSDN通过智能技术生成

第一题:

解析:

        这道题考的是switch-case里加上break,i的起始值是4,每一轮都增加1,离开循环前的最后一次i是8 刚好整除,然后再进行i++,所以选B,而不是D。

第二题:

 解析:

        这道题的错误是犯在一开始没读懂题目,在if条件里,右侧的1永远是ture,所以想要成立是看x,x只要不是0,那么逻辑是真的,所以选D

第三题: 

 解析:

                八进制的计算,算错了不应该的。选A

第四题:

解析:

        本质和第2题是一样的,在while的条件中,只有条件为ture才执行,所以相当于!e==ture==1,!是非的意思,也就是e==false==0,所以选A,纠结e是啥去了。

 第五题:

 解析:

        命名的要求:不能以数字开头,只能用数字、字母、下划线,不能和已有的字重合,所以选B

第六题:

 解析:

        i是没有被初始化,但是是可以通过编译的,只有j被赋值了,我一开始是想的,值是不确定被赋给谁了,所以选了不能通过,答案是C

第七题:

解析:

        char的空间是1个字节,可以容纳-1的。所以选D

 第八题:

 解析:

        在&&符号里,前一个为0 就不判断后一个了,y=2不被执行,所以y=0

第九题:

解析;

        sizeof是静态运算符,也就是i++不会被执行,所以i是10

第十题: 

 解析:

        10/4*4实际上是先进行了整数除法10/4,得到的结果是2,然后再乘以4,最终得到的结果是8。因为整数除法只保留整数部分,所以得到的结果也是整数。在将结果强制转换为double类型之前,已经得到了整数8,所以转换后还是8。若想得到8.0,可以将10或4中的一个改成10.0或4.0,使得整个表达式中至少有一个操作数是浮点数,这样就会得到浮点数8.0。例如(double)(10.0/44)就会得到8.0。

        这段解析是我去问了chitGPT得到的 别说 还挺香的 有些点可以解释的很清晰。

第十一题:

解析:

        先判断i%2结果是0或者1,为1的时候条件为真,为0的时候条件为假:具体代码和运行如下(注意在y的赋值里,其实i是上一行i++后的产物,然后再进行i++;且由于x+=i用的是, 所以,If条件是在i++那里结束的):

         如果还不理解,可以用debug观察,或者纸面演练。

        在if语句里x +=i,这里的,起到分隔作用,实现在一条语句里执行多个操作。可以在没有大括号的情况下,避免if条件语句的内容遗落。

#include <stdio.h>

int main() {
    int i,x,y;	
    i=x=y=0;
    do {
	    ++i;
	    if ( i%2 ) 
		    x+=i, 
	    i++;
	    y +=i++;
    } while ( i<=7 );
    printf("%d %d %d", i, x, y);
    
    return 0;
}

第十二题:

解析:

        #include是编译预处理指令,不是C语言的成份。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值