c++ 从结构体打印

c++ Printing from a struct

本文关键字:打印 结构体 c++      更新时间:2023-10-16

我正在做一些事情,我必须做的要点基本上是:

1) 声明一个名为 partType 的结构,它有两个成员:name (保存 部分)和代码(保存整数)。

2) 声明两个类型为 partType 的变量。

3)提示用户输入第一项的名称和代码并存储它们 到相应的变量中。

4)提示用户输入第二项的名称和代码并存储它们 到相应的变量中。

5) 按代码比较项目并显示如图所示的输出 示例如下:

示例 1: 输入项目1的名称和代码:螺栓22222

输入item2的名称和代码:螺母11111

螺栓追逐库存中的螺母

示例 2: 输入项目1的名称和代码:螺栓11111

输入item2的名称和代码:螺母22222

螺栓在库存中的螺母之前

我目前的代码是:

#include <iostream>
#include <string>
using namespace std;
struct partType {
string name;
int code;
};
int main() {
partType nam, num;
cout << "enter name and code of item1: ";
cin >> nam.name >> num.code;
cout << "enter name and code for item2: ";
cin >> nam.name >> num.code;
if (num.code > num.code) {
cout << nam.name << " goes after " << nam.name;
}
else if (num.code < num.code) {
cout << nam.name << " goes before " << nam.name;
}
else {
cout << "tie";
}
system("pause");
return 0;
}

我觉得我不应该两次使用 nam 和 num,因为它会覆盖它,但我不完全确定如何解决它

阅读您的代码,您似乎混淆了namnum变量。

partType nam, num;

此行创建两个partType变量,一个称为nam,另一个称为num

cout << "enter name and code of item1: ";
cin >> nam.name >> num.code;

小心!您提示输入第一项的名称和代码,但将代码的输入放入第二个变量中!

cout << "enter name and code for item2: ";
cin >> nam.name >> num.code;

您不是设置第二个变量的两个字段,num,您只是设置第二个变量的code字段,而是设置第一个变量的name字段,此外,您将覆盖从第一个输入提示输入的数据。

if (num.code > num.code) {
cout << nam.name << " goes after " << nam.name;
}
else if (num.code < num.code) {
cout << nam.name << " goes before " << nam.name;
}

您正在将表达式与自身进行比较。你应该做num.code < nam.code,反之亦然。