慕課-程式設計與演算法(大學先修課)-郭煒-第三週練習題
1.給定一個整數,判斷該數是奇數還是偶數。
#include<iostream>
using namespace std;
int main()
{
long int a;
cin>>a;
if(a%2==0)
cout<<"even";
else
cout<<"odd";
return 0;
}
2.利用公式x1= (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,其中a不等於0。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double a,b,c,x1,x2,d,e,f;
cin>>a>>b>>c;
x1 = (-b + sqrt(b*b-4*a*c))/(2*a);
x2 = (-b - sqrt(b*b-4*a*c))/(2*a);
d=b*b -4 * a * c;
if(d==0)
{
printf("x1=x2=%.5f",x1);
}
else if(d>0)
{
printf("x1=%.5f;x2=%.5f",x1,x2);
}
else
{
e=-b / (2*a)+0;
f=sqrt(4*a*c-b*b) / (2*a);
printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi",e,f,e,f);
}
return 0;
}
3.有一個正方形,四個角的座標(x,y)分別是(1,-1),(1,1),(-1,-1),(-1,1),x是橫軸,y是縱軸。寫一個程式,判斷一個給定的點是否在這個正方形內(包括正方形邊界)。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
a=abs(a);
b=abs(b);
if(a<=1&&b<=1)
printf("yes");
else
printf("no");
return 0;
}
4.你買了一箱n個蘋果,很不幸的是買完時箱子裡混進了一條蟲子。蟲子每x小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那麼經過y小時你還有多少個完整的蘋果?
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double c,b;
int a;
cin>>a>>b>>c;
a=a-c/b;
if(a>0)
cout<<a;
else
cout<<"0";
return 0;
}
5.一個最簡單的計算器,支援+, -, *, / 四種運算。僅需考慮輸入輸出為整數的情況,資料和運算結果不會超過int表示的範圍。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int a,b;
char c;
cin>>a>>b>>c;
switch(c)
{
case '+':
cout<<a+b;
break;
case '-':
cout<<a-b;
break;
case '*':
cout<<a*b;
break;
case '/':
if(b==0)
{
cout<<"Divided by zero!";
}
else
cout<<a/b;
break;
default :
cout<<"Invalid operator!";
break;
}
return 0;
}
6.讀入n(1 <= n <= 10000)個整數,求它們的和與均值。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double a,n;
long int sum=0;
cin>>a;
for(int i=0;i<a;i++)
{
cin>>n;
sum+=n;
}
printf("%ld %.5f",sum,sum/a);
return 0;
}
7.給定一個長度為n的非負整數序列,請計算序列的最大跨度值(最大跨度值 = 最大值減去最小值)。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
long int a,max=0,min=0,n;
cin>>a;
cin>>n;
max=n;
min=n;
for(int i=0;i<a-1;i++)
{
cin>>n;
if(n>max)
max=n;
if(n<min)
min=n;
}
printf("%ld",max-min);
return 0;
}
8.2008年北京奧運會,A國的運動員參與了n天的決賽專案(1≤n≤17)。現在要統計一下A國所獲得的金、銀、銅牌數目及總獎牌數。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int a,b=0,c=0,d=0,n;
cin>>a;
for(int i=0;i<a;i++)
{
cin>>n;
b+=n;
cin>>n;
c+=n;
cin>>n;
d+=n;
}
printf("%d %d %d %d",b,c,d,b+c+d);
return 0;
}
9.給出一個整數a和一個正整數n,求乘方an。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
long int a,b,sum=1;
cin>>a>>b;
for(int i=0;i<b;i++)
{
sum*=a;
}
printf("%ld",sum);
return 0;
}
a.雞尾酒療法,原指“高效抗逆轉錄病毒治療”(HAART),由美籍華裔科學家何大一於1996年提出,是通過三種或三種以上的抗病毒藥物聯合使用來治療艾 滋病。該療法的應用可以減少單一用藥產生的抗藥性,最大限度地抑制病毒的複製,使被破壞的機體免疫功能部分甚至全部恢復,從而延緩病程進展,延長患者生 命,提高生活質量。人們在雞尾酒療法的基礎上又提出了很多種改進的療法。為了驗證這些治療方法是否在療效上比雞尾酒療法更好,可用通過臨床對照實驗的方式 進行。假設雞尾酒療法的有效率為x,新療法的有效率為y,如果y-x大於5%,則效果更好,如果x-y大於5%,則效果更差,否則稱為效果差不多。下面給 出n組臨床對照實驗,其中第一組採用雞尾酒療法,其他n-1組為各種不同的改進療法。請寫程式判定各種改進療法效果如何。
#include<iostream>
#include<math.h>
using namespace std;
char s[20];
int main()
{
int a,n;
double b,c,d,x1,x2;
cin>>a;
cin>>b;
cin>>c;
d=c/b;
for(int i=0;i<a-1;i++)
{
cin>>n;
x1=n;
cin>>n;
x2=n/x1;
if(d-x2>0.05)
s[i]=0;
else if(x2-d>0.05)
s[i]=1;
else
s[i]=2;
}
for(int i=0;i<a-1;i++)
{
switch(s[i])
{
case 0:
cout<<"worse"<<endl;
break;
case 1:
cout<<"better"<<endl;
break;
case 2:
cout<<"same"<<endl;
break;
}
}
return 0;
}