C++U3-第05课-C++语言阶段复习

发布时间 2023-12-19 12:04:27作者: 小虾同学

复习学习目标

 输入输出

 分支结构

 多分支和switch语句

 循环语句

 练习1

 一维数组

 

 练习

 二维数组

 

 字符数组字符串

 函数

 

 sort排序

 

 结构体

 成绩排序

 

【题意分析】
根据成绩从高到低排序,同成绩学号小的排在前面的顺序进行排序

【思路分析】
1.在输入成绩的时候,将每一个人的id等同于当前的i

2.然后按照成绩高的在前,成绩相同的学号小的方式对所有人的成绩排序。

3.输出排序完毕后的数组

【参考代码】
#include <iostream>
#include <algorithm>
using namespace std;
struct node{
    int id;
    int a;
};
node arr[10002];
bool cmp(node x,node y){
    if(x.a!=y.a)return x.a>y.a;
    else return x.id<y.id;
}
int main() {
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>arr[i].a;
        arr[i].id=i;
    }
    sort(arr+1,arr+1+n,cmp);
    for(int i=1;i<=n;i++){
        cout<<arr[i].id<<" ";
    }
    return 0;
}
View Code

 

指针

 

 

[【阶段复习】元音字母统计]

 

【题意分析】
题目中我们需要去判断我们的元音字母(a,e,i,o,u)出现了多少次

【思路分析】
在for循环遍历我们的字符串的每一位,其中用if判断是否是我们的元音字母,是的话用标记存储当前元音字母出现多少次

定义标记标记元音字母出现的个数

循环遍历string数组,找到元音字母的个数

【参考代码】
#include<iostream>
#include<string>
using namespace std;
int main(){
    //定义标记标记元音字母出现的个数 
    int a = 0, e = 0, I = 0, o = 0, u = 0;
    string str;
    cin>>str;
    int len = str.length();
    //循环遍历string数组,找到元音字母的个数 
    for (int i = 0; i < len; i++){
        if(str[i]=='a')a++;
        else if(str[i]=='e')e++;
        else if(str[i]=='i')I++;
        else if(str[i]=='o')o++;
        else if(str[i]=='u')u++;
    }
    cout << "a:" << a << endl;
    cout << "e:" << e << endl;
    cout << "i:" << I << endl;
    cout << "o:" << o << endl;
    cout << "u:" << u << endl;
    return 0;
}
View Code

 

【题意分析】
需要找到字符串中每一位字母出现多少次,然后按照字母表顺序输出

【思路分析】
把小写字母做个对应,然后可以用计数数组的方法来统计每个字母出现的次数。 其中:a->0,b->1.....z->25

定义全局数组cnt,cnt[i]表示第i个小写字母出现的次数。

定义字符串s,并且遍历字符串s,将出现的字符次数+1

最后循环遍历每一个字母,如果当前字母的数量不是0,那么将当前字母和个数输出

【参考代码】
#include <iostream>
using namespace std;
// 把小写字母做个对应,然后可以用桶排序的思想来统计每个字母出现的次数 
// 对应 a->0,b->1……z->25 
// cnt[i]: 第 i 个小写字母出现的次数
int cnt[26];  
int main() {
    //定义字符串s,并且遍历字符串s,将出现的字符次数+1
    string s;
    cin >> s;
    for (int i = 0; i < s.size(); i++) {
        int k = s[i] - 97; 
         // 第 k 个小写字母出现的次数加 1 
        cnt[k]++;      
    }
    for (int i = 0; i <= 25; i++) {
        char c = i + 'a';
        if (cnt[i] > 0) cout << c << ":" << cnt[i] << endl;
    }
    return 0;
}
View Code