03 第三周--程序设计与算法(一)测验

012:奇偶数判断

总时间限制: 1000ms 内存限制: 65536kB

描述
给定一个整数,判断该数是奇数还是偶数。

输入
输入仅一行,一个大于零的正整数n。

输出
输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。

样例输入

5

样例输出

odd

代码

#include<stdio.h> 
int main()
{
	int num;
	scanf("%d",&num);
	if(num%2==0)
		printf("even");
	else
		printf("odd");
	return 0;
}

013:求一元二次方程的根

总时间限制: 1000ms 内存限制: 65536kB

描述
利用公式x1 = (-b + sqrt(bb-4ac))/(2a), x2 = (-b - sqrt(bb-4ac))/(2a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。

输入
输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数。

输出
输出一行,表示方程的解。
若b2 = 4 * a * c,则两个实根相等,则输出形式为:x1=x2=…。
若b2 > 4 * a * c,则两个实根不等,则输出形式为:x1=…;x2 = …,其中x1>x2。
若b2 < 4 * a * c,则有两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,即x1的虚部系数大于等于x2的虚部系数,实部为0时不可省略。实部 = -b / (2a), 虚部 = sqrt(4ac-bb) / (2*a)

所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。

样例输入

样例输入1
1.0 2.0 8.0
样例输入2
1 0 1

样例输出

样例输出1
x1=-1.00000+2.64575i;x2=-1.00000-2.64575i
样例输出2
x1=0.00000+1.00000i;x2=0.00000-1.00000i

代码

#include<stdio.h>
#include<math.h>
int main()
{
	float a,b,c;
	scanf("%f%f%f",&a,&b,&c);
	if(b*b==4*a*c)
		printf("x1=x2=%.5f",-b/(2*a));
	else if(b*b>4*a*c)
		printf("x1=%.5f;x2=%.5f", (-b + sqrt(b*b-4*a*c))/(2*a),(-b - sqrt(b*b-4*a*c))/(2*a));
	else if(b*b<4*a*c)
	{
		if(b!=0)
			printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi",-b / (2*a), sqrt(4*a*c-b*b) / (2*a),-b / (2*a), sqrt(4*a*c-b*b) / (2*a));	
		else
			printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi",b / (2*a), sqrt(4*a*c-b*b) / (2*a),b / (2*a), sqrt(4*a*c-b*b) / (2*a));	
	}
	return 0; 	
}

014:点和正方形的关系

总时间限制: 1000ms 内存限制: 65536kB

描述
有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。

输入
输入一行,包括两个整数x、y,以一个空格分开,表示坐标(x,y)。

输出
输出一行,如果点在正方形内,则输出yes,否则输出no。

样例输入

1 1.

样例输出

yes

代码

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

015:苹果和虫子2

总时间限制: 1000ms 内存限制: 65536kB

描述
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

输入
输入仅一行,包括n,x和y(均为整数)。

输出
输出也仅一行,剩下的苹果个数

样例输入

10 4 9

样例输出

7

提示

注意:是要求完整的苹果数。

代码

#include<stdio.h>
int main()
{
	int n,x,y;
	scanf("%d%d%d",&n,&x,&y);
	if(y/x<10) 
		if(y%x==0)
			printf("%d",n-(y/x));
		else
			printf("%d",n-(y/x+1));
	else
		printf("0"); 
	return 0;
}
//注意:要求完整的苹果数 

016:简单计算器

总时间限制: 1000ms 内存限制: 65536kB

描述
一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。

输入
输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。

输出
输出只有一行,一个整数,为运算结果。然而:

  1. 如果出现除数为0的情况,则输出:Divided by zero!
  2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

样例输入

1 2 +

样例输出

3

提示

可以考虑使用if和switch结构。

#include<stdio.h>
int main()
{
	int a,b;
	char c;
	scanf("%d%d %c",&a,&b,&c);
	switch(c){
		case '+':printf("%d",a+b);break;
		case '-':printf("%d",a-b);break;
		case '*':printf("%d",a*b);break;
		case '/':
			if(b==0)
				printf("Divided by zero!");
			else
				printf("%d",a/b);
			break;
		default:printf("Invalid operator!");
	}
	
	return 0;
}

017:求整数的和与均值

总时间限制: 1000ms 内存限制: 65536kB

描述
读入n(1 <= n <= 10000)个整数,求它们的和与均值。

输入
输入第一行是一个整数n,表示有n个整数。
第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

输出
输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。

样例输入

4
344
222
343
222

样例输出

1131 282.75000

代码

#include<stdio.h>
#include<math.h>
int main()
{
	int n,num,i,sum=0;
	double avg;
	scanf("%d",&n);
	if(n>=1&&n<=10000)
	{
		for(i=0;i<n;i++)
		{
			scanf("%d",&num);
			if(abs(num)<=10000)
				sum=sum+num;
		}
		avg=1.0*sum/n;
		printf("%d %.5lf",sum,avg);
	}
	
	return 0;
}

### 018:整数序列的元素最大跨度值
总时间限制: 1000ms 内存限制: 65536kB 
 
描述
给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

输入
一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。

输出
输出一行,表示序列的最大跨度值。

样例输入

6
3 0 8 7 5 9

样例输出

9

代码

#include<stdio.h>
int main()
{
	int n,i,num,max=0,min=1000;
	scanf("%d",&n);
	if(n>=1&&n<=10000){
		for(i=1;i<=n;i++){
			scanf("%d",&num);
			if(num>=0&&num<=1000){
				if(num>max)
					max=num;
				if(num<min)
					min=num;
			}
				
		}	
		printf("%d",max-min);
	}

	return 0;
}

019:奥运奖牌计数

总时间限制: 1000ms 内存限制: 65536kB

描述
2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。

输入
输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。

输出
输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。

样例输入

3
1 0 3
3 1 0
0 3 0

样例输出

4 4 3 11

代码

#include<stdio.h>
int main()
{
	int n,i,a,b,c;
	int jin=0,yin=0,tong=0;
	scanf("%d",&n);
	if(n>=1&&n<=17){
		for(i=1;i<=n;i++){
			scanf("%d%d%d",&a,&b,&c);
			jin+=a;
			yin+=b;
			tong+=c;
		}
		printf("%d %d %d %d",jin,yin,tong,jin+yin+tong);
	}
	return 0;
}

020:乘方计算

总时间限制: 1000ms 内存限制: 65536kB

描述
给出一个整数a和一个正整数n,求乘方an。

输入
一行,包含两个整数a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。

输出
一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。

样例输入

2 3

样例输出

8

代码

#include<stdio.h>
#include<math.h>
int main()
{
	long int a,n;
	scanf("%ld%ld",&a,&n);
	if((abs(a)<=1000000)&&(n>=1&&n<=10000)) 
	printf("%.0lf",pow(a,n));
	return 0;
}

021:鸡尾酒疗法

总时间限制: 1000ms 内存限制: 65536kB

描述
鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾 滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生 命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式 进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给 出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

输入
第一行为整数n( 1 < n <= 20);
其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。
这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。

输出
有n-1行输出,分别表示对应改进疗法的效果:
如果效果更好,输出better;如果效果更差,输出worse;否则输出same

样例输入

5
125 99
112 89
145 99
99 97
123 98

样例输出

same
worse
better
same

代码

#include<stdio.h>
int main()
{
	int n,a,b,i;
	float x,y;
	int arr[20]={0};
	scanf("%d",&n);
	scanf("%d%d",&a,&b);
	x=1.0*b/a;
	for(i=1;i<n;i++){
		scanf("%d%d",&a,&b);
		y=1.0*b/a;
		if(y-x>0.05)
			arr[i]=1;	
		else if(x-y>0.05)
			arr[i]=-1;			
		else
			arr[i]=0;		
	}
	for(i=1;i<n;i++){
		if(arr[i]==1)
			printf("better\n");
		else if(arr[i]==-1)
			printf("worse\n");
		else
			printf("same\n");
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小曾爱吃榴莲

非常感谢你的认可!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值