判断
一 : 什么是判断?
根据比较的结果,决定做,还是不做某些动作,这个过程就要用到if语句。
一个基本的if语句的开头需要关键字if,跟上后一个小括号(),括号里是一个表示条件的逻辑表达式,然后是一对大括号“{}”之间的条件语句。如果表示条件的逻辑表达式结果为true,那么就执行后面大括号“{}”里面的语句,否则这些语句不执行,而继续执行下面的其他语句。
例如:
#include<stdio.h>
int main()
{
int hour1, minute1;
int hour2, minute2;
scanf_s("%d %d", &hour1, &minute1);
scanf_s("%d %d", &hour2, &minute2);
int ih = hour2 - hour1;
int im = minute2 - minute1;
if (im < 0) {
im = +60;
ih--;
}
printf("时间差为%d小时%d分钟,\n", ih, im);
return 0;
}
演示
1 20
3 40
时间差为2小时20分钟,
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 25504)已退出,代码为 0。
按任意键关闭此窗口. . .
二:作比较
根据事先制定的规则做出判断,是计算机的基本能力。
能做判断的基础,是能对数据做比较,比较就是关于两个数据是否相等,谁大谁小,这需要用到关系运算:对两个数据之间的关系的计算。
在C语言中提供了六个关系运算符:
== 等于
!=不等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
注意
==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。
三:判断条件
条件:关系运算,比较运算
关系运算:计算两个值之间的关系
关系运算的结果:当两个值符合关系运算符的规范时,关系运算的结果整数为1,否则为整数0.
例如:
#include<stdio.h>
int main()
{
printf("%d\n", 2 == 5);
printf("%d\n", 2 >= 5);
printf("%d\n", 2 <= 5);
return 0;
}
结果:
0
0
1
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 18948)已退出,代码为 0。
四:优先级
算数运算>关系运算>赋值运算
例如
#include<stdio.h>
int main()
{
printf("%d", 7 >= 2 + 3);
return 0;
}
结果
1
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 22552)已退出,代码为 0。
按任意键关闭此窗口. . .
注意
判断是否相等的 == 和 !=的优先级比其他的低,连续的关系运算符时从左到右进行的。
例如
#include<stdio.h>
int main()
{
printf("%d\n", 5>3 == 2>1);
printf("%d", 6 > 5 > 4);
return 0;
}
结果
1
0
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 17244)已退出,代码为 0。
按任意键关闭此窗口. . .
五:if else语句
if else后面可以没有”{}“,而是一条语句。但是为什么强调if和else后面要加{}?
是为了强调语句的执行,不加大括号, 默认执行if()后面的第一条语句或者else后面的第一条语句。如果就是只有一条语句,那不加也没关系。如果有多条语句要执行,那这些语句必须包含在大括号里面。
例如
#include<stdio.h>
int main()
{
int price = 0;
int bill = 0;
printf("请输入金额:");
scanf_s("%d", &price);
printf("请输入票面:");
scanf_s("%d", &bill);
if (bill > price) {
printf("找您%d元", bill - price);
}else { printf("你的钱不够"); }
return 0;
}
结果
请输入金额:1
请输入票面:200
找您199元
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 23800)已退出,代码为 0。
循环
一:什么是循环
f语句可以判断条件是否满足,满足时才做相应的动作,而循环语句可以在满足条件时,不断地重复执行一些动作.
重复执行的语句(循环语句)可以多次执行其他语句,它检查一个逻辑条件是否满足,只在满足的时候执行它的循环体。
二:while语句
while语句是一个循环语句,它会首先判断一个条件是否满足,如果条件满足,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号,就是循环体。
例如:
#include<stdio.h>
int main()
{
int x;
int n=0;
printf("请输入一个数:");
scanf_s("%d", &x);
while(x>0)
{
n += 1;
x /= 10;
printf("x=%d n=%d\n", x, n);
}
printf("位数为%d", n);
return 0;
}
结果·
请输入一个数:320
x=32 n=1
x=3 n=2
x=0 n=3
位数为3
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 28280)已退出,代码为 0
三:do while语句
do-while循环和while循环很像,唯一的区别是我们在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。
例如
#include<stdio.h>
int main()
{
int x;
int n=0;
printf("请输入一个数:");
scanf_s("%d", &x);
do {
n += 1;
x /= 10;
}
while (x > 0);
printf("位数为%d", n);
return 0;
}
结果
请输入一个数:521
位数为3
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 27064)已退出,代码为 0。
四:for循环
因为for循环不符合人类的语言逻辑,并不易于理解,因此就造成了第一次接触语言的人难以理解for循环所表达的意思。而现代程序设计理念更强调与人类语言的逻辑统一性而非编译逻辑。因此在新兴的python语言中去除了C中的for循环逻辑。C 的整体设计过于面向机器指令,C 风格的 for 语句,在面对应用开发时,细节过多,抽象不足,部分场景下易出错,易导致开发成本上升,易导致可读性差。对于精心设计的、带有抽象设计的 for 语句(包括 foreach 等),可以满足几乎所有 C 语言 for 语句的功能,并且有更好的体验、更好的可读性、更少的出错机会,甚至促使我们写出更好的性能。
例如
#include<stdio.h>
int main()
{
int x;
int fact = 1;
printf("请输入一个数:");
scanf_s("%d",&x);
int i = 1;
for (i = 1; i <= x; i++) { fact *= i; }
printf("%d的阶乘为%d", x, fact);
return 0;
}
结果
请输入一个数:10
10的阶乘为3628800
C:\Users\86132\Desktop\C语言\判断与循环\x64\Debug\判断与循环.exe (进程 10536)已退出,代码为 0。
打字好累,多多支持