C语言程序设计CAP——C语言学习笔记(三)上

第三章 判断

3.1 判断

做判断

例:计算时间差

	int hour1, minute1;
	int hour2, minute2;

	scanf("%d %d", &hour1, &minute1);
	scanf("%d %d", &hour2, &minute2);

输入两个时间,每个时间输入小时和分钟,然后输出两个时间的差值,输出也为小时和分钟,可是如果两个时间段分别为1:40和2:20就会出现结尾的情况,那么我们如何计算这两个时间差呢?

如果

1、先用分别减的方案,然后判断有没有出现借位的情况;

2、出现借位就是两个分钟的差值小于0。

int im = minute2 - minute1
if(im < 0){
    ......
}

所以上面计算时间差的例子应该这么写

	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<0,那么
    im = 60 + im;
    ih --;
}

    printf("时间差为%d小时%d分。\n" ,ih, im);

如果

if(条件成立){
    ......

}

判断的条件

条件

· 计算两个值的关系,叫关系运算

 关系运算的结果

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

· printf("%\n", 5==3);

· printf("%\n", 5<3);

· printf("%\n", 5>=3);

优先级

·所有关系运算符的优先级都比算数运算符的优先级低,但是比赋值运算高

· 12 >=6+6

· int a = a > 0

· 判断是否相等的==和!=优先级比其他的低,而连续的数值运算是从左至右的顺序计算的

· 5 > 3 == 6>4

· 6>5>4

· a==b>0

注释

1、单行注释:
语法://注释的内容 
功能://符号右边的一行内容被编译器忽略(按了回车才算换行) 
快捷键:Command + /     再次执行取消注释
2、多行注释:
语法:/*   注释的内容   */
或者
/*
注释的内容
*/
功能:/* */符号里面的所有内容都被编译器忽略


· 解释某一条语句的时候就用单行注释
· 解释一段程序的时候用多行注释
 

例:找零计算

#include <stdio.h>

int main()
{
	//	初始化
	int price = 0;
	int bill = 0;

	//	读入金额和票面
	printf("请输入金额:");
	scanf("%d", &price);
	printf("请输入票面:");
	scanf("%d", &bill);

	//	计算找零
	printf("应该找您:%d\n", bill - price);

	return 0;
}

判断票面够不够

#include <stdio.h>

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

	return 0;
}

不够怎么办

画流程图

#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;
}

 

 否则的话(else)

#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;
}

例:比较数的大小

#include <stdio.h>

int main()
{
	int a,b;

	printf("请输入两个整数:");
	scanf("%d %d", &a, &b);
	
	int max = b;
	if ( a > b ) {
		max = a;
	}

	printf("大的那个是%d\n", max);

	return 0;
}


或者

#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;
}

if语句

一、if(…) {…}
1.一般形式:
if (表达式) {语句;}

表达式:
a,用非 0 值表示真,用 0 表示假;
b,if(flag) 相当于 if(1==flag)
c,浮点数无法与 0 比较,只能用近似的值比较;

2.用于单分支选择结构;
3.如含有交叉关系,使用并列的if语句;
 

二、if(…) {…} else {…}

  1. 一般形式:if(表达式) {语句1; } else { 语句2;}
  2. 用于双分支控制的条件语句;
  3. 用于非此即彼的关系时;

三、if(…) {…} else if(…) {…} … else if(…) {…} else {…}

一般形式:
if(表达式1) { 语句1;}
else if(表达式2) {语句2;}

else if(表达式n){语句n;}
else{语句n+1;}

用于多分支的控制的条件语句;
例:

计算薪水

#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;
}

判断成绩

#include <stdio.h>

int main()
{
	const int PASS=60;
	int score;

	printf("请输入成绩: ");
	scanf("%d", &score);
	
	printf("你输入的成绩是%d.\n", score);
	if ( score < PASS )
		printf("很遗憾,这个成绩没有及格。");
	else {
		printf("祝贺你,这个成绩及格了。");
		printf("再见\n");
	}

	return 0;
}

思考题:

一、为什么强调if和else后面要用{}

  1. 大括号能帮助我们去理解代码更好的观看代码

  2. 分开与else执行语句的工具

  3. 限定if内的执行语句和else的执行语句

  4. 增加可读性

  5. 减少出错率

二、/* */会被替换为什么?

是空格

#include<stdio.h>

int main()

{

    printf("test\n");

    

    return/**/0;

}

这个程序可以正常编译

去掉/**/,则不能编译,显示return0错误

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值