4、调用库函数<string.h> : 5、结构体和指针处理数据

4、调用库函数<string.h> :
编写一个程序,从用户输入中读取一行字符串,然后输出字符串的长度和反转后的字符串。
5、结构体和指针处理数据 :
定义一个结构体 Student,包含学生的姓名和分数。输入 5 名学生的信息,然后输出分数最高的
学生姓名和分数。

C++ 代码如下:

4、调用库函数<string.h>:

#include <iostream>
#include <cstring>

using namespace std;

int main() {
    // 从用户输入读取一行字符串
    string str;
    cout << "请输入一行字符串:";
    getline(cin, str);
    
    // 输出字符串长度
    cout << "字符串长度为:" << str.length() << endl;
    
    // 反转字符串
    reverse(str.begin(), str.end());
    cout << "反转后的字符串为:" << str << endl;
    
    return 0;
}

5、结构体和指针处理数据:

#include <iostream>
#include <string>

using namespace std;

// 学生结构体
struct Student {
    string name;    // 学生姓名
    double score;   // 学生分数
};

int main() {
    Student students[5];    // 学生数组
    
    // 输入学生信息
    for (int i = 0; i < 5; i++) {
        cout << "请输入第" << i+1 << "名学生的姓名和分数:";
        cin >> students[i].name >> students[i].score;
    }
    
    // 查找分数最高的学生
    int max_index = 0;
    for (int i = 1; i < 5; i++) {
        if (students[i].score > students[max_index].score) {
            max_index = i;
        }
    }
    
    // 输出分数最高的学生信息
    cout << "分数最高的学生是:" << students[max_index].name << endl;
    cout << "分数是:" << students[max_index].score << endl;
    
    return 0;
}

【以下回答由 GPT 生成】

当然可以!下面是我为您编写的C程序。

首先,我们需要引入 stdio.hstring.h 来处理输入输出和字符串操作。然后,我们定义一个包含学生姓名和分数的结构体 Student

#include <stdio.h>
#include <string.h>

typedef struct {
    char name[50];
    float score;
} Student;

接下来,我们定义一个函数 getMaxScoreStudent() 来找到分数最高的学生。该函数接受一个 Student 的数组和数组的长度作为参数,并返回分数最高的学生。

Student getMaxScoreStudent(Student students[], int length) {
    Student maxScoreStudent = students[0];

    for (int i = 1; i < length; i++) {
        if (students[i].score > maxScoreStudent.score) {
            maxScoreStudent = students[i];
        }
    }

    return maxScoreStudent;
}

然后,我们在 main() 函数中读取用户输入的字符串,并计算字符串长度。接着,我们使用一个循环来输入5名学生的信息,并调用 getMaxScoreStudent() 函数来获取分数最高的学生。最后,我们输出字符串的长度和反转后的字符串,并输出分数最高的学生姓名和分数。

int main() {
    char string[100];
    printf("请输入一个字符串:\n");
    scanf("%[^\n]s", string); // 读取一行字符串

    int length = strlen(string); // 计算字符串的长度

    printf("字符串长度为:%d\n", length);

    // 反转字符串
    char reversedString[100];
    for (int i = length - 1; i >= 0; i--) {
        reversedString[length - i - 1] = string[i];
    }
    reversedString[length] = '\0'; // 添加字符串结束符号

    printf("反转后的字符串为:%s\n", reversedString);

    Student students[5];
    printf("请输入5名学生的信息:\n");

    for (int i = 0; i < 5; i++) {
        printf("请输入第%d名学生的姓名:\n", i+1);
        scanf("%s", students[i].name);

        printf("请输入第%d名学生的分数:\n", i+1);
        scanf("%f", &students[i].score);
    }

    Student maxScoreStudent = getMaxScoreStudent(students, 5);
    printf("分数最高的学生是:%s,分数为:%f\n", maxScoreStudent.name, maxScoreStudent.score);

    return 0;
}

以上就是完成该程序的代码。我们首先读取用户输入的字符串,计算字符串长度并输出。然后,反转该字符串并输出反转后的结果。接着,我们输入5名学生的信息,调用函数获取分数最高的学生并输出其姓名和分数。

请注意,以上代码可能无法处理输入错误的情况,例如超出数组范围的输入。为了程序的健壮性,可以添加适当的输入校验。

希望以上代码能满足您的需求。如果您有任何问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^