久等哩~ 第三弹
问题 A: (3) 时间转换问题(三) (----分支if / if else)
题目描述
将秒数转换为时间格式(24小时制,如果小时数大于23,则转换成天数)(单分支结构)
输入
输入秒数n(n>0的整数)
输出
把秒数转化成时间格式(24小时制,如果小时数大于23,则转换成天数,如果小时数小于24,则不输出天数) 比如输入:3612 , 输出为1:0:12 比如输入:75612 , 输出为21:0:12 比如输入:162012 , 输出为1 day 21:0:12
样例输入
162012
样例输出
1 day 21:0:12
问题分析
法一:分是否大于1天两种情况讨论,主要注意 hour 即可
#include<stdio.h>
int main()
{
int time,day,hour,minute,second;
scanf("%d",&time);
hour = time / 3600;
if(hour > 23)
{
day=hour/24;hour-=day*24;
printf("%d day ", day);
}
minute = time / 60 % 60;
second = time % 60;
printf("%d:%d:%d\n",hour,minute,second);
system("pause");
return 0;
}
法二:直接采取 60,60^2,60^2*24(86400) 进制
#include <stdio.h>
int main()
{
int s;
scanf("%d", &s);
if (s >= 86400)
printf("%d day %d:%d:%d", s / 86400, s % 86400 / 3600, s % 3600 / 60, s % 60);
else
printf("%d:%d:%d", s % 86400 / 3600, s % 3600 / 60, s % 60);
return 0;
}
问题 B: (3) 时间转换问题(四) 双分支
题目描述
将秒数转换为时间格式(12小时制)(单/双分支结构)
输入
输入秒数n(n<86400(一天之内的秒数)的整数)
输出
把秒数转化成时间格式(12小时制)比如输入:3612 , 输出为 AM 01:00:12 比如输入:75612 , 输出为 PM 09:00:12
注意AM的范围为:0秒~43199秒(11:59:59)为AM,(43200秒~86399秒)为PM
样例输入
3612
样例输出
AM 01:00:12
问题分析 (同理第一问)
法一:分上午下午两种情况讨论,主要注意 hour 即可
#include<stdio.h>
int main()
{
int time,hour,minute,second;
scanf("%d",&time);
hour = time / 3600;
if(hour >= 12)
{
hour-=12;
printf("PM ");
}
else
printf("AM ");
minute = time / 60 % 60;
second = time % 60;
printf("%02d:%02d:%02d\n",hour,minute,second);
return 0;
}
法二:直接采取 60,60^2,60^2*12(43200) 进制
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
if (x < 43200)
printf("AM %02d:%02d:%02d", x % 43200 / 3600, x % 3600 / 60, x % 60);
else
printf("PM %02d:%02d:%02d", x % 43200 / 3600, x % 3600 / 60, x % 60);
return 0;
}
问题 C: 【C语言】【if分支】约数判断并输出
题目描述
编写一段程序,像下面这样输入两个整数值,如果后者是前者的约数,则显示“B是A的约数”。
如果不是, 则显示“B不是A的约数”。
输入
请输入两个整数A和B
输出
如果后者是前者的约数,则显示“B是A的约数”。
如果不是, 则显示“B不是A的约数”。
样例输入
17 5
样例输出
B不是A的约数
问题分析
#include <stdio.h>
int main()
{
int a,b;
scanf("%d %d", &a, &b);
if (a % b == 0)
printf("B是A的约数");
else
printf("B不是A的约数");
return 0;
}
问题 D: 选择结构4-数码互换2-单分支
题目描述
输入一个正的二位数,如果个位数较大,则交换个位与十位,否则不变。
输入
一个二位数
输出
如果个位数较大,则交换个位与十位后输出。
否则原数输出。
例如输入35,输出53
例如 输入83,输出83
样例输入
38
样例输出
83
问题分析
法一:不妨把这两位数想成两个数字,改变输出顺序即可
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
if (x%10>x/10)
printf("%d%d",x%10,x/10);
else
printf("%d",x);
return 0;
}
法二: 常规转化
#include<stdio.h>
int main()
{
int x;
scanf("%d", &x);
if (x%10 > x/10)
x = x % 10 * 10 + x / 10;
printf("%d\n",x);
return 0;
}
问题 E: 【C語言】用天平找小球【if-else】
题目描述
三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。
输入
输入在一行中给出3个正整数,顺序对应球A、B、C的重量。
输出
在一行中输出唯一的那个不一样的球
样例输入
1 1 2
样例输出
C
问题分析
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if(a==b)
printf("C\n");
else if(a==c)
printf("B\n");
else
printf("A\n");
return 0;
}
问题 F: 【C语言1】成绩转换问题 多分支
题目描述
编写程序,将输入的百分制成绩转换为5级等级制并输出。规则:90分以上(含90分)为优,80分以上(含80)为良,70分以上(含70)为中等,60分以上(含60)为及格,60分以下为不及格。
输入
一个整数
输出
转换后的结果
样例输入
60
样例输出
及格
问题分析
法一:运用多个 if 结构
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
if (x >=90) printf("优");
else if(x>=80) printf("良");
else if(x>=70) printf("中等");
else if(x>=60) printf("及格");
else printf("不及格");
return 0;
}
法二: 遇到多分支的题目,不妨试试 switch 可以简便一点
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
switch(n/10)
{
case 10:case 9:printf("优\n");break;
case 8:printf("良\n");break;
case 7:printf("中等\n");break;
case 6:printf("及格\n");break;
default:printf("不及格\n");break;
}
}
问题 G: (3) 判断直角三角形 (分支结构 逻辑运算)
题目描述
输入三角形的三条边(整数),判断是否是直角三角形 (分支结构 逻辑运算)
输入
输入三个整数a,b,c,其中(a,b,c都大于0) 注意:a,b,c都有可能是三角形的斜边长度值
输出
输出判断结论,用字符'Y' 和'N' 表示 如输入3 4 5,输出Y 如输入3 4 4,输出N
样例输入
3 4 5
样例输出
Y
问题分析
首先 它得是一个三角形,其次 它是一个直角三角形
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if(a+b>c&&a+c>b&&b+c>a&&
(a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b))
printf("Y\n");
else
printf("N\n");
return 0;
}
问题 H: (3) 判断坐标位置 --(多分支结构)
题目描述
判断坐标点在平面的位置(象限和坐标轴) (多分枝结构)
输入
输入坐班x,y的值(整数)
输出
输出点(x,y)所在的象限(或者坐标轴) 如在第一象限,输出I 如在第二象限,输出II 如在第三象限,输出III 如在第四象限,输出IV 如在x轴上,输出X 如在y轴上,输出Y 如在原点上,输出OK
样例输入
12 23
样例输出
I
问题分析
#include<stdio.h>
int main()
{
int x, y;
scanf("%d %d", &x, &y);
if(y==0&&x==0) printf("OK");
else if (y == 0) printf("X");
else if (x == 0) printf("Y");
else if (x > 0 && y > 0) printf("I");
else if(x<0 && y>0) printf("II");
else if (x < 0 && y < 0) printf("III");
else if (x > 0 && y < 0) printf("IV");
return 0;
}
问题 I: 【C语言】出租车计价【if else】
题目描述
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下: 起步里程为3公里,起步费10元; 超起步里程后10公里内,每公里2元; 超过10公里以上的部分加收50%的回空补贴费,即每公里3元; 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入
输入在一行中给出输入行驶里程(整数,单位为公里)与等待时间(整数,单位为分钟),其间以空格分隔。
输出
在一行中输出乘客应支付的车费(单位为元)
样例输入
2 2
样例输出
10
问题分析
#include <stdio.h>
int main()
{
int x,y,z;
scanf("%d %d", &x, &y);
z =y / 5 * 2;
if (x <= 3) printf("%d", z + 10);
else if (x <= 10)
printf("%d", z + 10 + (x - 3) * 2);
else
printf("%d", z + 24 + (x - 10) * 3);
return 0;
}
问题 J: 【C语言】判断闰年【if else】
题目描述
输入一个年份整数,判读是否是闰年
输入
输入一个整数n
输出
如果是闰年输出YES 否则输出NO
样例输入
2000
样例输出
YES
问题分析
注意 && 优先级比 || 高 ,所以可以省略括号
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
if (x % 4 == 0 && x % 100 != 0 || x % 400 == 0)
printf("YES");
else printf("NO");
return 0;
}
K题略哩……
这周题目注意细节就可以啦~