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

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

1.輸出一個整數序列中與指定數字相同的數的個數。

#include<iostream>
#include<math.h>
using namespace std;
int s[101];
int main()
{
    int m,n,count=0;
    cin>>m; 
    for(int i=0;i<m;++i)
    {
        cin>>n;
        s[i]=n;
    }
    cin>>n;
    for(int i=0;i<m;++i)
    {
        if(s[i]==n)
            count++;
    }
    cout
<<count; return 0; }

2.陶陶家的院子裡有一棵蘋果樹,每到秋天樹上就會結出10個蘋果。蘋果成熟的時候,陶陶就會跑去摘蘋果。陶陶有個30釐米高的板凳,當她不能直接用手摘到蘋果的時候,就會踩到板凳上再試試。
現在已知10個蘋果到地面的高度,以及陶陶把手伸直的時候能夠達到的最大高度,請幫陶陶算一下她能夠摘到的蘋果的數目。假設她碰到蘋果,蘋果就會掉下來。

#include<iostream>
#include<math.h>
using namespace std;
int s[15];
int main()
{
    int m,n,count=0
; for(int i=0;i<11;++i) { cin>>n; s[i]=n; } for(int i=0;i<10;++i) { if(s[i]<=(s[10]+30)) count++; } cout<<count; return 0; }

3.某醫院想統計一下某項疾病的獲得與否與年齡是否有關,需要對以前的診斷記錄進行整理,按照0-18、19-35、36-60、61以上(含61)四個年齡段統計的患病人數佔總患病人數的比例。

#include<iostream>
#include<math.h> using namespace std; int s[115]; int main() { double m; int n,count=0,a,b,c,d; a=b=c=d=0; cin>>m; for(int i=0;i<m;++i) { cin>>n; if(n>=0&&n<=18) a++; else if(n>=19&&n<=35) b++; else if(n>=36&&n<=60) c++; else d++; } printf("%.2f%%\n%.2f%%\n%.2f%%\n%.2f%%\n",a/m*100,b/m*100,c/m*100,d/m*100); return 0; }

4.某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數軸上的每個整數點,即0,1,2,……,L,都種有一棵樹。
由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹都移走後,馬路上還有多少棵樹。

#include<iostream>
#include<math.h>
using namespace std;
int s[11000];
int main()
{
    int l,m,a,b,count=0;
    cin>>l>>m;
    for(int i=0;i<=l;++i)
    {
        s[i]=1;
    }
    for(int i=0;i<m;++i)
    {
        cin>>a>>b; 
        for(int j=a;j<=b;++j)
            s[j]=0;
    }
    for(int i=0;i<=l;++i)
    {
        if(s[i])
            count++;
    }
    cout<<count;
    return 0;
}

5.給定一個5*5的矩陣,每行只有一個最大值,每列只有一個最小值,尋找這個矩陣的鞍點。
鞍點指的是矩陣中的一個元素,它是所在行的最大值,並且是所在列的最小值。
例如:在下面的例子中(第4行第1列的元素就是鞍點,值為8 )。
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25

#include<iostream>
#include<math.h>
using namespace std;
int a[5][5];
int main()
{
    int n,p,q;
    bool judge=1;
    for(int i=0;i<5;++i)
    {
        for(int j=0;j<5;j++)
        {
            cin>>n;
            a[i][j]=n;
        }
    }
    for(int i=0;i<5;++i)
    {
        for(int j=0;j<5;j++)
        {
            p=i;q=j;
            if(a[p][q]>=a[p][0]&&a[p][q]>=a[p][1]&&a[p][q]>=a[p][2]&&a[p][q]>=a[p][3]&&a[p][q]>=a[p][4]&&
                a[p][q]<=a[0][q]&&a[p][q]<=a[1][q]&&a[p][q]<=a[2][q]&&a[p][q]<=a[3][q]&&a[p][q]<=a[4][q])
            {
                cout<<p+1<<" "<<q+1<<" "<<a[p][q];
                judge=0;
            }
        }
    }
    if(judge)
        cout<<"not found";
    return 0;
}

6.給定n行m列的影象各畫素點的灰度值,要求用如下方法對其進行模糊化處理:
1. 四周最外側的畫素點灰度值不變;
2. 中間各畫素點新灰度值為該畫素點及其上下左右相鄰四個畫素點原灰度值的平均(舍入到最接近的整數)。

#include<iostream>
#include<math.h>
using namespace std;
int s[105][105];
int w[105][105];
int main()
{
    int n, m, a;
    cin >> n >> m;
    for (int i = 0;i<n;++i)
        for (int j = 0;j<m;++j)
        {
            cin >> a;
            s[i][j] = a;
            w[i][j] = s[i][j];
        }
    if (n <= 2 || m <= 2)
    {
        for (int i = 0;i<n;++i)
            for (int j = 0;j<m;++j)
            {
                if (j == m - 1)
                    cout << w[i][j] << endl;
                else
                    cout << w[i][j] << " ";
            }
    }
    else
    {
        for (int i = 1;i < n - 1;++i)
            for (int j = 1;j < m - 1;++j)
            {
                w[i][j] = (int)((s[i][j] + s[i][j + 1] + s[i][j - 1] + s[i + 1][j] + s[i - 1][j]) / (double)5+0.5);
            }
        for (int i = 0;i < n;++i)
            for (int j = 0;j < m;++j)
            {
                if (j == m - 1)
                    cout << w[i][j] << endl;
                else
                    cout << w[i][j] << " ";
            }
    }
    return 0;
}

7.輸入一個n行m列的矩陣A,輸出它的轉置AT。

#include<iostream>
#include<math.h>
using namespace std;
int s[105][105];
int w[105][105];
int main()
{
    int n,m,a;
    cin >>n>>m;
    for(int i=0;i<n;++i)
    {
        for(int j=0;j<m;++j)
        {
            cin>>a;
            s[i][j]=a;
            w[j][i]=a;
        }
    }
    for(int i=0;i<m;++i)
    {
        for(int j=0;j<n;++j)
        {
            if(j==n-1)
                cout<<w[i][j]<<endl;
            else
                cout<<w[i][j]<<" ";
        }
    }
    return 0;
}

相關推薦

-程式設計演算法大學)--練習題

1.輸出一個整數序列中與指定數字相同的數的個數。 #include<iostream> #include<math.h> using namespace std; int s[101]; int main() { int m

-程式設計演算法大學)--練習題

1.輸入一行字元,統計出其中數字字元的個數。 #include <iostream> using namespace std; int main() { char ch; int count = 0; whi

-程式設計演算法大學)--練習題

1.給定一個整數,判斷該數是奇數還是偶數。 #include<iostream> using namespace std; int main() { long int a; cin>>a; if(a%2==0)

-程式設計演算法大學)--第一練習題

1.輸入三個整數,把第二個輸入的整數輸出。 #include<iostream>using namespace std;int main(){int a,b,c; cin>>a

-程式設計演算法大學)--八九周練習題

1.下面程式片段的輸出結果是 Hello ,請填空 #include <iostream> using namespace std; int main() { char s[] = "Hello"; char * p;

程式設計演算法二)測驗 3:棋盤問題

3:棋盤問題 檢視 提交 統計 提問 總時間限制:  1000ms   記憶體限制:  65536kB 描述 在一個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放

程式設計演算法二)測驗 2:A Knight's Journey

2:A Knight's Journey 檢視 提交 統計 提問 總時間限制:  1000ms   記憶體限制:  65536kB 描述 Background The knight is getting bor

程式設計演算法二)測驗 1:紅

1:紅與黑 檢視 提交 統計 提問 總時間限制:  1000ms   記憶體限制:  65536kB 描述 有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑

程式設計演算法一)測驗

8:奧運獎牌計數 描述 2008年北京奧運會,A國的運動員參與了n天的決賽專案(1≤n≤17)。現在要統計一下A國所獲得的金、銀、銅牌數目及總獎牌數。2008年北京奧運會,A國的運動員參與了n天的決賽專案(1≤n≤17)。現在要統計一下A國所獲得的金、銀、銅牌

程式設計演算法三)九周 標準模板庫STL二)2)

STL演算法(一) STL演算法分類 不變序列演算法 變值演算法 刪除演算法 變序演算法 排序演算法 有序區間演算法 數值演算法 大多數過載的演算法都是有兩個版本的 用“==”判斷元素是否相等,或

程式設計演算法三) c++新特性和c++高階主題3)

強制型別轉換 :static_cast、interpret_cast、const_cast、dynamic_cast 1、static_cast:static_cast 用來進行比較“自然”和低風險的轉

北京大學MOOC C++程式設計 程式設計演算法三)測驗

1:返回什麼才好呢 程式填空,使其按要求輸出 #include <iostream> using namespace std; class A { public: int val; A(int // 在此處補充你的程式碼 }; int main()

北京大學MOOC C++程式設計 程式設計演算法三)四周測驗

1:MyString 補足MyString類,使程式輸出指定結果 #include <iostream> #include <string> #include <cstring> using namespace std; class M

北京大學MOOC C++程式設計 程式設計演算法三)測驗

1:簡單的SumArray 描述 填寫模板 PrintArray,使得程式輸出結果是: TomJackMaryJohn 10 不得編寫SumArray函式 #include <iostream> #include <string> using n

程式設計演算法二)演算法基礎_北京大學 學習筆記一)

第一週 列舉 所有題目用python實現 例題1 完美立方 N=int(input ('N=')) for a in range(3,N+1): for b in range(

程式設計演算法三) c++新特性和c++高階主題 2)

無序容器(雜湊表) //雜湊表插入和查詢的時間複雜度幾乎是常數 #include <iostream> #include <string> #include <unordered_map> using namespace std; int main

程式設計演算法三) c++新特性和c++高階主題 1)

#include <iostream> using namespace std; class A{}; A operator+(int n, const A& a) { return a; } template<class T1, class

程式設計演算法一)第二測驗(2017夏季) 解題報告

a 對齊輸出 #include <stdio.h> int main(){ int a,b,c; while (~scanf("%d%d%d",&a,&a

聽課筆記---程式設計演算法三)C++面向物件程式設計偉老師)---

Week3 目錄 this 指標 靜態成員函式和靜態成員變數 成員物件和封閉類 常量物件和常量函式 友元 內容與思考 this 指標 靜態成員函式和靜態成員變數 歷史由來 C++原來沒有編譯器,可以

MOOC程式設計演算法二)第一測驗(2017夏季)特殊密碼鎖

特殊密碼鎖 特殊密碼鎖 Time Limit: 1000ms Memory Limit: 1024kB Description 有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成(n<30),按鈕有凹/凸兩種狀態,用手按按鈕會改變其狀態。 然而讓