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