判断与循环

一 . 判断

1.1 做判断:if语句根据条件做还是不做
if(条件成立){

}

#include <stdio.h>
//hour2 > hour1
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分钟。",ih,im);
	
	return 0;
}

1.2 判断的条件:关系运算,作比较的运算符
在这里插入图片描述
注意其中有两个字符的运算符:==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。

#include <stdio.h>

int main()
{
	printf("%d\n",5==3);//0
	printf("%d\n",5>3); //1
	printf("%d\n",5<=3);//0
	printf("%d\n",7>=3+4);//1
}

当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0

关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,表示成立)或false(假,表示不成立)。当两个值的关系符合关系运算符的预期时,关系运算的结果为true,否则为false。

判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
6>5>4 结果是0

1.3 找零计算器:判断,注释,流程图
例1:

#include <stdio.h>

int main()
{
	//	初始化
	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");
	}

	return 0;
}

在这里插入图片描述
例2:

#include <stdio.h>

int main()
{

	const int MINOR = 35;

	int age = 0;

	printf("请输入你的年龄: ");
	scanf("%d", &age);

	printf("你的年龄是%d岁。\n", age);

	if ( age < MINOR ) {
    	printf("年轻是美好的,");
	}

	printf("年龄决定了你的精神世界,好好珍惜吧。\n");

	return 0;
}

在这里插入图片描述
例3:

#include <stdio.h>

int main()
{
	const double RATE = 8.25;
	const int STANDARD = 40;
	double pay = 0.0;
	int hours;
	
	printf("请输入工作的小时数:");
	scanf("%d",&hours);
	printf("\n");
	if (hours > STANDARD)
		pay = STANDARD * RATE + (hours - STANDARD) * (RATE * 1.5);
    else
    	pay = hours * RATE;
    printf("应付工资:%f\n",pay);
    
    return 0;
} 

例4:

#include <stdio.h>

int main()
{
	const int PASS = 60;
	int score;
	
	printf("请输入成绩:");
	scanf("%d",&score);
	
	printf("你输入的成绩是%d \n",score);
	if (score < PASS)
		printf("不及格\n");
	else{
		printf("及格了\n");
		printf("再见"); 
	}
	return 0;
}

例5:

#include <stdio.h>

int main()
{
	int a,b,c;
	scanf("%d %d %d", &a, &b, &c);

	int max = 0;

	if ( a>b ) {
		if ( a>c ) {
			max = a;
		} else {
			max = c;
		}
	} else {
		if ( b>c ) {
			max = b;
		} else {
			max = c;
		}
	}

	printf("The max is %d\n", max);

	return 0;
}

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

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

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

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

2.1 while循环:
如果我们把while翻译作“当”,那么一个while循环的意思就是:当条件满足时,不断地重复循环体内的语句。
循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行;
条件成立是循环继续的条件。
在这里插入图片描述

#include <stdio.h>

int main()
{
	int x;
	int n = 0;
	
	scanf("%d", &x);
	if ( x>0 ) {
		while ( x>0 ){
			n++;
			x /= 10;
		}
	}else{
		n = 1;
	}
	
	printf("%d\n",n);
	return 0;
}

测试程序常使用边界数据,如有效范围两端的数据、特殊的倍数等 --------个位数、10、0、负数

2.2 do while循环
do
{
<循环体语句>
}while(<循环条件>);
在这里插入图片描述
描述:在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环

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

#include <stdio.h>

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

2.3 for循环
在这里插入图片描述
for(初始条件;条件;每轮的动作){
}
for中的每一个表达式都可以省略的
for(;条件;) == while(条件)

#include <stdio.h>

int main()
{
	int n;
	
	scanf("%d", &n);
	int fact = 1;
	
	int i = n;
//	for (i = 1; i <= n; i++){
//		fact *= i;
//	}
	for( ; n>1; n--){
		fact *= n;
	}
	printf("%d!=%d\n",i,fact);
	
	return 0;
}

在这里插入图片描述
for ( count= 10; count>0; count-- )
就读成:“对于一开始的count=10,当count>0时,重复做循环体,每-轮循环”在做完循环体内语句后,使得count–。

做求和的程序时,记录结果的变量应该初始化为0,而做求积的变量时,记录结果的变量应该初始化为1

如果有固定次数,用for
如果必须执行一次,用do_ while
其他情况用while
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值