1. 程式人生 > >coursera 中計算概論的第四周 B-03作業

coursera 中計算概論的第四周 B-03作業

1.

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

using namespace std;

int main()
{
    //一箱n個蘋果,蟲子每x小時吃掉一個蘋果,經過y小時以後剩餘的蘋果
    int n,x,y;
    cin >> n >> x >> y ;
    int eaten;//eaten為蟲子吃掉的蘋果
    if(y/x)
        eaten=y/x+1;//蟲子吃剩的也不要了
    else
        eaten=y/x;//剛好吃完
    cout << n-eaten << endl;
    return 0;
}

2.

/*
*描述
一隻大象口渴了,要喝20升水才能解渴,但現在只有一個深h釐米,底面半徑為r釐
米的小圓桶(h和r都是整數)。問大象至少要喝多少桶水才會解渴。(設PAI=3.14159)
*輸入
輸入有一行:分別表示小圓桶的深h,和底面半徑r,單位都是釐米。
*輸出
輸出也只有一行,大象至少要喝水的桶數。
*/
/*
浮點運算的誤差
判斷小數是否整除
       如果整除
       n=x/y;那麼y*n==x+THRES&&y*n==x-THRES ;
*/
#include <iostream>
#define PAI 3.14159
#define THRES 0.00001
using namespace std;

int main()
{
    int h,r;//桶深h,底面半徑r
    //計算一桶水的體積
    cin >> h >> r ;
    double volum;
    int totle =20*1000;//統一為ml,可能能減小誤差
    volum=PAI * r *r *h;
    int  n=totle/volum;//n為需要的桶的數量
    if(n==0)
    {
        n=1;
    }
    else if(n*volum==totle+THRES&&n*volum==totle-THRES)
    {
        n=(int)totle/volum;
    }
    else
        n=totle/volum+1;
    cout << n << endl;
    return 0;
}

3.1

/*
描述
孫老師 講授的《計算概論》這門課期中考試剛剛結束,他想知道考試中取得的
最高分數。因為人數比較多,他覺得這件事情交給計算機來做比較方便。你能幫
孫老師解決這個問題嗎?
輸入
輸入為二行,第一行為整數n(1 <= n < 100),表示參加這次考試的人數.第二行
是這n個學生的成績
輸出
輸出一行,即最高的成績
樣例輸入
5
85 78 90 99 60
樣例輸出
99
*/
//使用陣列實現
#include <iostream>

using namespace std;

int main()
{
    int n;//一共有n個分數
    cin >> n;
    int record[n];
    for (int i=0;i<n;i++)
    {
        cin >> record[i];
    }
    //使用氣泡排序 降序
    int i,j;
    for(i=0;i<n;i++)
        for(j=1;j<n-i-1;j++)
    {
        if(record[j]>record[j-1])
        {
            int temp =record[j];
            record[j]=record[j-1];
            record[j-1]=temp;
        }
    }
    cout << record[0] << endl;
    return 0;
}

3.2

/*
描述
孫老師 講授的《計算概論》這門課期中考試剛剛結束,他想知道考試中取得的
最高分數。因為人數比較多,他覺得這件事情交給計算機來做比較方便。你能幫
孫老師解決這個問題嗎?
輸入
輸入為二行,第一行為整數n(1 <= n < 100),表示參加這次考試的人數.第二行
是這n個學生的成績
輸出
輸出一行,即最高的成績
樣例輸入
5
85 78 90 99 60
樣例輸出
99
*/
//不用陣列實現
#include <iostream>

using namespace std;

int main()
{
    int n;//n為分數的個數
    cin >> n ;
    int max=0;//temp來儲存分數
    for(int i=0;i<n;i++)
    {
        int temp=0;
        cin >> temp;
        if(max<temp)
        {
            max=temp;
        }
    }
    cout << max << endl;
    return 0;
}

4.

/*
描述
輸入6個正整數,且這6個正整數中至少存在一個奇數和一個偶數。
設這6個正整數中最大的奇數為a,最小的偶數為b,求出|a-b|的值
輸入
輸入為一行,6個正整數,且6個正整數都小於100
輸入保證這6個數中至少存在一個奇數和一個偶數
輸出
輸出為一行,輸出最大的奇數與最小的偶數之差的絕對值
樣例輸入
1 2 3 4 5 6
樣例輸出
3
*/
//不使用陣列實現
#include <iostream>

using namespace std;

int main()
{
    int maxodd=0,minEven=100;//maxodd為最大的奇數,mineven為最小的偶數
    int i;
    for(i=0;i<6;i++)
    {
        int temp;
        cin >> temp ;
        if(temp%2)//temp為奇數
        {
            if(temp>maxodd)
            maxodd=temp;
        }
        else//temp為偶數
        {
            if(temp<minEven)
            minEven=temp;
        }
    }
    if(maxodd>minEven)
        cout << maxodd-minEven << endl;
    else
        cout << minEven-maxodd << endl;
    return 0;
}

5.
/*描述
從鍵盤輸入一個任意的三位整數,要求正確地分離出它的百位、十位和個位數,並分別在螢幕上輸出,輸出採用每行輸出一個數的方式,不帶其它符號。

輸入
一個任意的三位整數
輸出
一個任意的三位整數
樣例輸入
123
樣例輸出
1
2
3
*/
#include <iostream>

using namespace std;

int main()
{
    int num;//輸入一個數
    cin >> num;
    cout << num/100 << endl;
    cout << (num%100)/10 << endl;
    cout << num%10 << endl;
    return 0;
}