1. 程式人生 > >慕課-程式設計與演算法(大學先修課)-郭煒-第三週練習題

慕課-程式設計與演算法(大學先修課)-郭煒-第三週練習題

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;
}