• c++基础技能练习详解(回文数,字符串计数,指针比大小,递归求和,类的应用)


    //1.    调用函数实现判定用户输入的正整数是否为“回文数“,所谓“回文数”是指正读反读都相同的数。 (25分)
    bool hw(string s) {
        for (int i = 0; i < (s.length()) / 2; i++) {
            if (s[i] != s[s.length() - 1 - i]) {
                return false;
            }
        }
        return true;
    }
    int main()
    {
        string s;
        cin >> s;
        cout<<hw(s);
    }
    **************************************************
    bool hw() {
        string s;
        cout << "请输入一行数字" << endl;
        cin >> s;
    
        for (int i = 0; i < s.length() / 2.0; i++) {
            if (s[i] != s[s.length() - i - 1]) {
                cout << "该数是不回文数" << endl;
                return false;
            }
        }
        cout << "该数是回文数" << endl;
        return true;
    }
    
    
    //2.    编程实现从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
    int main() {
        string s;
        cin >> s;
        getline(cin,s);
        int count = 1;
        for (int i = 0; i < s.length(); i++) {
            if (s[i] == ' ') {
                count += 1;
            }
        }
        cout << count;
    }
    
    
    //3.    计算一个字符串中子串出现的次数。
    
    注意:strstr(str1,str2)   此时千万要记住,这是在判断str2是否是str1的子串!!
    int count(char* str1, char * str2) {
        int len = strlen(str2);
        int n = 0;
        while (str1 = strstr(str1, str2)) {
            n += 1;
            str1 += len;
        }
        return n;
    }
    int main() {
        char str1[100];
        char str2[100];
        cin >>str1;
        cin >>str2;
        cout<<count(str1,str2);
    }
    
    **********************************
    char str1[100];
    char str2[100];
    cout << "请输入父串" << endl;
    cin >> str1;
    //gets_s(str1);
    
    
    cout << "请输入子串" << endl;
    cin >> str2;
    //gets_s(str2);
    int a=countshu(str1, str2);
    cout << a << endl;
    
    //4.    从键盘输入一行字符,将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。
    int main() {
        int arr[10];
        for (int i = 0; i < 10; i++) {
            cin >> arr[i];
        }
        for (int i = 0; i < 10; i++) {
            cout << arr[i]<<"	";
        }
        
        for (int i = 0; i < 8; i+=2) {
            for (int j = 0; j < 10 - 2 - i; j+=2) {
                if (arr[j] > arr[j + 2]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 2];
                    arr[j + 2] = temp;
                }
            }
        }
        cout << "
    ";
        for (int i = 0; i < 10; i++) {
            cout << arr[i]<<"	";
        }
    }
    5.使用指针比较2个数的大小,并输出最大的数。 
     int *p1,*p2;
        int    *p;        //临时指针
        int a,b;
        cout << "input a: " << endl;
        cin >> a;
        cout << "input b: " << endl;
        cin >> b;
        p1=&a;p2=&b;
        if(a<b)
        {
            p=p1;
            p1=p2;
            p2=p;
        }
        cout << "a=" << a;
        cout << " ";
        cout << "b=" << b;
        cout << endl;
        cout << "较大的数:" << *p1 << "较小的数: "<< *p2 <<endl;
    6.//2.    输入6个数,输出6个数,调用排序函数对6个数进行冒泡排序,并输出排序后的值,要求形参为指针变量。   (共50分)
    //输入正确   10分
    //输出正确   10分
    //排序函数正确  20分
    //输出排序后值  10分
    void zhizhen(char *arr) {
        int temp;
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5-i; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        cout << "排序后" << endl;
        for (int i= 0; i < 6; i++) {
            cout << arr[i] << "	";
        }
    }
    
    cout << "请输入6个数" << endl;
    char arr[6];
    for (int i = 0; i < 6; i++) {
        cin >> arr[i];
    }
    cout << "排序前" << endl;
    for (int i = 0; i < 6; i++) {
        cout << arr[i] << "	";
    }
    zhizhen(arr);
    6.编写一个函数用递归的方法求1+2+3+4+…+n的值。在主函数中进行输入输出。 
    int digui(int a) {
        if (a==1) {
            return 1;
        }
        return a + digui(a - 1);
    }
    
    int a=digui(100);
    cout << a;
    7.编写一个函数power(float x,int n),用于计算x的n次幂。在主函数中实现输入输出
    float power(float x ,int n) {
        float sum = 0;
        sum=pow(x, n);
        cout << "幂次方" << sum;
        return sum;
    }
    
    cout << "请输入一个数" << endl;
    int n,x;
    cin >> x;
    cout << "请输入次方数" << endl;
    cin >> n;
    power(x, n);
    8.1.    定义一个学生成绩类Score,描述学生成绩的公有数据成员为学号(No)、姓名(Name[8])、数学(Math)、物理(Phi)、总分(Sum)。在主函数中用Score类定义学生成绩对象数组s[3],输入学生成绩,计算每个学生的总分,最后显示每个学生的成绩。 (100分)
    定义学生成绩类   20分
    定义类对象数组   10分
    输入学生成绩   25分
    计算每个学生的总分  20
    显示每个学生的成绩  25
    class Score {
    public:
        int Num;
        char Name[8];
        int Math;
        int Poi;
        int Sum;
        int Total;
        Score(int Num,char *name,int Math,int Poi,int Sum) {
            this->Num = Num;
            this->Math = Math;
            this->Poi = Poi;
            this->Sum = Sum;
            strcpy_s(Name, name);
        }
        void sum() {
            Total = Num + Math + Poi;
        }
        void show() {
            cout << "学号=" << Num << ",姓名=" << Name << ",数学=" << Math << ",物理=" << Poi << ",总分=" << Total << endl;
        }
    };
    int main()
    {
        char name[10] = "MH";
        Score s1 = Score(1001, name, 100, 98, 97);
        s1.sum();
        s1.show();
    }
  • 相关阅读:
    LeetCode344. 反转字符串
    LeetCode59. 螺旋矩阵 II
    LeetCode209. 长度最小的子数组
    LeetCode383. 赎金信
    cannot be cast to javax.servlet.Servlet
    求组合
    数据库系统概论王珊第四版 答案
    数据库复习
    dfs-bfs
    dfs
  • 原文地址:https://www.cnblogs.com/zgl19991001/p/11420317.html
Copyright © 2020-2023  润新知