C++二级2021年9月试卷及答案

1.满足条件的数累加

将正整数m和n之间(包括m和n)能被17整除的数累加,其中,0<m<n<1000。

输入:

一行,包含两个整数m和n,其间,以一个空格间隔。

输出:

输出一行,包含一个整数,表示累加的结果。

输入样例:

50 85

输出样例:

204

cpp 复制代码
int main()
{
    int m,n,sum=0;
    int i;
 
    cin>>m>>n;//输入m、n
    for(i=m; i<=n; i++) //在区间内循环
        if(i%17==0)//满足条件
            sum+=i;//累加
 
    cout<<sum<<endl;
    return 0;
}

2.统计字符数

给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。

输入

输入包含一行,一个字符串,长度不超过1000.

输出

输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。

如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。

输入样例

abbccc

输出样例

c3

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
	int cnt[26];
	int max=0;
	int len;
	char str[1010];//字符串
	char ch;
	memset(str,0,sizeof(str));//清零
	memset(cnt,0,sizeof(cnt));//清零
	gets(str);//获取字符串 
	len=strlen(str);//获取长度 
	for(int i=0; i<len; i++) {//计数 
		cnt[str[i]-'a']++;//把计数器此字符的ASCII码-a的ASCII的那一项加一 
	}
	for(int i=0; i<26; i++) {//找最大值 
		if(cnt[i]>max) {//用大于号做判断不用考虑输出ASCII小的那个,用大于等于就需要考虑 
			ch=(char)i+'a';//i+a的ASCII转成字符保存 
			max=cnt[i]; 
		}
	}
	cout<<ch<<" "<<max; //输出出现次数最多的字符和该字符出现的次数
	return 0;
}

3.替换单词

输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格

隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

时间限制:1000

内存限制:65536

输入

输入包括3行,第1行是包含多个单词的字符串s;第2行是待替换的单词a(长度<= 100);第3行是a将被替

换的单词b(长度<= 100).s, a,b 最前面和最后面都没有空格,

输出

输出只有1行,将s中所有单词a替换成b之后的字符串.

样例输入

You want someone to help you

You

I

样例输出

I want someone to help you

cpp 复制代码
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
    int flag = 0;
    string s,a,b;
    vector<string>words;  //用来保存各个单词
    vector<string>switch;  //用来保存各个单词
    getline(cin,s);  //为了接受一行带空格的字符串
    cin>>a>>b;
    //将s中的单词提取到words
    for(int i=0,j=0;i<s.size();++i){
        if(s[i]!=' ')               
            words[j] += s[i];
        else{
            ++j;
        }
 }
    for(int i=0;i<words.size();++i)
    {  //找到第一个要替换的单词并替换
        if((0 == strcmp(words[i],a)) &&(0 == flag))
        {
            switch.push(b);
            flag++
        }//将单词放到switch
        else
        {
            switch.push(words[i]);
        }
    }
    for(int i=0;i<switch.size();++i)
        {  //输出
        cout<<switch[i]<<" ";
    }
    return 0;
}

4.偶数降序输出

给定一个长度为N(不大于500)的正整数序列,请将其中的所有偶数取出,并按降序输出。

输入

共2行:

第1行为N;

第2行为N个整数,其间用空格间隔。

输出

降序输出的偶数序列,数之间以空格间隔。数据保证至少有一个偶数。

样例输入

10

1 3 2 6 5 4 9 8 7 10

样例输出

10 8 6 4 2

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int a[N];
bool cmp(int num1,int num2){
	return num1 >= num2;
}
main(){
	int n,t;
	int j=0; 
	
	cin>>n;
	for(int i = 0;i<n;i++){
		cin>>a[i];
	}
	
	for(int i=0;i<n;i++){
		if(a[i] % 2 == 0){
			t = a[i];
			a[j++] = t;
		}
	}
	sort(a,a+j,cmp);
	for(int i=0;i<j;i++){
		cout<<a[i]<<" ";
	}
	cout<<endl;
}

5.图像处理

给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

1.四周最外侧的像素点灰度值不变;

2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

时间限制:1000

内存限制:65536

输入

第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1<=n<= 100,1<=m<= 100。接下来n行,每

行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。

输出

n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。

样例输入

4 5

100 0 100 0 50

50 100 200 0 0

50 50 100 100 200

100 100 50 50 100

样例输出

100 0 100 0 50

50 80 100 60 0

50 80 100 90 200

100 100 50 50 100

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int a[1001][1001],n,m,i,j;
double b[1001][1001];
int main() {
	cin>>n>>m;
	for(i=1; i<=n; i++) {
		for(j=1; j<=m; j++) {
			cin>>a[i][j];
			b[i][j]=a[i][j];
		}
	}
	for(i=2; i<n; i++) {
		for(j=2; j<m; j++)
			b[i][j]=round(a[i-1][j]+a[i][j-1]+a[i+1][j]+a[i][j+1]+a[i][j])/5.0;
	}
	for(i=1; i<=n; i++) {
		for(j=1; j<=m; j++)
			printf("%.0lf ",b[i][j]);
		printf("\n");
	}
	return 0;
}
相关推荐
我们的五年17 分钟前
【Linux课程学习】:进程描述---PCB(Process Control Block)
linux·运维·c++
程序猿阿伟33 分钟前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链
爱摸鱼的孔乙己1 小时前
【数据结构】链表(leetcode)
c语言·数据结构·c++·链表·csdn
烦躁的大鼻嘎2 小时前
模拟算法实例讲解:从理论到实践的编程之旅
数据结构·c++·算法·leetcode
IU宝2 小时前
C/C++内存管理
java·c语言·c++
fhvyxyci2 小时前
【C++之STL】摸清 string 的模拟实现(下)
开发语言·c++·string
C++忠实粉丝2 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
古月居GYH2 小时前
在C++上实现反射用法
java·开发语言·c++
Betty’s Sweet2 小时前
[C++]:IO流
c++·文件·fstream·sstream·iostream
敲上瘾2 小时前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc