1.if语句根据条件选择做与不做
#include <stdio.h>
int main()
{
int hour1, minute1;
int hour2, minute2;
scanf("%d %d", &hour1, &minute1);
scanf("%d %d", &hour2, &minute2);
int ih = hour2 - hour1;
int im = minute2 - minute1;
if ( im <0 ) {
im = 60 + im;
ih --;
}
printf("时间差是%d小时%d分。\n", ih, im);
return 0;
}
2.判断的条件:关系运算
C语言提供了六个关系运算符:
== 相等
!= 不相等
> 大于
>= 大于或等于
< 小于
<= 小于或等于
3.判断,注释,流程图
善用注释和流程图能很好的帮助人们看懂代码。
4.否则的话:如果条件不成立呢?
如果if语句后面的括号后面没有大括号,当条件满足时,只执行if语句后一句的代码。
问:/* */是注释,编译器不管其中的内容。但是有没有想过编译器会把它替换成什么呢?是一个空格?还是不留痕迹?可以写代码来测试你用的编译器吗?
答:在把代码翻译成汇编代码前,还有一个步骤叫预处理。在预处理当中会把注释代码删掉。一条语句前的注释 替换成等长的空格;一条语句中的注释 替换成一个空格;一条语句后的注释 直接删除
5.循环
if语句可以判断条件是否满足,满足时才做相应的动作,而循环语句可以在满足条件时,不断地重复执行一些动作。
重复执行的语句(循环语句)可以多次执行其他语句,它检查一个逻辑条件是否满足,只在满足的时候执行它的循环体。
while语句是一个循环语句,它会首先判断一个条件是否满足,如果条件满足,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号,就是循环体。
do-while循环和while循环很像,唯一的区别是我们在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。
例:数几位数
#include <stdio.h>
int main()
{
int number = 0;
int count = 0;
printf("请输入数字:");
scanf_s("%d", &number);
count++;
number /= 10;
while (number > 0) {
count++;
number /= 10;
}
printf("一共有%d位数", count);
return 0;
}
问:用课程中的那个数数的位数的程序,你能数到多大的数?
答:10位数
要经常去对代码进行验证:尤其是特殊数据。
对代码进行调试可以使用printf来进行检查。
6.do-while循环
do-while语句改善
#include <stdio.h>
int main()
{
int number = 0;
int count = 0;
printf("请输入数字:");
scanf_s("%d", &number);
do {
count++;
number /= 10;
} while (number > 0);
printf("一共有%d位数", count);
return 0;
}
7.for循环
例:算阶层
#include <stdio.h>
int main()
{
int number = 0;
int x = 1;
printf("请输入数字:");
scanf_s("%d", &number);
int y = number;
for (number = number; number > 1; number--) {
x *= number;
}
printf("%d!=%d", y, x);
return 0;
}
问:为什么老师说for循环很怪?
for循环是高级语言出现的第一种循环,它和现代的程序设计理念是否存在差距?为什么Python语言就没有C语言这种形式的for循环了?
答:因为for循环不符合人类的语言逻辑,并不易于理解,因此就造成了第一次接触语言的人难以理解for循环所表达的意思。而现代程序设计理念更强调与人类语言的逻辑统一性而非编译逻辑。因此在新兴的python语言中去除了C中的for循环逻辑。C 的整体设计过于面向机器指令,C 风格的 for 语句,在面对应用开发时,细节过多,抽象不足,部分场景下易出错,易导致开发成本上升,易导致可读性差。对于精心设计的、带有抽象设计的 for 语句(包括 foreach 等),可以满足几乎所有 C 语言 for 语句的功能,并且有更好的体验、更好的可读性、更少的出错机会,甚至促使我们写出更好的性能。