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]<<"\t";
    }
    
    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 << "\n";
    for (int i = 0; i < 10; i++) {
        cout << arr[i]<<"\t";
    }
}
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] << "\t";
    }
}

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] << "\t";
}
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();
}

 

posted @ 2019-08-27 19:29  魔仙小丽丽  阅读(667)  评论(2编辑  收藏  举报