C语言基础题目&易错点

文章通过四道编程题讨论了C语言中代码执行顺序、变量赋值的重要性以及ifelse语句的使用。第一题对比了赋值运算与输入赋值的顺序影响;第二题展示了简单的ifelse分支判断IQ高低;第三题用取模运算判断整除;第四题则指出ifelse语句语法细节对程序运行的影响。强调了C语言的语法严谨性和对细节的高要求。
摘要由CSDN通过智能技术生成

第一题

        下面对此题给出的两种代码

#include <stdio.h>

int main() 
{
    int a=0;
    int b=0;
    int c=a/b;
    int d=a%b;
    scanf("a b",&a,&b);
    printf("%d %d",c d);
    return 0;
}
#include <stdio.h>

int main() 
{
    int a=0;
    int b=0;
    scanf("a b",&a,&b);
    int c=a/b;
    int d=a%b;
    printf("%d %d",c d);
    return 0;
}

        很显然第一种代码并不能正常执行,要想理解原因,首先需理解代码的运行方式

        第一段代码前二句先对整形a,b赋值初始化,三四句根据a,b的初始值求得c,d后,由scanf函数再次对a,b进行赋值,随之打印之前计算的c,d。可见c,d的值并非由scanf函数输入值决定,而是在输入前便已运算。

        第二段代码看似仅改变了两行代码的顺序,实际上已满足题目要求。首先仍为对整形a,b赋值初始化,之后由scanf函数再次对a,b赋值,随后由运算语句对正确赋值的a,b进行运算,最终达到预期效果。

        由此总结:要熟知代码运行顺序,正确赋值变量,赋值要在运算前!

第二题

        本题可由简单分支语句完成,分为智商大于等于140和小于140,输入整形进行判断后,分别有printf函数输出不同结果,代码如下

#include <stdio.h>

int main()
{
    int IQ = 0;
    scanf("%d", &IQ);
        if (IQ >= 140)
            printf("Genius");
        else
            printf("SB");
    return 0;
}

        本题考查if else分支语句的应用,因过于简单不做赘述

第三题

        对于是否能整除类的问题,主要考察算数操作符“取模”(%)的使用,若无余数则为整除,否则反之,此处产生的二向分支仍可由上述if else语句实现,代码如下

int main()
{
    int a = 0;
    int b = 0;
    b=a % 5;
    scanf("%d", &a);
    if (b == 0)
        printf("YES");      
    else
        printf("NO");
    return 0;
}

第四题

        对本题暂先不做分析,给出如下四种代码

代码1:

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	{
		if (a == b)
			printf("%d=%d", a, b);  
		else if (a < b)
			printf("%d<%d", a, b);
		else (a > b)
			printf("%d>%d", a, b);
	}
	return 0;
}

代码2:

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	{
		if (a == b)
			printf("%d=%d", a, b);
		else if (a < b)
			printf("%d<%d", a, b);
		else (a > b);
			printf("%d>%d", a, b);
	}
	return 0;
}

 代码3:

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	{
		if (a == b)
			printf("%d=%d", a, b);
		else if (a < b)
			printf("%d<%d", a, b);
		else
			printf("%d>%d", a, b);
	}
	return 0;
}
​

 代码4:

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	{
		if (a == b)
			printf("%d=%d", a, b); 
		else if (a < b)
			printf("%d<%d", a, b);
		else if (a > b)
			printf("%d>%d", a, b);
	}
	return 0;
}
​

         四段代码经调试可知,第一段代码无法运行,第二段代码运行结果为:“3<43>4”,第三、四段代码则可正常运行

        四者间唯一差异体现在最后的else语句,可见一句代码即可影响整段代码的正常运行。C语言的语法之严谨,对细节要求之严格,是每位初学者应该用心掌握的

       至于四者的差异,主要在if、if else、else分支语句的语法与使用上,对此将在下篇文章中予以说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的学术奴才\n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值