a在c语言中是什么意思(C语言学习笔记系列)
第五章学习极少了表达式以及运算符,语言意思C语言学浅尝使用了一次循环(while)。习笔写完之后发现阅读量不高,记系找下自己原因可能是语言意思C语言学有点过于啰嗦了吧。
那第六章就直接开始啦!习笔正式进入到学习循环阶段。记系C语言中循环只有三种——for、语言意思C语言学while、习笔do while,记系还是语言意思C语言学比较好记住的,但是习笔用法需要注意。
学习参考书籍《C Primer Plus》
1,记系While循环在第五章的语言意思C语言学时候已经简单介绍和使用了While循环,下边程序做了一个求和运算(整型运算),习笔结束循环使用的记系是利用scanf()的返回值来结束循环。
#include <stdio.h>int main(void){ long num; long sum = 0L; //首先声明sum初始值设置为0,此处使用了long类型(0L) int status; printf("Please enter an integer to be summed "); printf("(q to quit): "); status = scanf("%ld", &num); while (status == 1) //使用了==运算符号,这个是真的等于号。 { sum = sum + num; printf("Please enter next integer (q to quit): "); status = scanf("%ld", &num); } printf("Those integers sum to %ld.\n", sum); return 0;}上述程序中使用了==符号,在之前篇章中强调了很多次关于“=”是赋值的意思。其次在使用sum声明类型中使用long类型是为了存储更大的整数,所以将sum初始化为0L(long类型的0),而不是0(int类型的0)。程序结果如下:
Please enter an integer to be summed (q to quit): 44Please enter next integer (q to quit): 336Please enter next integer (q to quit): qThose integers sum to 435.这个循环程序是根据测试条件status ==1,只要status等于1,循环就会重复。每次循环,num的当前值都被加到sum上,这样sum的值始终是当前整数之和。当status的值不为1时,循环结束。这个程序有意思的就在于status的值是怎么变化的:
1,如果scanf()成功读取一个整数,就把该数存入num并返回1,随后返回值将被赋给status(注意,用户输入的值存储在num中,不是status中)。这样做同时更新了num和status的值,while循环进入下一次迭代。
2,如果用户输入的不是数字(如,q或者任何其他字符),scanf()会读取失败并返回0。此时,status的值就是0,循环结束。
上述方式比较费脑子,其实有简单的办法退出循环也就是在循环中添加代码,例如每次循环时询问用户“是否继续循环?<y/n>”,然后判断用户是否输入y。这个办法虽然有点蠢,但Linux以及很多网络设备中仍然使用这种方法选择是否进入下一步。
自制流程图
因此总结来看while循环是入口条件循环,程序在进入循环体之前必须获取输入的数据并检查status的值(作为一种条件),所以在while前面要有一个输入并且不一定是scanf。要让循环继续执行,在循环内需要一个读取数据的语句,这样程序才能获取下一个条件的值。
1.1,终止循环(while)while循环有一点非常重要:在构建while循环时,必须让测试表达式的值有变化。否则,循环就不会终止(会让程序一直循环下去直到计算机卡死)。
1.2,入口条件循环在1.2中总结描述了while需要入口在才能进行循环操作,也就是所谓“有条件”指的是语句部分的执行取决于测试表达式描述的条件,如(a < 6)。所以在日常使用中可以使用C语言中的运算关系来进行使用条件(类似大于、小于、等于、不等于、不大于等于等等)。
2,for循环for循环与while循环中的三个行为写在了一起;
for (size_t i = 0; i < count; i++)
for循环的第1行包含了循环所需的所有信息:i的初值,i的终值(循环的出口条件)和每次循环i的增量。
用下边的程序来举例让大家更简单认识for循环:
#include <stdio.h>int main(void){ int i; for (i = 0; i < 11; i++) printf("%d seconds!\n", i); return 0;}下面程序的运行结果:
输出结果
这个程序每次对i进行累加,累加到10后退出for循环。
当然for的写法还有很多,比如下面的写法:
#include <stdio.h>int main(void){ int x; int y = 0; for (x = 0; y <= 75; y = (++x * 5) + 50) printf("%10d %10d\n", x, y); return 0;}该循环打印x的值和表达式++x * 5 + 50的值,程序的输出如下:
输出结果
所以for语言的写法相对简便,for语句是一种入口条件循环,即在执行循环之前就决定了是否执行循环。
3,do while循环while循环和for循环都是入口条件循环,即在循环的每次迭代之前检查测试条件,所以有可能根本不执行循环体中的内容。C语言还有一种条件循环,即在循环的每次迭代之后检查测试条件,至少执行循环体中的内容一次。
这种循环被称为do while循环,通用的表达式为以下公式:
do statementwhile ( expression );do while循环在执行完循环体后才执行测试条件,所以至少执行循环体一次;而for循环或while循环都是在执行循环体之前先执行测试条件。do while循环适用于那些至少要迭代一次的循环。
4,选择一个适用的循环首先,确定是需要入口条件循环还是出口条件循环。通常,入口条件循环用得比较多,有几个原因。其一,一般原则是在执行循环之前测试条件比较好。其二,测试放在循环的开头,程序的可读性更高。另外,在许多应用中,要求在一开始不满足测试条件时就直接跳过整个循环。
这就是为什么需要在讲do while时候用的篇幅较小,主要讲解for和while。
一般而言,当循环涉及初始化和更新变量时,用for循环比较合适,而在其他情况下用while循环更好。对于下面这种条件,用while循环就很合适:
while (scanf("%ld", &num) == 4)
对于涉及索引计数的循环,用for循环更适合。例如:
for (count = 0; count <= 200; count++)
所以个人建议是while与for学号走遍天下!
5,总结本章主要是讲解循环的知识内容,本来打算适用两章来讲,但想了一下不要写得过于分散,增加学习阅读体验。在C语言中使用循环特别注意的三点内容:
注意循环的测试条件要能使循环结束。
确保循环测试中的值在首次使用之前已初始化。
确保循环在每次迭代都更新测试的值。
时间精力有限,尽量提升阅读体验吧,发现想写的简单,但是又觉得写的简单了又不好让读者读懂。如有不足或有疑问欢迎各位大佬们指正,同时也希望非IT专业的小白们能感受到C语言的魅力所在。如果对你有帮助的话点赞收藏哦!嘿嘿
[1] 《C Primer Plus》