02 C语言计算
0、编程练习题

#include<stdio.h>
int main(int argc,char const *argv[]){
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%d + %d = %d\n",a,b,a + b);
	printf("%d - %d = %d\n",a,b,a - b);
	printf("%d * %d = %d\n",a,b,a * b);
	printf("%d / %d = %d\n",a,b,a / b);
	return 0;
}

#include<stdio.h>
int main(int argc,char const *argv[]){
	int  height;
	int  foot,inch;
	
	scanf("%d",&height);
	foot = height / 30.48;
	inch = ((height / 30.48) - foot)*12;
	printf("%d %d",foot,inch);
	
	return 0;
}

#include<stdio.h>
int main(int argc,char const *argv[]){
	int t1,t2,t3;
	int h1;
	scanf("%d %d",&t1,&t2);
	t1 = (t1 / 100) * 60 + (t1 % 100);
	t1 += t2;
	h1 = (t1 / 60) * 100;
	t1 = h1 + (t1 % 60);
	printf("%d\n",t1);
}
算法思想:将时间全部转换成60进制再进行加法运算,最后按照格式输出即可

#include<stdio.h>
int main(int argc,char const *argv[]){
	int x,a,b,c,result;
	
	scanf("%d",&x);
	a = x / 100;
	b = x / 10 % 10;
	c = x % 10;
	result = c * 100 + b * 10 + a;
	printf("%d\n",result);
	
	return 0;
}
设计思路:因为明确表面了700输出是7,所以结果一定是一个确定的值,而不是逐个输出。获取每一位的值然后乘以每一位的权重,即可得到结果。

#include<stdio.h>
int main(int argc,char const *argv[]){
	int x;
	scanf("%d",&x);
	printf("%x",x);
	return 0;
}
思路:printf函数%d输出为十进制的整数,%x输出为十二进制的整数。
1、做计算

if语句:满足圆括号里面的条件,会执行大括号里面的语句,否则跳过。
2、条件

1、计算两个值之间的关系,结果只有0和1。
2、关系运算符等级比算数运算符低,比赋值高
3、关系运算符之间自左向右比较,== 和 != 等级较低
3、否则的话
else和if进行匹配,如果if不满足,程序会走向else后面大括号的代码部分。
4、if语句再探
pay.c
#include<stdio.h>
int main(int argc,char const *argv[]){
	const int STANDER = 40;
	const double RATE = 8.25;
	int hours;
	double pay; 
	
	scanf("%d",&hours);
	if(hours > STANDER){
		pay = STANDER * RATE + (hours - STANDER) * RATE * 1.5;
	}else{
		pay = hours * RATE;
	}
	printf("这周薪水为%lf\n",pay);
	
	return 0;
}
if 和 else 后面的大括号可以省略,则如果条件满足,则只会执行后面一条语句。
5、嵌套if语句
max.c
#include<stdio.h>
int main(int argc,char const *argv[]){
	int a,b,c,max;
	scanf("%d %d %d",&a,&b,&c);
	if(a > b){
		max = a;
		if(c > max){
			max = c;
		}
	}else{
		max = b;
		if( c > max){
			max = c;
		}
	}
	printf("max is %d",max);
	return 0;
}
else只会和最近的if语句进行匹配,良好的变成习惯是if/else语句后面都加上大括号。
6、级联的if-else if语句

7、多路分支
switch.c
#include<stdio.h>
int main(int argc,char const *argv[]){
	int type;
	scanf("%d",&type);
	switch(type){
		case 1:
			printf("早上好!\n");
			break;
		case 2:
			printf("中午好!\n");
			break;
		case 3:
			printf("晚上好!\n");
			break;
		default:
			printf("啊?干嘛啊?\n");
			break;
	}
	return 0;
}

#include<stdio.h>
int main(int argc,char const *argv[]){
	int grade;
	scanf("%d",&grade);
	switch(grade/10){
		case 10:
		case 9:
			printf("A\n");
			break;
		case 8:
			printf("B\n");
			break;
		case 7:
			printf("C\n");
			break;
		case 6:
			printf("D\n");
			break;
		default:
			printf("E\n");
			break;
	}
	return 0;
}
case后面只能是整数的结果,丢到case里面,如果没有遇到break会一直执行下去,所以一般case后面会用break收尾,进行分割。



















