c语言 初识分支循环语句(学习笔记&易错点)

    生活中的事情都是由分支和循环语句构成的:比如,我要如何上街?走路?坐车?这里出现了分支,即分支语句。又比如我要做作业,那么我就要重复做作业的行为,直到什么时候结束?作业做完为止,或者检查完为止,即循环语句。
 

现在,在c语言中的分支语句如何实现的呢?

     if语句和switch语句

注意到不良好的代码风格会造成不好的影响

1.

 int a = 2;
 if (a == 1)
     if(a == 2)
         printf("错\n");
 else printf("对\n");

如果执行上面这代码,最后是什么结果呢?答案是无输出

这个代码正确的风格应该是

int a = 2;
if (a == 1)
    if(a == 2)
        printf("错\n");
    else printf("对\n");

即:if后面的应该归为一个语句(else和最近的if匹配,{}除外),首先a!=1了,所以直接全部跳过,但是像上面那种代码风格很容易使人联想到

int a = 2;
    if (a == 1)
    { 
        if(a == 2)
            printf("错\n");
    }
    else printf("对\n");

2.

if(a)
    return 0;
return 1;

这个代码是否具有选择结构呢?

是的,假如a为真,那么不会返回两个值吧?注意到返回函数值时说明函数的主体已经执行完了,怎么还能往下执行呢?,这个代码也非常具有误导性,所以,良好的代码风格有如下:

if(a)
    return 0;
else
    return 1;

这样看就非常明显了,不容易误解
注意switch(整型表达式) case 整型常量表达式

现在到了c语言中的循环语句

在c语言中有 while   do while    for三种循环

补充点 注意scanfgetchar的读取方式,它们并不是直接从键盘里读取,而是要经过缓冲区的 而,scanf不能读取 getchar只能读取一个字符
下面一个代码可以尝试弄清这个问题:

#include<stdio.h>
int main()
{
	char a[10], b;
	printf("请输入你的密码:\n");
	scanf("%s", a);
	printf("确定吗?Y/N ");
	/*while ((b = getchar()) != '\n')
	{
		;
	}*/
	b = getchar();
	if (b == 'Y')
		printf("确认成功,正在载入\n");
	else if (b == 'N')
		printf("确认失败,重新输入\n");
	else
		printf("未知错误\n");
	return 0;
}

如果一开始不把/**/去掉,那么随便输入1234,然后敲回车,这个时候电脑通过键盘输入传送到缓冲区(键盘上敲回车才能实现到缓冲区这个步骤),而此时缓冲区上的是1234/n,理所应当,1234给scanf,/n是字符,给b,所以此时会出现你还没选Y/N已经输出未知错误,所以,通过/**/里面的代码对缓冲区里面的空格或者是回车(\n)进行清理,随后便可输入Y/N

我们发现一个while的语句,无非是如下结构
int i = 0;//初始化部分
while(i < 10)//条件部分
{
    i++;//调整部分
}
而一个for语句的括号里面可以把三个语句进行结合
for(初始化部分; 条件部分; 调整部分);

学习过程中的整理的一些自己认为有些重要的知识点,拙见拙见,还请各路大神指点指点(ಥ_ಥ) 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值