c语言入门系列13(C语言学习笔记系列)
最近工作着实是有点忙,拖更了一阵子。其实中间想过放弃这个系列,但是想了一下多少还是要坚持下去,毕竟下了班不打游戏干一件有意思的事情还是很有挑战的。下面进入第七章的学习内容了,这章内容主要是判断语句if和else的使用,中间还会穿插一下跳转的概念。
学习参考书籍《C Primer Plus》
1,if语句 复习前章内容单独从英语的角度来讲if就是“如果”的意思,应用到C语言也是如此,先来一个简单的程序(虽然看着有点长);以下程序都是由之前所需要的知识,大家来简单学习看一下,运用了声明变量的整型与浮点型,运用了while循环,以及声明变量 等;
#include <stdio.h>
#define FREEZING 0 // freezing temperature
int main(void)
{
float temperature;
int cold_days = 0; // number of days below freezing
int days = 0; // number of days entered
printf("Enter the list of daily low temperatures.\n");
printf("Use Celsius, and enter q to quit.\n");
while (scanf("%f", &temperature) == 1)
{
days ; // count the days
if (temperature < FREEZING)
cold_days ; // count the cold days
}
if (days != 0) // avoid division by zero
printf("%d days total: %.1f%% were below freezing.\n",days, 100.0 * (float) cold_days / days); // print the result
if (days == 0)
printf("No data entered!\n");
return 0;
}
程序中的循环通过scanf()读入温度值。while循环每迭代一次,就递增计数器增加天数,其中的if语句负责判断0℃以下的温度并单独统计相应的天数。其中这个程序看似简单但也是有些细节要着重强调的:
- while循环的测试条件利用scanf()的返回值来结束循环,因为scanf()在读到非数字字符时会返回0。
- temperature的类型是float而不是int,这样程序既可以接受温度低于0度和-3.6这种温度值。
- 该程序的第十九行中为避免整数除法,该程序示例把计算后的百分比强制转换为float类型。
if语句在这个程序中的结构和while语句很相似,它们的主要区别是:如果满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。
1.1,if else语句简单形式的if语句可以让程序选择执行一条语句,或者跳过这条语句。C还提供了if else形式,在两条语句之间作选择。
我们用if else形式来举例上述程序中纯if部分:
单纯if使用方式
如果程序发现days不等于0,那么它应该知道另一种情况一定是days等于0。所以如果单纯使用if下边的还需要在判断测试一次就很没有必要了。修改如下:
引入if else使用方式
在使用if和else之间执行多条语句,必须用花括号把这些语句括起来成为一个“块”。下面的代码结构违反了C语法,因为在if和else之间只允许有一条语句(简单语句或复合语句):
if (y > 0)
printf("y:\n");
y ;
else //程序将会报错
printf("y <= 0 \n");
报错的原因是编译器把printf()语句视为if语句的一部分,而把x ;看作一条单独的语句,它不是if语句的一部分,编译器发现else并没有所属的if所以程序就会报错。
if (y > 0)
{
printf("y:\n");
y ;
}
else
printf("y <= 0 \n");
之前在第一章学习到的getcher();只是单纯用来点击编译文件使得程序可以停留。下面来详细学习一下使用:
下面的语句读取下一个字符输入,并把该字符的值赋给变量cy:
cy = getchar();其实等效为:scanf("%c", &cy);
putchar()函数打印它的参数。
putchar(cy);其实等效为:printf("%c", cy);
由于这些函数只处理字符,所以它们比更通用的scanf()和printf()函数更快、更简洁。特别注意getchar()和putchar()不需要转换说明,因为它们只处理字符。
下边我们来学习一个程序看下函数的具体实践使用:
#include <stdio.h>
#define SPACE ' ' // that's quote-space-quote
int main(void)
{
char ch;
ch = getchar(); // read a character
while (ch != '\n') // while not end of line
{
if (ch == SPACE) // leave the space
putchar(ch); // character unchanged
else
putchar(ch 2); // change other characters
ch = getchar(); // get next character
}
putchar(ch); // print the newline
return 0;
}
这个程序是把一行输入重新打印出来,但是每个非空格都被替换成原字符在ASCII序列中的下一个字符,空格不变。这一过程可描述为“如果字符是空白,原样打印;否则,打印原字符在ASCII序列中的下两个字符”。
输出结果如下:
3,总结
本章主要是学习了if和if else的用法同时又加入了getchar()和putchar()的简单介绍,由于最近工作实在是有点忙的不可开交(工作部门变动需要交接原部门的工作)。所以拖更了一阵子,下个月还有两场职称考试,都与编程无关的考试。。。尽量保持不拖更吧。时间精力有限,尽量提升阅读体验吧,发现想写的简单,但是又觉得写的简单了又不好让读者读懂。如有不足或有疑问欢迎各位大佬们指正,同时也希望非IT专业的小白们能感受到C语言的魅力所在。如果对你有帮助的话点赞收藏哦!
[1] 《C Primer Plus》
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com