最近工作着实是有点忙,拖更了一阵子。其实中间想过放弃这个系列,但是想了一下多少还是要坚持下去,毕竟下了班不打游戏干一件有意思的事情还是很有挑战的。下面进入第七章的学习内容了,这章内容主要是判断语句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℃以下的温度并单独统计相应的天数。其中这个程序看似简单但也是有些细节要着重强调的:

  1. while循环的测试条件利用scanf()的返回值来结束循环,因为scanf()在读到非数字字符时会返回0。
  2. temperature的类型是float而不是int,这样程序既可以接受温度低于0度和-3.6这种温度值。
  3. 该程序的第十九行中为避免整数除法,该程序示例把计算后的百分比强制转换为float类型。

if语句在这个程序中的结构和while语句很相似,它们的主要区别是:如果满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。

1.1,if else语句

简单形式的if语句可以让程序选择执行一条语句,或者跳过这条语句。C还提供了if else形式,在两条语句之间作选择。

我们用if else形式来举例上述程序中纯if部分:

c语言入门系列13(C语言学习笔记系列)(1)

单纯if使用方式

如果程序发现days不等于0,那么它应该知道另一种情况一定是days等于0。所以如果单纯使用if下边的还需要在判断测试一次就很没有必要了。修改如下:

c语言入门系列13(C语言学习笔记系列)(2)

引入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");

2,getchar()和putchar()

之前在第一章学习到的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序列中的下两个字符”。

输出结果如下:

c语言入门系列13(C语言学习笔记系列)(3)

3,总结

本章主要是学习了if和if else的用法同时又加入了getchar()和putchar()的简单介绍,由于最近工作实在是有点忙的不可开交(工作部门变动需要交接原部门的工作)。所以拖更了一阵子,下个月还有两场职称考试,都与编程无关的考试。。。尽量保持不拖更吧。时间精力有限,尽量提升阅读体验吧,发现想写的简单,但是又觉得写的简单了又不好让读者读懂。如有不足或有疑问欢迎各位大佬们指正,同时也希望非IT专业的小白们能感受到C语言的魅力所在。如果对你有帮助的话点赞收藏哦!


[1] 《C Primer Plus》

,