河南农业大学2020-2021第一学期程序设计基础-实验2

7-1 数学函数调用 (10 分)

题目描述:

输入格式:
一个实数
输出格式:
计算并输出上述表达式的值,保留4位小数。
输入样例:
1.57
输出样例:
1.1243
实现代码:

#include<stdio.h>
#include<math.h>
int main()
{
	double x;
	scanf("%lf",&x);
	double r1,r2,r3,r4;
	r1=sin(x)-cos(x/2);
	r2=sqrt(x+168);
	r3=fabs(r1+r2);
	r4=log10(r3);
	printf("%.4lf",r4);
	return 0;
 } 

7-2 回文数 (10 分)

题目描述:
判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。。
输入格式:
直接输入一个5位数正整数。
输出格式:
输出“yes”或“no”。此处均为小写字母
输入样例:
12521
输出样例:
yes
输入样例:
65432
输出样例:
no
实现代码:

#include<stdio.h>
int main()
{
	int x;
	scanf("%d",&x);
	int a,b,c,d;
	a=x%10;
	b=x%10000%1000%100/10;
	c=x%10000/1000;
	d=x/10000;
	if(a==d&&b==c)
	{
		printf("yes");
	}
	else
	{
		printf("no");
	}
	return 0;
}

7-3 判断一个三位数是否为水仙花数 (15 分)

题目描述:
本题要求编写程序,判断一个给定的三位数是否为水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。
输入格式:
输入在一行中给出一个需要判断的整数 N(100≤N≤999)。
输出格式:
如果N是水仙花数,则在一行中输出Yes,否则输出No。如果N不是三位数,则输出Invalid Value.。
输入样例:
153
输出样例:
Yes
输入样例:
500
输出样例:
No
输入样例:
-2
输出样例:
Invalid Value.
实现代码:

#include<stdio.h>
int main()
{
	int x;
	scanf("%d",&x);
	if(x>999||x<100)
	{
		printf("Invalid Value.");
		return 0;
	}
	int a,b,c,d;
	a=x/100;
	b=x%100/10;
	c=x%10;
	if(x==a*a*a+b*b*b+c*c*c)
	{
		printf("Yes");
	}
	else
	{
		printf("No");
	}
	return 0;
}

7-4 计算符号函数的值 (10 分)

题目描述:

输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值
输入样例:
10
输出样例:
sign(10) = 1
输入样例:
0
输出样例:
sign(0) = 0
输入样例:
-98
输出样例:
sign(-98) = -1
实现代码:

#include<stdio.h>
int main()
{
	int x;
	scanf("%d",&x);
	if(x>0)
	{
		printf("sign(%d) = 1",x);
	}
	else if(x==0)
	{
		printf("sign(0) = 0");
	}
	else
	{
		printf("sign(%d) = -1",x);
	}
	return 0;
}

7-5 出租车计价 (15 分)

题目描述:

输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例:
2.6 2
输出样例:
10
输入样例:
5.1 4
输出样例:
14
输入样例:
12.5 9
输出样例:
34
实现代码:

#include<stdio.h>
int main()
{
	double x,r,result;
	int t;
	scanf("%lf%d",&x,&t);
	if(x<=3)
	{
		r=10;
		//printf("sign(%d)=1",x);
	}
	else if(x>3&&x<=10)
	{
		r=10+(x-3)*2;
		//printf("sign(0)=0");
	}
	else
	{
		r=24+(x-10)*3;
		//printf("sign(%d)=-1",x);
	}
	//printf("%lf\n",r);
	result=t/5*2+r;
	printf("%.0lf",result);
	return 0;
}

7-6 计算天数 (15 分)

题目描述:
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例:
2009/03/02
输出样例:
61
输入样例:
2000/03/02
输出样例:
62
实现代码:

#include<stdio.h>
int main()
{
	int y,m,d;
	scanf("%4d/%2d/%2d",&y,&m,&d);
	if((y%4==0&&y%100!=0)||y%400==0)
	{
		switch(m)
		{
			case 12:d+=30;
				case 11:d+=31;
					case 10:d+=30;
						case 9:d+=31;
							case 8:d+=31;
								case 7:d+=30;
									case 6:d+=31;
										case 5:d+=30;
											case 4:d+=31;
												case 3:d+=29;
													case 2:d+=31;
														case 1:d;
															default:break;
				
		}
	}
	else
	{
		switch(m)
		{
			case 12:d+=30;
				case 11:d+=31;
					case 10:d+=30;
						case 9:d+=31;
							case 8:d+=31;
								case 7:d+=30;
									case 6:d+=31;
										case 5:d+=30;
											case 4:d+=31;
												case 3:d+=28;
													case 2:d+=31;
														case 1:d;
															default:break;
				
		}
	}
	printf("%d",d);
	return 0;
}

7-7 成绩转换 (15 分)

题目描述:

输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
实现代码:

#include<stdio.h>
int main()
{
	int score,m;
	scanf("%d",&score);
	m=score/10;
	switch(m)
	{
		case 10:printf("A");break;
		case 9:printf("A");break;
		case 8:printf("B");break;
		case 7:printf("C");break;
		case 6:printf("D");break;
	}
	if(score<60)
	{
		printf("E");
	}
	
	return 0;
}

7-8 输出三角形面积和周长 (15 分)

题目描述:

输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,按照
area = 面积; perimeter = 周长的格式输出,保留两位小数。否则,输出These sides do not correspond to a valid triangle
输入样例:
5 5 3
输出样例:
area = 7.15; perimeter = 13.00
输入样例:
1 4 1
输出样例:
These sides do not correspond to a valid triangle
实现代码:

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,c;
	double area,s,C;
	scanf("%d%d%d",&a,&b,&c);
	s=(double)(a+b+c)/2;
	//printf("%.2lf\n",s);
	if(a+b>c&&a+c>b&&b+c>a)
	{
		area=sqrt(s*(s-a)*(s-b)*(s-c));
		C=a+b+c;
		printf("area = %.2lf; perimeter = %.2lf",area,C);
	}
	else
	{
		printf("These sides do not correspond to a valid triangle");
	}
	return 0;
}

7-9 三天打鱼两天晒网 (15 分)

题目描述:
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例:
103
输出样例:
Fishing in day 103
实现代码:

#include<stdio.h>
#include<math.h>
int main()
{
	int d;
	scanf("%d",&d);
	if(d%5==0||d%5>3)
	{
		printf("Drying in day %d",d);
	}
	else
	{
		printf("Fishing in day %d",d);
	}
	return 0;
}

7-10 新胖子公式 (10 分)

题目描述:
根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。
输入格式:
输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。
输出格式:
首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后 1 位。如果这个数值大于 25,就在第二行输出 PANG,否则输出 Hai Xing。
输入样例:
100.1 1.74
输出样例:
33.1 PANG
输入样例:
65 1.70
输出样例:
22.5 Hai Xing
实现代码:

#include<stdio.h>
#include<math.h>
int main()
{
	double h,l,v;
	scanf("%lf%lf",&h,&l);
	v=h/(l*l);
	if(v>25)
	{
		printf("%.1lf\nPANG",v);
	}
	else
	{
		printf("%.1lf\nHai Xing",v);
	}
	return 0;
}

7-11 强迫症 (10 分)

题目描述:
小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月 格式。对于那些只写了年份后两位的信息,我们默认小于 22 都是 20 开头的,其他都是 19 开头的。
输入格式:
输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。
输出格式:
在一行中按标准格式 年年年年-月月 将输入的信息整理输出。
输入样例:
9808
输出样例:
1998-08
输入样例:
0510
输出样例:
2005-10
输入样例:
196711
输出样例:
1967-11
实现代码:

#include<stdio.h>
#include<math.h>
int main()
{
	int y,a,b,c,d,e,f;
	scanf("%d",&y);
	if(y>10000)
	{
		printf("%d%d%d%d-%d%d",y/100000,y%100000/10000,y%100000%10000/1000,y%100000%10000%1000/100,y%100000%10000%1000%100/10,y%10);
	}
	else
	{
		a=y/100;
		if(a>=22)
		{
			printf("19%d-%d%d",a,y%1000%100/10,y%10);
		}
		else if(a<10)
		{
			printf("200%d-%d%d",a,y%1000%100/10,y%10);
		}
		else
		{
			printf("20%d-%d%d",a,y%1000%100/10,y%10);
		}
	}
	return 0;
}

7-12 比较大小 (10 分)

题目描述:
本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。
输入样例:
4 2 8
输出样例:
2->4->8
实现代码:

#include <stdio.h>
int main( )
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	if(a>b)
	{
		int q=a;
		a=b;
		b=q;
	}
	if(b>c)
	{
		int y=b;
		b=c;
		c=y;
	}
	if(a>b)
	{
		int q=a;
		a=b;
		b=q;
	}
	if(b>c)
	{
		int y=b;
		b=c;
		c=y;
	}
	
	printf("%d->%d->%d",a,b,c);
	return 0;
}

7-13 用天平找小球 (10 分)

题目描述:
三个球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&&a!=c)
	{
		printf("C");
	}
	else if(a==c&&a!=b)
	{
		printf("B");
	}
	else
	{
		printf("A");
	}
	return 0;
}

7-14 日K蜡烛图 (15 分)

题目描述:

输入格式:
输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。
输出格式:
在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow。
输入样例:
5.110 5.250 5.100 5.105
输出样例:
BW-Solid with Lower Shadow and Upper Shadow
输入样例:
5.110 5.110 5.110 5.110
输出样例:
R-Cross
输入样例:
5.110 5.125 5.112 5.126
输出样例:
R-Hollow
实现代码:

#include <stdio.h>
int main( )
{
	double a,b,c,d;
	scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
	if(a>d)
	{
		printf("BW-Solid");
		if(b>a&&b>d&&c<a&&c<d)
		{
			printf(" with Lower Shadow and Upper Shadow");
		}
		else
		{
			if(c<a&&c<d)
		{
			printf(" with Lower Shadow");
		}
		if(b>a&&b>d)
		{
			printf(" with Upper Shadow");
		}
		}
	}
	else if(a<d)
	{
		printf("R-Hollow");
		if(b>a&&b>d&&c<a&&c<d)
		{
			printf(" with Lower Shadow and Upper Shadow");
		}
		else
		{
			if(c<a&&c<d)
		{
			printf(" with Lower Shadow");
		}
		if(b>a&&b>d)
		{
			printf(" with Upper Shadow");
		}
		}
	}
	else
	{
		printf("R-Cross");
		if(b>a&&b>d&&c<a&&c<d)
		{
			printf(" with Lower Shadow and Upper Shadow");
		}
		else
		{
			if(c<a&&c<d)
		{
			printf(" with Lower Shadow");
		}
		if(b>a&&b>d)
		{
			printf(" with Upper Shadow");
		}
		}
	}
	return 0;
}

题目描述:
科幻电影《流浪地球》中一个重要的情节是地球距离木星太近时,大气开始被木星吸走,而随着不断接近地木“刚体洛希极限”,地球面临被彻底撕碎的危险。但实际上,这个计算是错误的。

洛希极限(Roche limit)是一个天体自身的引力与第二个天体造成的潮汐力相等时的距离。当两个天体的距离少于洛希极限,天体就会倾向碎散,继而成为第二个天体的环。它以首位计算这个极限的人爱德华·洛希命名。(摘自百度百科)

大天体密度与小天体的密度的比值开 3 次方后,再乘以大天体的半径以及一个倍数(流体对应的倍数是 2.455,刚体对应的倍数是 1.26),就是洛希极限的值。例如木星与地球的密度比值开 3 次方是 0.622,如果假设地球是流体,那么洛希极限就是 0.622×2.455=1.52701 倍木星半径;但地球是刚体,对应的洛希极限是 0.622×1.26=0.78372 倍木星半径,这个距离比木星半径小,即只有当地球位于木星内部的时候才会被撕碎,换言之,就是地球不可能被撕碎。 本题就请你判断一个小天体会不会被一个大天体撕碎。
输入格式:
输入在一行中给出 3 个数字,依次为:大天体密度与小天体的密度的比值开 3 次方后计算出的值(≤1)、小天体的属性(0 表示流体、1 表示刚体)、两个天体的距离与大天体半径的比值(>1 但不超过 10)。
输出格式:
在一行中首先输出小天体的洛希极限与大天体半径的比值(输出小数点后2位);随后空一格;最后输出 ^_^ 如果小天体不会被撕碎,否则输出 T_T。
输入样例:
0.622 0 1.4
输出样例:
1.53 T_T
实现代码:

#include <stdio.h>
int main( )
{
	double a,c;
	int b;
	scanf("%lf%d%lf",&a,&b,&c);
	switch(b)
	{
		case 0:if(a*2.455>c)
		{
			printf("%.2lf T_T",a*2.455);
		}
		else
		{
			printf("%.2lf ^_^",a*2.455);
		}break;
		case 1:if(a*1.26>c)
		{
			printf("%.2lf T_T",a*1.26);
		}
		else
		{
			printf("%.2lf ^_^",a*1.26);
		}break;
	}
	return 0;
}

7-16 两个数的简单计算器 (10 分)

题目描述:
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
输入样例:
-7 / 2
输出样例:
-3
输入样例:
3 & 6
输出样例:
ERROR
实现代码:

#include <stdio.h>
int main( )
{
	int a,b;
	char c;
	scanf("%d %c %d",&a,&c,&b);
	if(c=='+')
	{
		printf("%d",a+b);
	}
	else if(c=='-')
	{
		printf("%d",a-b);
	}
	else if(c=='*')
	{
		printf("%d",a*b);
	}
	else if(c=='/')
	{
		printf("%d",a/b);
	}
	else if(c=='%')
	{
		printf("%d",a%b);
	}
	else
	{
		printf("ERROR");
	}
	return 0;
}

7-17 A除以B (10 分)

题目描述:
真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。
输入格式:
输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。
输出格式:
在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。
输入样例:
-1 2
输出样例:
-1/2=-0.50
输入样例:
1 -3
输出样例:
1/(-3)=-0.33
输入样例:
5 0
输出样例:
5/0=Error
实现代码:

#include <stdio.h>
int main( )
{
	int a,b;
	scanf("%d %d",&a,&b);
	if(a==0)
	{
		if(b>0)
	{
		printf("%d/%d=0.00",a,b);
	}
	else if(b<0)
	{
		printf("%d/(%d)=0.00",a,b);
	}
	else
	{
		printf("%d/0=Error",a);
	}
	}
	else
	{
		if(b>0)
	{
		printf("%d/%d=%.2lf",a,b,(double)(a)/b);
	}
	else if(b<0)
	{
		printf("%d/(%d)=%.2lf",a,b,(double)(a)/b);
	}
	else
	{
		printf("%d/0=Error",a);
	}
	}
	return 0;
}
posted @ 2021-11-25 09:45  卿源  阅读(244)  评论(0)    收藏  举报