程序設計與算法(一)第3周測驗(2020春季)


001:奇偶數判斷

  • 總時間限制: 1000ms 內存限制: 65536kB

描述

  • 給定一個整數,判斷該數是奇數還是偶數。

輸入

  • 輸入僅一行,一個大於零的正整數n。

輸出

  • 輸出僅一行,如果n是奇數,輸出odd;如果n是偶數,輸出even。

樣例輸入

  • 5

樣例輸出

  • odd

AC

#include <iostream>
using namespace std;
int main(){
	int n;
	scanf("%d",&n); 
	if(n%2==0)	printf("even\n");
	else	printf("odd\n");
	return 0;
}

002:求一元二次方程的根

  • 總時間限制: 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

AC

#include<stdio.h>/*求一元二次方程的根*/
#include<math.h>
int main(){
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
if(b*b == 4*a*c){
printf("x1=x2=%.5lf",(0-b+sqrt(b*b-4*a*c))/(2*a));
}else  if(b*b > 4*a*c){
double x1 = (0-b+sqrt(b*b-4*a*c))/(2*a);
double x2 = (0-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%.5lf;x2=%.5lf",x1,x2);
}else if(b*b < 4*a*c){
double shi = (0-b) / (2*a);
double xu1 = sqrt(4*a*c-b*b) / (2*a);
printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi",shi,xu1,shi,xu1);
}
return 0;
}

003:點和正方形的關系

  • 總時間限制: 1000ms 內存限制: 65536kB

描述

  • 有一個正方形,四個角的坐標(x,y)分別是(1,-1),(1,1),(-1,-1),(-1,1),x是橫軸,y是縱軸。寫一個程序,判斷一個給定的點是否在這個正方形內(包括正方形邊界)。

輸入

  • 輸入一行,包括兩個整數x、y,以一個空格分開,表示坐標(x,y)。

輸出

  • 輸出一行,如果點在正方形內,則輸出yes,否則輸出no。

樣例輸入

  • 1 1

樣例輸出

  • yes

AC

#include <iostream>
using namespace std;
int main(){
	int x,y;
	scanf("%d %d",&x,&y);
	if((x<=1 && x>=(-1))&& (y<=1 && y>=(-1)))	printf("yes\n");
	else	printf("no\n");
	return 0;
}

004:蘋果和蟲子2

  • 總時間限制: 1000ms 內存限制: 65536kB

描述

  • 你買了一箱n個蘋果,很不幸的是買完時箱子里混進了一條蟲子。蟲子每x小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那么經過y小時你還有多少個完整的蘋果?

輸入

  • 輸入僅一行,包括n,x和y(均為整數)。

輸出

  • 輸出也僅一行,剩下的蘋果個數

樣例輸入

  • 10 4 9

樣例輸出

  • 7

提示

  • 注意:是要求完整的蘋果數。

AC

#include <iostream>
using namespace std;
int main(){
	int n,x,y,left;
	scanf("%d %d %d",&n,&x,&y);
	if(y%x==0)
		left=n-y/x;
	else
		left=n-y/x-1;	
	if(left<0)	left=0;	//考慮如果吃完了? 
	printf("%d\n",left);
	return 0;
}

005:簡單計算器

  • 總時間限制: 1000ms 內存限制: 65536kB

描述

  • 一個最簡單的計算器,支持+, -, *, / 四種運算。僅需考慮輸入輸出為整數的情況,數據和運算結果不會超過int表示的范圍。

輸入

  • 輸入只有一行,共有三個參數,其中第1、2個參數為整數,第3個參數為操作符(+,-,*,/)。
    ##輸出
  • 輸出只有一行,一個整數,為運算結果。然而:
  1. 如果出現除數為0的情況,則輸出:Divided by zero!
  2. 如果出現無效的操作符(即不為 +, -, *, / 之一),則輸出:Invalid operator!

樣例輸入

  • 1 2 +

樣例輸出

  • 3

提示

  • 可以考慮使用if和switch結構。

AC

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

006:求整數的和與均值

  • 總時間限制: 1000ms 內存限制: 65536kB

描述

  • 讀入n(1 <= n <= 10000)個整數,求它們的和與均值。

輸入

  • 輸入第一行是一個整數n,表示有n個整數。
  • 第2~n+1行每行包含1個整數。每個整數的絕對值均不超過10000。

輸出

  • 輸出一行,先輸出和,再輸出平均值(保留到小數點后5位),兩個數間用單個空格分隔。

樣例輸入

4
344
222
343
222

樣例輸出

  • 1131 282.75000

AC

#include <iostream>
using namespace std;
int main(){
	int n,m,sum=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&m);
		sum += m;
	}
	printf("%d %.5lf\n",sum,(double)sum/n);
	return 0;
}

007:整數序列的元素最大跨度值

  • 總時間限制: 1000ms 內存限制: 65536kB

描述

  • 給定一個長度為n的非負整數序列,請計算序列的最大跨度值(最大跨度值 = 最大值減去最小值)。

輸入

  • 一共2行,第一行為序列的個數n(1 <= n <= 1000),第二行為序列的n個不超過1000的非負整數,整數之間以一個空格分隔。

輸出

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

樣例輸入

6
3 0 8 7 5 9

樣例輸出

  • 9

AC

#include <iostream>
using namespace std;
int main(){
	int n,m,min=1001,max=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&m);
		if(max<m)	max=m;
		if(min>m)	min=m;
	} 
	printf("%d\n",max-min);	
	return 0;
} 

008:奧運獎牌計數

  • 總時間限制: 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

AC

#include <iostream>
using namespace std;
int main(){
	int n,j,y,t,s1=0,s2=0,s3=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d %d %d",&j,&y,&t);
		s1 += j;
		s2 += y;
		s3 += t;
	} 
	printf("%d %d %d %d\n",s1,s2,s3,s1+s2+s3);
	return 0;
}

009:乘方計算

  • 總時間限制: 1000ms 內存限制: 65536kB

描述

  • 給出一個整數a和一個正整數n,求乘方an。

輸入

  • 一行,包含兩個整數a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。

輸出

  • 一個整數,即乘方結果。題目保證最終結果的絕對值不超過1000000。

樣例輸入

  • 2 3

樣例輸出

  • 8

AC

#include <iostream>
using namespace std;
int main(){
	int a,n,str;
	scanf("%d %d",&a,&n);
	str=a;
	for(int i=2;i<=n;i++)
		str *= a;
	printf("%d\n",str);
	return 0;
}

010:雞尾酒療法

  • 總時間限制: 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

AC

#include <iostream>
using namespace std;
int main(){
	int n,s1,s2;
	double x=0,y=0;
	scanf("%d",&n);
	scanf("%d %d",&s1,&s2);
	x=s2*1.0/s1;
	for(int j=2;j<=n;j++){
		scanf("%d %d",&s1,&s2);
		y=s2*1.0/s1;
		if(y-x>0.05)	printf("better\n");
		else{
			if(x-y>0.05)	printf("worse\n");
			else	printf("same\n");
		}
	}
	return 0;
} 

第三周結束!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM