【2022.12.11每天四个简单题之简单题大智慧系列5】(数组中的列,字符串长度,去掉多余的空格,字符串插入 )

数组中的列

输入一个二维数组 M[12][12],根据输入的要求,求出二维数组中某一列的元素的平均值或元素的和。

输入格式
第一行输入整数 C,表示所求的具体列数(列数从 0 开始计数)。

第二行包含一个大写字母,若为 S,则表示需要求出第 C 列的元素的和,若为 M,则表示需要求出第 C 列的元素的平均值。

接下来 12 行,每行包含 12 个用空格隔开的浮点数,表示这个二维数组,其中第 i+1 行的第 j+1 个数表示数组元素 M[i][j]。

输出格式
输出一个数,表示所求的平均数或元素的和的值,保留一位小数。

数据范围
−100.0≤M[i][j]≤100.0
输入样例:
1
S
-9.0 -2.4 -3.3 2.4 -9.7 -5.7 -5.3 6.5 -7.3 4.8 -4.1 3.9
1.6 -0.9 9.2 -7.5 1.0 -8.0 -4.1 -4.0 -0.1 -9.0 8.4 4.9
-8.2 -0.3 -5.1 -5.6 6.6 0.9 -1.0 -5.4 -2.1 -4.5 -8.7 -1.1
-4.2 6.5 -8.2 3.6 -4.6 -9.2 -1.7 6.9 -9.0 -9.8 7.7 -3.4
-8.0 5.7 4.8 0.3 -1.4 2.8 -6.3 9.3 0.3 6.3 1.5 -1.7
1.7 -0.0 9.7 -6.6 1.3 -2.0 -6.1 2.0 -7.8 -4.7 -9.1 6.0
-8.2 -1.7 9.4 -1.2 -1.0 -9.0 -7.0 -6.9 -1.6 -6.8 -6.7 1.8
4.8 1.3 -6.1 -0.6 0.5 -2.9 -6.8 1.5 5.8 3.2 0.0 7.7
6.3 1.1 4.7 7.3 7.6 5.6 0.9 9.2 1.3 -4.9 7.8 -4.9
0.5 3.5 -5.0 9.0 8.8 8.7 7.5 7.5 -9.6 -6.9 -1.6 6.9
7.8 5.6 -6.4 3.6 2.3 0.5 4.1 6.1 8.6 -9.3 2.2 -0.4
9.9 0.9 6.4 -2.8 -4.2 -7.6 0.6 9.6 3.0 0.9 5.1 4.5
输出样例:
19.3
这个题也是比较好做,就是一些像我一样的新手,如果要是用scanf的话,想用%c来输入的话可能会出问题,原因是凡是再输入字符前有输入操作的,都是后面会有一个换行符,这样那个%c会读取那个换行符,所以要么在前面加上getchar,要么在前面输入的地方加一个空格,要么在第一个输入后面或第二个输入前面加上反斜杠n,这样才可以避免%c无法输入的问题,不过用cin就不会出这种问题了
代码如下:

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int c;
    scanf("%d ",&c);//一定要有那个空格
    char a;
    scanf("%c",&a);
    double m,sum=0;
    for(int i=0;i<12;i++){
        for(int j=0;j<12;j++){
            scanf("%lf ",&m);
            if(j==c){
                sum+=m;
            }
        }
    }
    printf("%.1f\n",a=='S'?sum:sum/12);
    return 0;
}

字符串长度

给定一行长度不超过 100 的非空字符串,请你求出它的具体长度。

输入格式
输入一行,表示一个字符串。注意字符串中可能包含空格。

输出格式
输出一个整数,表示它的长度。

数据范围
1≤字符串长度≤100
字符串末尾无回车

输入样例:
I love Beijing.
输出样例:
15
可能会包含空格,如果要是用char初始化则要用fgets或者cin.getline输入字符串,要是要用string的话就用getline输入

另外,数组一定要开大一点!!!
代码如下:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    char a[101];
    fgets(a,101,stdin);
    int len;
    len=strlen(a);
    printf("%d",len);
    return 0;
}

去掉多余的空格

输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。

输入格式
共一行,包含一个字符串。

输出格式
输出去掉多余空格后的字符串,占一行。

数据范围
输入字符串的长度不超过 200。
保证输入字符串的开头和结尾没有空格。

输入样例:
Hello world.This is c language.
输出样例:
Hello world.This is c language.
去掉空格,我们可以直接只用cin输入(cin输入是指输入到空格停止),然后我们输入一个string就当即输出它即刻
代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    string s1;
    while(cin>>s1){
        cout<<s1<<' ';
    }
    return 0;
}

字符串插入

有两个不包含空白字符的字符串 str 和 substr,str 的字符个数不超过 10,substr 的字符个数为 3。(字符个数不包括字符串结尾处的 \0。)

将 substr 插入到 str 中 ASCII 码最大的那个字符后面,若有多个最大则只考虑第一个。

输入格式
输入包括若干行,每一行为一组测试数据,格式为

str substr

输出格式
对于每一组测试数据,输出插入之后的字符串。

输入样例:
abcab eee
12343 555
输出样例:
abceeeab
12345553
此题用到了insert函数,就是插入字符串函数
我们可以先遍历一遍str字符串,然后记录下来ASCLL码最大的那一位,然后我们就可以从那个位置的下一位插入字符串了
代码如下:

#include <iostream>
using namespace std;

int main()
{
    string s,sub;
    while(cin >> s>>sub)
    {
        int idx=0;
        for(int i=0;i<s.size();i++)
            if(s[i] > s[idx])
            {
                idx= i;
            }
        s.insert(idx+1,sub);
        cout<<s<<endl;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想进步的22级本科生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值