首页 > 编程语言 >C++U3-第05课-C++语言阶段复习

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

时间:2023-12-19 12:13:37浏览次数:35  
标签:数组 05 int 字母 U3 ++ C++ str 元音

复习学习目标

 输入输出

 分支结构

 多分支和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

 

标签:数组,05,int,字母,U3,++,C++,str,元音
From: https://www.cnblogs.com/jayxuan/p/17913409.html

相关文章

  • C++移动构造与std::move()
    背景及问题如下程序所示:#include<iostream>classMyString{public: MyString()=default; MyString(constchar*data) { printf("%s","MyStringConstructed!!\n"); size=strlen(data); m_data=newchar[size]; memcpy(m_data,......
  • C0328 【1005 C组】模拟测试 斜率 题解
    原题链接:斜率。题意在一个平面直角坐标系中,给定\(n\)个点的横纵坐标,求出哪两个点所构成的连线的斜率最接近\(\frac{P}{Q}\)。数据范围:\(n\le1000000\)。思路显然这是一道数学题,不能直接暴力去找答案。首先我们可以弱化一下题目,求出斜率最接近\(y=0\)即\(x\)轴的两......
  • C++ 反向遍历 array 小记
    有时候需要逆向循环,例如从字符串的最右端遍历到最左端,需要注意一些细节!初学遇到一些bug记录在这里。首先arr.size()的数据类型为size_t,为无符号整型对于for(intidx=arr.size()-1;idx>=0;idx--):使用int作为idx的类型,有一定概率会编译失败,因为size_t的具......
  • C++U4-第09课-STL容器
    学习目标 STL  栈stack [入栈出栈] 【算法分析】栈的基本操作。【参考代码】#include<bits/stdc++.h>usingnamespacestd;intmain(){stack<int>st;intn;cin>>n;for(inti=1;i<=n;i++){intx;cin......
  • 【面试官版】【持续更新中】融合滤波算法+数据结构+激光视觉SLAM+C++面试题汇总
    C++部分什么时候需要写虚函数、什么时候需要写纯虚函数?只继承接口为纯虚函数强调覆盖父类重写,或者父类也需要实现一定的功能,为虚函数指针传参和引用传参区别?引用传参本质上是传递原参数地址,指针传参本质还是值传递,生成拷贝指针,拷贝指针和原指针指向的为同一块内存。因此改变......
  • 【我们尽量少说废话的讲完】C++红黑树原理
    红黑树的出现红黑树增删改查的时间复杂度都是O(logn)。如果插入的数据随机,那么使用二叉搜索树即可保证树接近平衡。此时增删改查的效率都为O(logN)。但如果插入的数据为有序的,此时二叉搜索树极其不平衡,退化为链表,时间复杂度降为O(N)。而红黑树就是为了应对这种极端情况。红黑......
  • 【纯代码复制粘贴即可使用】卡尔曼滤波的C++实现
    使用Eigen实现卡尔曼滤波。如果实现扩展卡尔曼滤波只需将H矩阵换成雅可比的求解。#ifndef_MYKALMAN_H#define_MYKALMAN_H#include<Eigen\Dense>classKalmanFilter{public:KalmanFilter(intstateSize,intmeasSize,intuSize);~KalmanFilter()=default;......
  • C++ 获取 vector 最大的 3 个数字
    假设现在有一个数组存储了成绩信息,要获得前三名#include<iostream>#include<vector>#include<algorithm>std::vector<int>scores{10,30,90,30,100,20,10,0,30,40,40,70,70};下面这种方法可以将前3名成绩复制到结果里,同时考虑到scores长度小于3的情况。......
  • CF1905 B Begginer's Zelda 题解
    LinkCF1905BBegginer'sZeldaQuestion给出一棵树,每次能把一条路径压缩成一个点,求最少几次把树压缩成一个点Solution贪心的想,路径肯定越长越好,所以肯定是以一个儿子节点为起点,以一个儿子节点为终点,儿子节点合并了儿子到根的父节点也合并了,每次合并两个儿子节点,假设儿子节点......
  • 【题解】CodeForces-1905
    CodeForces-1905AConstructiveProblems发现沿着对角线放就行了,答案是\(\max(n+m)\)。提交记录:Submission-CodeForcesCodeForces-1905BBegginer'sZelda最优操作每次删两个叶子(除了最后一次只剩两个节点),所以答案是叶子个数除以二上取整。提交记录:Submission-CodeForc......