程序設計與算法 | (10) Lecture(5) OJ作業

OJ地址

Lecture (5)包含以下七道編程題,可以在上面的OJ提交。

028:與指定數字相同的數的個數

在這裏插入圖片描述

#include <iostream>
using namespace std;
#define N 100
int a[N+10];
int main(int argc, const char * argv[]) {
   
    int n;
    cin>>n;
    int i;
    for(i=0;i<n;i++)
        cin>>a[i];
    int m;
    cin>>m;
    int count = 0;
    for(i=0;i<n;i++)
        if(a[i]==m)
            count++;
    cout<<count<<endl;
    return 0;
}

029:陶陶摘蘋果

在這裏插入圖片描述

#include <iostream>
using namespace std;
#define N 10
int a[N+5];

int main(int argc, const char * argv[]) {
    
    int i;
    for(i=0;i<10;i++)
        cin>>a[i];
    int h;
    cin>>h;
    
    int count=0;
    for(i=0;i<10;i++)
        if(a[i]<=h+30)
            count++;
    cout<<count<<endl;
    return 0;
}

030:年齡與疾病

在這裏插入圖片描述

#include <iostream>
using namespace std;


int main(int argc, const char * argv[]) {
    
    int n;
    scanf("%d",&n);

    int c1=0,c2=0,c3=0,c4=0;
    int m;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&m);
        if(m>=0&&m<=18)
            c1++;
        if(m>=19&&m<=35)
            c2++;
        if(m>=36&&m<=60)
            c3++;
        if(m>=61)
            c4++;
    }
    printf("%.2lf%%\n",double(c1)/n*100); //輸出% 要用兩個%%
    printf("%.2lf%%\n",double(c2)/n*100);
    printf("%.2lf%%\n",double(c3)/n*100);
    printf("%.2lf%%\n",double(c4)/n*100);
    
    
    return 0;
}

031:校門外的樹

在這裏插入圖片描述

#include <iostream>
using namespace std;
#define N 10000
char trees[N+10];

int main(int argc, const char * argv[]) {
    
    int L,M;
    cin>>L>>M;
    
    int s,e;
    while(M--)
    {
        cin>>s>>e;
        for(int i=s;i<=e;i++)
            trees[i]=1;
    }
    int count = 0;
    for(int i=0;i<=L;i++)
        if(trees[i]==0)
            count++;
    cout<<count<<endl;
    return 0;
}

032:計算鞍點

在這裏插入圖片描述

#include <iostream>
using namespace std;
#define N 5
int a[N+10][N+10];
int maxJ[N+10]; //存儲每行最大值所在的列索引
int minI[N+10]; //存儲沒列最小值所在的行索引

int main(int argc, const char * argv[]) {
    
    for(int i=1;i<=N;i++)
    {
        cin>>a[i][1];
        maxJ[i]=1; //初始化每行最大值所在的列索引=1
        for(int j=2;j<=N;j++)
        {
            cin>>a[i][j];
            if(a[i][j]>a[i][maxJ[i]])
                maxJ[i]=j;
        }
    }
    
    for(int j=1;j<=N;j++)
    {
        minI[j]=1;//初始化每列最小值所在的行索引=1
        for(int i=1;i<=N;i++)
        {
            if(a[i][j]<a[minI[j]][j])
                minI[j]=i;
        }
    }
    
    bool found = false;
    for(int i=1;i<=N;i++) //遍歷每一行
    {
        if(minI[maxJ[i]]==i)
        {
            cout<<i<<" "<<maxJ[i]<<" "<<a[i][maxJ[i]]<<endl;
            found=true;
        }
    }
    if(!found)
        cout<<"not found"<<endl;
    
            
    return 0;
}

033:圖像模糊處理

在這裏插入圖片描述

#include <iostream>
#include <cmath>
using namespace std;
#define N 100
int a[N+10][N+10];

int main(int argc, const char * argv[]) {
    
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        for (int j=0; j<m; j++) {
            cin>>a[i][j];
        }
    }

    for(int i=0;i<n;i++)
    {
       for (int j=0; j<m; j++) {
           if(j==0)
               cout<<a[i][j];
           else if(i==0||i==n-1||j==m-1)
               cout<<" "<<a[i][j];
           else
           {
               double res = (a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5.0;
               cout<<" "<<round(res); //round是把浮點數四捨五入爲整數
           }
       }
        cout<<endl;      
    }
    return 0;
}

034:矩陣轉置

在這裏插入圖片描述

#include <iostream>
using namespace std;
#define N 100
int a[N+10][N+10];

int main(int argc, const char * argv[]) {
    
    int m,n;
    cin>>m>>n;
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
            cin>>a[i][j];
    
    for(int j=0;j<n;j++)
    {
        for(int i=0;i<m;i++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章