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