#include<iostream> #include<cstring> using namespace std; struct Friend { char name[15]; int birth; char number[20]; }; int main() { int n; cin >> n; struct Friend f[10]; for (int i = 0; i < n; i++) { cin >> f[i].name; cin >> f[i].birth; cin.getline(f[i].number,20); } for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { struct Friend max = f[i]; if (max.birth > f[j].birth) { struct Friend temp = max; max = f[j]; f[j] = temp; } } } for (int i = 0; i < n; i++) { cout << f[i].name << " " << f[i].birth << " " << f[i].number << endl; } }
时间: 2024-03-31 19:34:44 浏览: 35
这是一个 C++ 的程序,同样用来对输入的朋友信息按照生日从小到大进行排序,并输出排好序的信息。但是,与之前的程序不同的是,这里将 "min" 改为了 "max",也就是在排序过程中选择生日最大的朋友作为当前最大值,然后将其与后面的朋友进行比较并交换位置,直到找到真正的最大值。
这个程序的问题在于,选用生日最大的朋友作为当前最大值,并不符合排序需求。正确的做法是选择生日最小的朋友作为当前最小值,然后将其与后面的朋友进行比较并交换位置,直到找到真正的最小值,从而实现从小到大的排序。
因此,将 "min" 改为 "max" 是一个错误的修改。
相关问题
#include<iostream> #include<cstring> using namespace std; struct Friend { char name; int birth; char number; }; int main() { int n; cin >> n; for (int i = 0; i < n; i++) { struct Friend f[10]; cin >> f[i].name >> f[i].birth >> f[i].number; cout<< f[i].name<< f[i].birth<< f[i].number; } }
根据代码的逻辑,它会让用户输入一个整数n,然后循环n次,在每次循环中让用户依次输入一个朋友的名字(char类型)、出生年月(int类型)和电话号码(char类型),并将这些信息存储到名为f的结构体数组中。最后,它会遍历数组,输出每个朋友的名字、出生年月和电话号码。
然而,在for循环中,每次都会重新定义一个大小为10的结构体数组f,这样每次只会向数组的第0个元素中输入数据,而其他元素没有被赋值,所以在输出时会出现一些无意义的字符。同时,结构体中的name和number应该声明为字符数组(char [])而不是单个字符(char),否则只能存储一个字符。
另外还需要注意,输入电话号码时,如果是字符串类型,应该使用cin.getline()来读取,否则可能会出现输入错误。
#include<iostream> #include<cstring> using namespace std; struct Friend { char name[10]; int birth[10000005]; char number[18]; }; int main() { int n; cin >> n; struct Friend f[10]; for (int i = 0; i < n; i++) { cin >> f[i].name; cin >> f[i].birth; cin.getline(f[i].number,18); cout << f[i].name << endl << f[i].birth << endl << f[i].number << endl; } }
这是一个 C++ 代码,定义了一个名为 Friend 的结构体,其中包含三个成员变量:name(姓名)、birth(出生日期)和 number(电话号码)。
在主函数中,首先读入一个整数 n,表示有 n 个朋友需要输入信息。
然后定义了一个 Friend 类型的数组 f,大小为 10。接下来通过 for 循环,读入每个朋友的姓名、出生日期和电话号码,并输出这些信息。
需要注意的是,出生日期的数据类型应该是 int,而不是 int 数组。而且在读入电话号码时需要使用 getline 函数,并且传入的第二个参数应该是字符串的最大长度 18。
阅读全文