【以下回答由 GPT 生成】
问题分析:
在代码中,我们需要比较结构体数组中的school字段和字符数组sc的值是否相等。然而,由于结构体中的school字段是一个字符数组,不能直接和一个字符数组进行比较。 导致编译器给出了指针和整数进行比较的错误提示。
解决方案:
一种解决方案是使用C++中的字符串比较函数strcmp()
来进行字符串的比较。另外,结构体数组中的每一个school字段可以修改为std::string
类型,以便使用字符串比较函数。 以下是修改后的代码:
#include <iostream>
#include <cstring>
#include <string>
struct Goal {
char program[20];
char sex[21];
std::string school;
int grade;
int goal;
};
int main() {
int i, j, n, x;
struct Goal a[20];
char sc[20];
int g[5] = {0}, m[5] = {0}, w[5] = {0};
std::cout << "请输入n的值:" << std::endl;
std::cin >> n;
for (i = 0; i < n; i++) {
std::cout << "请输入学生的program、sex、school、grade和goal:" << std::endl;
std::cin >> a[i].program >> a[i].sex >> a[i].school >> a[i].grade >> a[i].goal;
}
for (i = 0; i < n; i++) {
x = std::stoi(a[i].school);
for (j = 0; j < n && std::stoi(a[j].school) == x; j++) {
g[i] = g[i] + a[j].goal;
w[i]++;
}
for (j = 0; j < n && std::stoi(a[j].school) == x && strcmp(a[j].sex, "man") == 0; j++) {
m[i] = m[i] + a[j].goal;
}
for (j = 0; j < n && std::stoi(a[j].school) == x && strcmp(a[j].sex, "woman") == 0; j++) {
w[i] = w[i] + a[j].goal;
}
}
std::cout << "各个学校总分和男生总分是:" << std::endl;
for (i = 0; i < n; i++) {
std::cout << a[i].school << ": " << g[i] << " " << m[i] << std::endl;
}
return 0;
}
请注意,我们使用了std::stoi()
将字符串转换为整数,使用strcmp()
来进行字符串的比较。
这样修改后的代码可以解决结构体数组和字符数组的比较问题。
【相关推荐】