1.7 分支结构实例
1.7 分支结构实例
P5712 【深基3.例4】Apples
题目描述
八尾勇喜欢吃苹果。她今天吃掉了 \(x\) 个苹果。英语课上学到了 apple 这个词语,想用它来造句。如果她吃了 1 个苹果,就输出 Today, I ate 1 apple.
;如果她没有吃,那么就把 1 换成 0;如果她吃了不止一个苹果,别忘了 apple
这个单词后面要加上代表复数的 s
。你能帮她完成这个句子吗?
输入格式: 输入一行一个自然数 \(x\),表示吃掉的苹果数。
输出格式: 根据题目要求输出。
输入样例: 1
输出样例: Today, I ate 1 apple.
输入样例: 3
输出样例: Today, I ate 3 apples.
提示: 对于所有数据,\(0\le x \le 100\)。
#include<iostream>
using namespace std;
int main(){
int x; cin>>x;
cout<<"Today, I ate "<<x;
if(x<=1){
cout<<" apple.";
}else{
cout<<" apples.";
}
return 0;
}
P5715 【深基3.例8】三位数排序
题目描述
给出三个整数 \(a,b,c(0\le a,b,c \le 100)\),要求把这三位整数从小到大排序。
输入格式: 输入三个整数 \(a,b,c\),以空格隔开。
输出格式: 输出一行,三个整数,表示从小到大排序后的结果。
输入样例: 1 14 5
输出样例: 1 5 14
#include<iostream>
using namespace std;
int main(){
int a,b,c; cin>>a>>b>>c;
if(a>b){ int t=a; a=b; b=t; } //如果a>b ,就交换a,b
if(a>c){ int t=a; a=c; c=t; }
if(b>c){ int t=b; b=c; c=t; }
cout<<a<<" "<<b<<" "<<c;
return 0;
}
P5709 【深基2.习6】Apples Prologue / 苹果和虫子
题目描述
八尾勇喜欢吃苹果。她现在有 \(m\)(\(1 \le m \le 100\))个苹果,吃完一个苹果需要花费 \(t\)(\(0 \le t \le 100\))分钟,吃完一个后立刻开始吃下一个。现在时间过去了 \(s\)(\(1 \le s \le 10000\))分钟,请问她还有几个完整的苹果?
输入格式: 输入三个非负整数表示 \(m, t, s\)。
输出格式: 输出一个整数表示答案。
输入样例: 50 10 200
输出样例: 30
提示:如果你出现了 RE,不如检查一下被零除?
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int m,t,s; cin>>m>>t>>s;
if(t==0){
m = 0;
} else {
m -= ceil((double)s/t);
}
if(m<0) m = 0;
cout<<m;
return 0;
}
4. 校园出行
题目描述
在大学校园里,由于校区很大,没有自行车上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁停车、锁车等,这要耽误一些时间。
假设找到自行车、开锁并骑上自行车的时间为 27秒,停车锁车的时间为 23秒,步行每秒行走 1.2米,骑车每秒行走 3.0米。
输入格式: 输入距离(单位:米),输出是骑车快还是走路快。
输出格式: 分别用 Walk. The same. Bike. 表示走路快、一样快、自行车快.
输入样例: 90
输出样例: Walk.
#include<iostream>
using namespace std;
int main() {
double length; cin>>length; //距离
double time1 = (27+23+length/3.0); //骑车所需要时间
double time2 = (length/1.2); //步行所需要时间
if(time1 > time2) { //谁花的时间少,谁就快
cout<<"Walk.";
} else if(time1 < time2) {
cout<<"Bike.";
} else { //time1==time2; double类型不要使用==判断相等
cout<<"The same.";
}
return 0;
}
// 思考:多远所需要时间相同?
// time1==time2
// (27+23+length/3.0) == (length/1.2)
5. IC卡电话计费
题目描述
某市的IC卡电话计费标准如下:
首次为 0.5元/3分钟(不足3分钟按3分钟计费),之后是 0.2元/1分钟。
已知某人打一次电话花费为 x 元,问这个人有可能打了多长时间的电话?
输入 x,输出时间(精确到分钟),如果输入错误,输出 "ERROR"。
输入样例: 0.5
输出样例: 3 minute
输入样例: 0.3
输出样例: ERROR
#include <iostream>
using namespace std;
int main() {
double x; cin>>x;
if(x<0.5) {
cout<<"ERROR";
} else {
cout<<(x-0.5)/0.2+3<<" minute";
}
return 0;
}
6. 输入一个不多于三位的正整数,求出它是几位数
题目描述
输入一个不多于三位的正整数,求出它是几位数,并按照样例打印出各位上的数字。
如果输入错误,输出ERROR.
输入样例: 5
输出样例: 一位数,依次是:5
输入样例: 45
输出样例: 二位数,依次是:4 5
输入样例: 0
输出样例: ERROR
#include<iostream>
using namespace std;
int main() {
int n; cin>>n;
if(n<=0 || n>999) {
cout<<"ERROR";
} else {
if(n<10) {
cout<<"一位数,依次是:"<<n;
} else if(n<100) {
cout<<"二位数,依次是:"<<n/10<<" "<<n%10;
} else {
cout<<"三位数,依次是:"<<n/100<<" "<<n/10%10<<" "<<n%10;
}
}
return 0;
}
补充知识
#include<bits/stdc++.h> //万能头文件
fixed<<setprecision(7) // iomanip 保留小数点后7位
scanf("%d", &n); // 输入并赋值给 n
printf("%d\n", n); // 输出 n,并换行
printf("%n.mlf",PI); //输出 n 个宽度,保留 m 位小数
char ch = '9'; int num=9;
数字字符转数字:num = ch - '0';
数字转数字字符:ch = num + '0';
三目运算符
int num = a>b ? a:b; //三目运算符: ?:
// 相当于如下代码的功能
if(a>b) num = a;
else num=b;
开关语句:switch
#include<bits/stdc++.h> //万能头文件
using namespace std;
int main() {
int num; cin>>num;// -1 0 1
// 将 case后的元素与switch(num)中传入的num进行比对,相同就执行
switch(num) {
case -1: cout<<-1; break; //退出
case 1: cout<<1; break;
case 0: cout<<0; break;
default: //如果前面没有case执行,就执行
cout<<"ERROR"; break;
}
return 0;
}
星期几
题目描述
我们知道一周有七天,现在给你数字 1~7,分别对应星期一到星期天,请你输出他们的英文。
星期一到星期天的英文是:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday。
输入格式: 一个整数
输出格式: 一个字符串
输入样例: 2
输出样例: Tuesday
#include <iostream>
using namespace std;
int main() {
int n; cin>>n;
switch(n){
case 1: cout<<"Monday"; break;
case 2: cout<<"Tuesday"; break;
case 3: cout<<"Wednesday"; break;
case 4: cout<<"Thursday"; break;
case 5: cout<<"Friday"; break;
case 6: cout<<"Saturday"; break;
case 7: cout<<"Sunday"; break;
default: cout<<"ERROR"; break;
}
return 0;
}