软件1801-1803班《面向过程程序设计》(3)选择结构程序设计

​/*7-1 阶梯电价 (10 分)

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
输入样例1:
10
输出样例1:
cost = 5.30
输入样例2:
100
输出样例2:
cost = 55.50​*/


#include<stdio.h>
int main()
{
	int e;
    double m;
    scanf("%d",&e);
    if(e<0){
      printf("Invalid Value!");
    }
    else if(e<=50){
        m=0.53*e;
        printf("cost = %.2lf",m);
    }else{
        m=0.53*50+0.58*(e-50);
        printf("cost = %.2lf",m);
    }
    return 0;
	
	
}
/*7-2 成绩转换 (10 分)

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。 
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A*/
#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	if(n>=90)
	{
		printf("A\n");
		
	}
	else if(n>=80)
	printf("B\n");
	else if(n>=70)
	printf("C\n");
	else if(n>=60)
	printf("D\n");
	else 
	printf("E\n");
    return 0;
	
	
}
/*7-3 分段函数1 (6 分)

计算分段函数,测试数据分别是-2、3、7。

输入格式:
输入一个数
输出格式:
输出x=多少,y=多少,输出的x和y值均保留两位小数
输入样例:
-3
输出样例:
x=-3.00,y=2.00
*/
#include<stdio.h>
#include<math.h>
int main()
{
	double n;
	scanf("%lf",&n);
	if(n<0)
	printf("x=%.2lf,y=%.2lf\n",n,fabs(n+1));	
	else if(n<=5)
	printf("x=%.2lf,y=%.2lf\n",n,2*n+1);
	else
	printf("x=%.2lf,y=%.2lf\n",n,sin(n)+5);	
	return 0;
	
	
}
/*7-4 判断是否构成三角形 (10 分)

输入三角形的三边,判断是否能构成三角形。若能构成输出YES,否则输出NO。
输入格式:
在一行中直接输入3个整数,3个整数之间各用一个空格间隔,没有其他任何附加字符。
输出格式:
直接输出YES或NO,没有其他任何附加字符。
输入样例:
4 5 6
输出样例:
YES
输入样例:
2 2 4
输出样例:
NO*/

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;

int main()
{
	int a[4];
	for(int i=0;i<3;i++)
	scanf("%d",&a[i]);
	sort(a,a+3);
	if(a[0]+a[1]>a[2]&&a[2]-a[1]<a[0])
	printf("YES\n");
	else
	printf("NO\n");
	return 0;
		
	
}
/*7-5 装睡 (10 分)

你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。
输入格式:
输入在第一行给出一个正整数N(≤10)。随后N行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。
输出格式:
按照输入顺序检查每个人,如果其至少一项指标不在正常范围内,则输出其名字,每个名字占一行。
输入样例:
4
Amy 15 70
Tom 14 60
Joe 18 50
Zoe 21 71
输出样例:
Tom
Zoe*/
#include<stdio.h>
#include<math.h>
#include<string.h>
struct student{
	char name[100];
	int huxi;
	int  maibo;
}Stu[15];


int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%s %d %d",Stu[i].name,&Stu[i].huxi,&Stu[i].maibo);
	}
	for(int i=0;i<n;i++)
	{
		if(Stu[i].huxi>20||Stu[i].huxi<15||Stu[i].maibo>70||Stu[i].maibo<50)
		{
			printf("%s\n",Stu[i].name);
		}
	}
}
/*7-6 简单计算器 (14 分)

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10*/
#include <stdio.h>
int main()
{
	int i,sum,isnan=0;
	char x='0'; 
	scanf("%d",&sum);
	while(x!='=')
	{
		scanf("%c",&x);
		if(x=='=')
			break;
		scanf("%d",&i);
		if(x=='+')
			sum+=i; 
		else if(x=='-')
			sum-=i;
		else if(x=='*')
			sum*=i;
		else if(x=='/'){ 
			if(i!=0)
				sum/=i;
			else
				isnan=1;
		}
		else
			isnan=1;
	}
	if(isnan==1)
		printf("ERROR");
	else
		printf("%d\n",sum);	
	return 0;
	
}
/*7-7 求一元二次方程的根 (15 分)

本题目要求一元二次方程的根,结果保留2位小数。
输入格式:
输入在一行中给出3个浮点系数a、b、c,中间用空格分开。
输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;
2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;
3)如果方程只有一个根,则直接输出此根;
4)如果系数都为0,则输出"Zero Equation";
5)如果a和b为0,c不为0,则输出"Not An Equation"。
输入样例1:
2.1 8.9 3.5
输出样例1:
-0.44
-3.80
输入样例2:
1 2 3
输出样例2:
-1.00+1.41i
-1.00-1.41i
输入样例3:
0 2 4
输出样例3:
-2.00
输入样例4:
0 0 0
输出样例4:
Zero Equation
输入样例5:
0 0 1
输出样例5:
Not An Equation*/


#include<stdio.h>
#include<math.h>
#define jingdu 1e-6
#include<algorithm>
using namespace std;
int main() {
	double a, b, c, d, shi, xu;
	scanf("%lf%lf%lf", &a, &b, &c);
	if(fabs(a)<=jingdu&&fabs(b)<=jingdu&& fabs(c)<=jingdu)
		printf("Zero Equation\n");
	else if(fabs(a) <=jingdu&& fabs(b)<=jingdu)
		printf("Not An Equation\n");
	else if(fabs(a)<=jingdu)
		printf("%.2f\n", -c / b);
	else {
		d=b*b-4*a*c;
		shi= -b/(2*a);
		xu=sqrt(fabs(d))/(2*a);
		if(fabs(d) <= jingdu)
			printf("%.2f\n",shi);
		else if(d>jingdu) {			
			printf("%.2f\n", shi+xu);
			printf("%.2f\n", shi-xu);
		}
		else {
			if(fabs(shi)<=jingdu) {
				printf("0.00+%.2fi\n",xu);
				printf("0.00-%.2fi\n",xu);
			}
			else {
				printf("%.2f+%.2fi\n",shi,xu);
				printf("%.2f-%.2fi\n",shi,xu);
			}
		}		
	}
	return 0;
}
/*7-8 计算工资 (12 分)

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。
输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00*/
#include<stdio.h>
int main()
{
	double year,time;
	scanf("%lf %lf",&year,&time);
	if(year>=5)
	{
		if(time<=40)
		printf("%.2lf\n",50*time);
		else
		printf("%.2lf\n",50*40+(time-40)*50*1.5);
	}
	else
	{
		if(time<=40)
		printf("%.2lf\n",time*30);
		else
		printf("%.2lf\n",40*30+(time-40)*1.5*30);
		
		
	}
    return 0;
	
	
}
/*7-9 日K蜡烛图 (13 分)

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。
如果Close<Open,表示为“BW-Solid”(即“实心蓝白蜡烛”);如果Close>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。如果Low比Open和Close低,称为“Lower Shadow”(即“有下影线”),如果High比Open和Close高,称为“Upper Shadow”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。
输入格式:
输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。
输出格式:
在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow。
输入样例1:
5.110 5.250 5.100 5.105
输出样例1:
BW-Solid with Lower Shadow and Upper Shadow
输入样例2:
5.110 5.110 5.110 5.110
输出样例2:
R-Cross
输入样例3:
5.110 5.125 5.112 5.126
输出样例3:
R-Hollow*/
#include<stdio.h>
#include<math.h>
#define jd 1e-6
int main() {
	double open, high, low, close;
	scanf("%lf %lf %lf %lf", &open, &high, &low, &close);
	if(close<open)
		printf("BW-Solid");
	else if(close>open)
		printf("R-Hollow");
	else if(fabs(close-open)<=jd)
		printf("R-Cross");
	if((low < open && low < close) && (high > open && high > close))
		printf(" with Lower Shadow and Upper Shadow\n");
	else if(low < open && low < close)
		printf(" with Lower Shadow\n");
	else if(high > open && high > close)
		printf(" with Upper Shadow\n");	
	return 0;
}
发布了55 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42612338/article/details/88935306