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; //初始化每行最大值所在的列索引=1for(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;//初始化每列最小值所在的行索引=1for(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;
}