字符串和字符数组

2446

统计字符

简单

15

66%

2466

判断回文串

简单

19

57%

3418

分数最高的同学

简单

35

57%

2455

拼接姓名

简单+

28

35%

2470

字符串判等

简单+

45

35%

2457

首尾互换

简单+

76

13%

2450

逗号分割

简单+

16

68%

1270

比大小

简单+

65

40%

5003

统计字母出现的概率

简单+

198

45%

2446 统计字符

描述

从键盘输入一个由英文字母和阿拉伯数字(含空格)组成的字符串,统计字符串的长度和字符串中数字的个数。

输入描述

1.输入字符串的长度不超过1000;
2.计算所输入的字符串的长度(有效字符的个数);
3.计算所输入字符串中阿拉伯数字的个数;

输出描述

1)计算所输入的字符串的长度(有效字符的个数),并输出;
2)计算所输入字符串中阿拉伯数字的个数,并输出;

样例输入 1 

There are 5 apples and 8 oranges

样例输出 1 

32
2

提示

1.接收字符串的输入,含空格
2.统计字符串的长度。
从字符串的第一个字符开始,依次访问字符串中的每一个字符,访问的过程中使用一个整数变量i进行字符的个数的统计,直到遇到0为止。
3.遍历字符串的过程中,判断当前字符是否为阿拉伯数字,如果是则计数变量c++。
4.按要求输出。

#include <iostream>
using namespace std;
int main(){
	char arr[1001];
    int i=0, cnt=0;
    cin.getline(arr, 1001);
    while(arr[i]!='\0'){
        i++;
        if(arr[i]>='0' && arr[i]<='9'){
            cnt++;
        }
    }
    cout<<i<<"\n";
    cout<<cnt;
    return 0;
}

2466 判断回文串

描述

若一个字符串(字符串的长度不超过100,不包含空格)正向和反向读起来相同,我们则称之为回文串。

  1. 字符串"aba"正向和反向读起来都是"aba",所以是回文串;
  2. 字符串"abcd"正向读起来是"abcd",反向读起来是"dcba",所以不是回文串。

输入描述

第一行是需要判断的字符串(字符串中不包含空格),长度小于100。

输出描述

若字符串是回文串,则输出Yes,否则输出No。

样例输入 1 

aba

样例输出 1 

Yes
#include <bits/stdc++.h>
using namespace std;
int main(){  
    char a[101];
    cin>>a;
    int l=0, r=strlen(a)-1;
    while(l<r){
        if(a[l]==a[r]){
            l++;
            r--;
        }else break;
	}
    if(l>=r) cout<<"Yes";
    else cout<<"No";
    return 0;
}

3418 分数最高的同学

描述

已知n位同学的姓名和CSPJ复赛得分(姓名是一个不包含空格的字符串,长度不超过200;0<分数≤400),请输出分数最高的同学的姓名。

输入描述

第1行是一个正整数n(0<n<500),表示学生的人数;
接下来的n行,每行一个字符串和一个整数,用空格隔开,表示一位学生的姓名和成绩。

输出描述

一个字符串,表示分数最高的同学的姓名。若有多个同学的分数都是最高分,输出最先输入的那个。

样例输入 1 

5
mayun 88
dinglei 95 
lilei 92
wangshan 98
chenhong 77

样例输出 1 

wangshan
#include <bits/stdc++.h>
using namespace std;
int main(){  
   int n, max=0, sc;
   char name[205], res[205]="";
   cin>>n;
    for(int i = 1 ; i <= n ; i++){
        cin>>name>>sc;
        if(sc>max){
            max=sc;
            strcpy(res, name);
        }
    }
    cout<<res;
    return 0;
}


2455 拼接姓名

描述

从键盘输入两个姓名字符串(全部小写字母,且不含空格),按照英文字母的顺序,比较两个姓名的大小,由小到大拼接成一个字符串并输出。

输入描述

  1. 从键盘输入两个姓名字符串(长度不超过100),分别使用两个字符数组保存;
  2. 按照英文字母顺序,比较两个姓名字符串的大小;
  3. 按照由小到大的顺序拼接,并输出

输出描述

按照由小到大的顺序拼接,并输出

样例输入 1 

zhenghong
zhangsan

样例输出 1 

zhangsanzhenghong
#include <bits/stdc++.h>
using namespace std;
int main(){  
    // 创建两个字符数组用于保存输入的字符串
    char a[101], b[101];
    cin>>a>>b;
    if(strcmp(a, b) > 0){
         cout<<b<<a;
    }else{
        cout<<a<<b;
    }
    // 使用strcmp比较两个字符串

    
    
    return 0;
}

2470 字符串判等

描述

判断两个可能含有空格的字符串,在忽略空格后是否相等。

输入描述

两行,每行包含一个字符串(长度不超过255)。

输出描述

若两个字符串相等,输出YES,否则输出NO。

样例输入 1 

aB c
a bc

样例输出 1 

NO

样例输入 2 

1 23
12 3

样例输出 2 

YES
#include <bits/stdc++.h>
using namespace std;
int main(){
    char a[260]={0},b[260]={0},a1[260]={0},b1[260]={0};
    cin.getline(a, 260);
    cin.getline(b, 260);
    int ai=0, bi=0;
    for(int i=1; i<strlen(a) ; i++){
        if(a[i]==' '){
            continue;
        }
        a1[ai++]=a[i];
    }
    for(int i=1 ; i<strlen(b) ; i++){
        if(b[i]==' '){
            continue;
        }
        b1[bi++]=b[i];
    }
    if(strcmp(a1, b1)==0){
        cout<<"YES";
    }else{
       cout<<"NO"; 
    }
	return 0;
}

2457 首尾互换 

描述

编写程序,输入一个字符串(长度不超过50,首尾非空格),将字符串的首尾字符互换位置,保存至新的字符数组中,将其拼接在原字符串后面。

输入描述

一个字符串(长度不超过50,首尾非空格)。

输出描述

一个字符串,拼接之后的字符串。

样例输入 1 

Hello

样例输出 1 

HellooellH
#include <bits/stdc++.h>
using namespace std;
int main(){
    char c1[51]={}, c2[52]={};
    cin.getline(c1, 51);
    int n=strlen(c1);
	c2[0] = c1[n-1];
    c2[n-1] = c1[0];
	for(int i = 1 ; i <= n-2 ; i++){
        c2[i] = c1[i];
    }
    strcat(c1, c2);
	cout<<c1;
	return 0;
}

2450 逗号分割 

描述

编写程序,输入字符串(其中必须包含英文逗号,可以包含空格,长度不超过100),请输出字符串中逗号之前的所有内容。

输入描述

一个字符串(长度不超过100)。

输出描述

一个字符串。

样例输入 1 

Hello everyone,welcome to code!

样例输出 1 

Hello everyone
#include <bits/stdc++.h>
using namespace std;
int main() {
    char a[103];
    cin.getline(a, 103);
    for(int i = 0 ; i <= strlen(a) ; i++){
        if(a[i]==','){
            break;
        }else{
            cout<<a[i];
        }
    }
    
    return 0;
}

1270 比大小 

描述

输入两个正整数(整数 ≤10100),输出其中大的那个整数。

输入描述

一行 2 个整数,之间空格隔开。

输出描述

输出大的那个数。

样例输入 1 

12346  741254

样例输出 1 

741254
#include <bits/stdc++.h>
using namespace std;
int main(){  
    char a[105], b[105];
    cin>>a>>b;
    if(strlen(a)==strlen(b)){
         if(strcmp(a, b) > 0){
             cout<<a;
        }else{
            cout<<b;
        }
    }else{
        if(strlen(a)>strlen(b)){
            cout<<a;
    	}else{
        cout<<b;
    	}
	}
    return 0;
}

5003 统计字母出现的概率 

描述

求指定字符串中给定字母出现的概率,结果保留两位小数。例如,给定的字母为a,字符串为apple,那么输出的结果为20.00%。

输入描述

两行。
第一行为给定的一个字符,第二行为一个字符串,字符串中可能有空格,字符串长度不超100。

输出描述

字符在字符串中出现的概率。保留2位小数

样例输入 1 

a
morning

样例输出 1 

0.00%
#include <bits/stdc++.h>
using namespace std;
int main(){  
    char c, a[101];
    double b=0;
    cin>>c>>a;
    for(int i = 0 ; i < strlen(a) ; i++){
       if(a[i]==c){
           b++;
       } 
    
    }

    cout<<fixed<<setprecision(2)<<(b*100)/(strlen(a))*1.0<<"%";
    return 0;
}

感谢观看 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值