三.判断与循环

3.1判断

根据比较的结果,决定做、还是不做某些动作,就要用到if语句。
一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果为true,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句。

计算时间差

int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&hour1);
scanf("%d %d",&hour2,&hour2);
int ih=hour2-hour1;
int im-minute2-minure1;
if(im<60){
	im=im+60;
	ih--;
	}
printf("时间差是%d小时%d分。\n",ih,im);

如果
if(条件成立){
~
}

计算两个值之间的关系,所以叫关系运算
在这里插入图片描述
关系运算结果
当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0

优先级
所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高。
int r=a>0;
判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的

5>3 == 6>4

找零计算器

//初始化
int price=0;
int bill=0;
//读入金额和票面
printf("请输入金额:");
scanf("%d",&price);
printf("请输入票面:");
scanf("%d",&bill);
//计算找零
printf("应该找您:%d\n",bill-price);

注释(comment)插入在代码中,用来向读者提供信息。它们对于程序的功能没有任何影响,但是往往能使得程序更容易被人类读者理解。
// C99单行注释
/**/延续数行的注释

判断票面够不够

//初始化
int price=0;
int bill=0;
//读入金额和票面
printf("请输入金额:");
scanf("%d",&price);
printf("请输入票面:");
scanf("%d",&bill);
//计算找零
if(bill>=price){
	printf("应该找您:%d\n",bill-price);
}

不够怎么办

//初始化
int price=0;
int bill=0;
//读入金额和票面
printf("请输入金额:");
scanf("%d",&price);
printf("请输入票面:");
scanf("%d",&bill);
//计算找零
if(bill>=price){
	printf("应该找您:%d\n",bill-price);
}else{
	printf("你的钱不够\n");

if语句
一个基本的if语句由一个关键字if开头,跟上在括号里的一个表达条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果不是零,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句。

if语句这一行结束的时候并没有表示语句结束的“;”,而后面的赋值语句写在if的下一行,并且缩进了,在这一行结束时有一个表示语句结束的“;”。这表明赋值语句是if语句的一部分,if语句拥有和控制这条赋值语句,决定是否被执行。

3.2循环

if语句可以判断条件是否满足,满足时才做相应的动作,而循环语句可以在满足条件时,不断地重复执行一些动作。

重复执行的语句(循环语句)可以多次执行其他语句,它检查一个逻辑条件是否满足,只在满足的时候执行它的循环体。

while语句是一个循环语句,它会首先判断一个条件是否满足,如果条件满足,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号,就是循环体。

do-while循环和while循环很像,唯一的区别是我们在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。

判断几位数

int x;
int n=1;
scanf("%d",&x);
if(x>999){
	n=4;
}else if(n>99{
	n=3;
}else ifn>9{
	n=2;
printf("%d",n);
int x;
int n=0;
scanf("%d",&x);
n++;
x/=10;
while(x>0){
	n++;
	x/=10;
}
printf("%d",n);

循环体内要有改变条件的机会

while循环
当条件满足是,不断地重复循环体内的语句。
看程序运行结果
人脑模拟计算机的运行,在纸上列出所有的变量,随着程序的进展不断重新计算变量的值,
当程序运行结束时,留在表格最下面的就是程序的最终结果。

int x;
int n=0;
scanf("%d",&x);
while(x>0){
	n++;
	x/=10;
}
printf("%d",n);
//处理不了n=0的问题

调试程序
测试程序经常使用边界数据,如有效范围两端的数据、特殊的倍数等
在程序适当的地方插入printf来输出变量的内容

数位数的算法
1.用户输入x;
2.初始化n为0;
3.x/=10,去掉个位;
4.n++;
5.如果x>0,回到3;
6.否则n就是结果

do-while循环
在进入循环的时候不做检查,而是在执行完一轮循环体的代买之后,再来检查循环体的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环
do{
<循环体语句>
while(<循环条件>);

两种循环
do-whlile循环和whlile循环很像,区别是在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与whlile循环相同的是,条件满足是循环执行,条件不满足时循环结束。

int x;
int n=0;
scanf("%d",&x);
do{
	n++;
	x/=10;
} while(x>0)printf("%d",n);

while(x>0);结尾要有“;”

阶乘

int n;
scanf("%d",&n);
int fact=1;
int i=1;
while(i<=n){
	fact*=i;
	i++;
}
printf("%d=%d\n",n,fact);
int n;
scanf("%d",&n);
int fact=1;
int i=1;
for(i=1;i<=n;i++){
	fact*=i;
}
printf("%d=%d\n",n,fact);

for循环
for循环像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值一一定步进进行调整,比如加1或者减1
for(i=0;i<5;i++){
printf("%d",i);
}

for=对于
对于一开始的~,当 ~时,重复做循环体,每一轮循环在做完循环体内语句后,使得count–
循环变量i只在循环里被使用了,在循环外面它没有任何用处,因此写到for语句里面去

int n;
scanf("%d",&n);
int fact=1;

for(int i=1;i<=n;i++){
	fact*=i;
}//C99支持
printf("%d=%d\n",n,fact);

try
for(i=2;i<=n;i++)
for(i=n;i>1;i–){
fact*=i;
}

int n;
scanf("%d",&n);
int fact=1;
int i=n;
for(n>1;i--){//可以省掉一个的
	fact*=n;
}
printf("%d=%d\n",i,fact);

循环的计算和选择
for(i=0;i<n;i++)
则循环次数是n,而循环结束以后,i的值是n。循环的控制变量i,是选择从0开始还是从1开始,是判断i<n还是i<=n,对循环的次数,循环结束后变量的值都有影响

for循环
for(初始动作;条件;每轮的动作){
循环体
}
for中的每一个表达式都是可以省略的
for(;条件:)==while(条件)
在这里插入图片描述
tips for loops
如果有固定次数,用for
如果必须执行一次,用do_while
其他情况用while

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值