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收尾,进行分割。