C语言编程入门—分支、多分支(week3)

久等哩~    第三弹


问题 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题略哩……


这周题目注意细节就可以啦~

猜你喜欢

转载自blog.csdn.net/qq_63761366/article/details/127074203
今日推荐