头歌C语言实验 练习3:基本选择结构

第1关:求绝对值

问题描述
不使用数学函数中的绝对值函数,计算并输出一个实数的绝对值。

输入
一个单精度的浮点数。

输出
输出其绝对值,保留2位小数。

输入示例
-13.846

输出示例
13.85

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main(){
float a;
scanf("%f",&a);
if(a<0){
a=-a;
}
printf("%.2f",a);
return 0;
}

第2关:整除

问题描述
对于两个整数a和b,判断a是否能被b整除。

输入
两个用英文逗号分开的整数a和b。

输出
若能整除,则输出字符Y以及a整除b的商;
若不能整除,则输出字符N以及a整除b的商和余数。
输出的各项数据之间用一个空格分开。

输入示例
10,3

输出示例
N 3 1

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main(){
int a,b;
scanf("%d,%d",&a,&b);
if(a%b==0){
printf("Y %d",a/b);
}else printf("N %d %d",a/b,a%b);
return 0;
}

第3关:体型检测

问题描述
医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了计算“体指数”的公式:

t = w ÷ h2
其中,t为体指数,w为体重,单位是千克,h为身高,单位为米。 计算出体指数t后,就可以根据体指数进行体型检测:
当t<18时,为低体重;
当18≤t<25之间时,为正常体重;
当25≤t<27之间时,为超重体重;
当t≥27时,为肥胖。
聪明的你能根据一个人的身高和体重对其体型进行检测吗?
输入
两个用空格分开的浮点数,第一个是身高h,第二个是体重w。

输出
输出包括两行:
第一行输出体指数t,保留2位小数;
第二行输出体型检测结果。

输入示例
1.65 55

输出示例
20.20
正常体重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<math.h>
int main(){
float w,h,t;
scanf("%f %f",&h,&w);
t=w/(pow(h,2));
if(t<18){
printf("%.2f\n低体重",t);
}
else if(t>=18&&t<25){
printf("%.2f\n正常体重",t);
}
else if(t>=25&&t<27){
printf("%.2f\n超重体重",t);
}else{
printf("%.2f\n肥胖",t);
}
return 0;
}

第4关:老梁买稻种 I

问题描述
农民老梁去城里买稻种,稻种价格为3元/斤,一次性买得越多,每斤价格的折扣(可以少支付的金额)率就越大,购买斤数 (weight)和折扣率Cost关系如下:

如果weight≥500,折扣率Cost为0.15;
如果500>weight≥300,折扣率Cost为0.10;
如果300>weight≥100,折扣率Cost为0.075;
如果100>weight≥50,折扣率Cost为0.05;
否则折扣率Cost为0。
这可难倒了没读过几年书的老梁。请你帮忙算一算,如果老梁需要买x斤稻种,折扣率是多少?老梁实际需要支付多少元呢?
输入
一个正整数,即老梁需要购买的稻种斤数。

输出
两个用空格分开的浮点数:第一个是折扣率,保留3位小数;第二个是老梁需要支付的钱数,以元为单位,保留2位小数。

输入示例
278

输出示例
0.075 771.45

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#define PRICE 3
int main(){
int weight;
float cost,money;
scanf("%d",&weight);
if(weight>=500){
cost=0.15f;
}
else if(weight<500&&weight>=300){
cost=0.1f;
}
else if(weight<300&&weight>=100){
cost=0.075f;
}
else if(weight<100&&weight>=50){
cost=0.05f;
}else{
cost=0;
}
money=(1-cost)*PRICE*weight;
printf("%.3f %.2f",cost,money);
return 0;
}

第5关:学习计划提醒

问题描述
小明是一个爱学习的小朋友,他为自己制定了一周中每天的学习计划,如下表所示:

星期 学习内容
语文、数学
数学、英语
英语、语文
语文、数学
数学、英语
英语、语文
计算机、生物

每天到了学习时间,小明就想知道按照自己的学习计划,今天应该学习什么功课。请你使用switch多分支选择结构帮小明编制一个学习计划提醒程序,当输入一个代表星期几的整数时,就按照学习计划输出当日的学习内容。
输入
一个正整数,对应表示星期一~星期日(7表示星期日)。

输出
如果输入的整数是1~7的整数,则输出对应于这一天的学习内容;否则输出“输入错误”(不输出两侧的双引号)。

输入示例
3

输出示例
英语、语文

提示
要求使用switch多分支选择结构编程实现。
有些天的学习内容是相同的,这意味着在switch语句中的某些分支是可以合并的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<stdio.h>

int main(){
int days;
scanf("%d",&days);
switch(days) {
case 1:
printf("语文、数学");
break;
case 2:
printf("数学、英语");
break;
case 3:
printf("英语、语文");
break;
case 4:
printf("语文、数学");
break;
case 5:
printf("数学、英语");
break;
case 6:
printf("英语、语文");
break;
case 7:
printf("计算机、生物");
break;
default:
printf("输入错误");
}
return 0;
}