#define _CRT_SECURE_NO_WARNINGS #include"stdio.h" struct shuju { char p_name[100], c_name[100], zhiwu[100],num[100]; int age; }; void input(struct shuju p, int m) { int i; for (i = 1; i <= m; i++,p++) { printf("请输入第%d个客户的信息:\n", i); printf("请输入客户姓名:"); scanf("%s", &p->p_name); printf("请输入客户年龄:"); scanf("%d", &p->age); printf("请输入客户手机号:"); scanf("%s", &p->num); printf("请输入客户公司名:"); scanf("%s", &p->c_name); printf("请输入客户职务:"); scanf("%s", &p->zhiwu); } } void P(char q, int m) { struct shuju* p; struct shuju*a; q = a->p_name; int i,j; for (i = 0; i < m; i++) { for (j = 0; j < 100; j++) { if ((q + j) < *(q + 1 + j)) { *p = *(a + i); *(a + i) = *(a + 1 + i); *(a + 1 + i) = p; } } } } void output(struct shuju p, int m) { int i; for (i = 0; i < m; i++) { printf("姓名\t年龄\t手机号\t公司名\t职务\n"); printf("%s\t%d\t%s\t%s\t%s\n", (p + i)->p_name, (p + i)->age, (p + i)->num, (p + i)->c_name,(p + i)->zhiwu); } } void main() { int n; struct shuju c; char q; q = c->p_name; input(c, n); P(q, n); output(c, n); }这段代码怎么修改才正确
时间: 2024-03-26 08:34:13 浏览: 68
这段代码需要修改的地方有很多,以下是其中几个需要修改的地方:
1. 在函数中传递结构体时,应该传递结构体指针,而不是结构体本身。因此,函数 input 和 output 中应该改为传递 struct shuju* 类型的指针参数。
2. 在函数 P 中,a 没有被初始化,不能直接用指针 a 访问结构体成员。可以在 main 函数中定义一个 struct shuju 类型的数组,并把它的地址传递给 P 函数。
3. 在函数 P 中,比较字符串应该使用 strcmp 函数,而不是直接比较字符指针。
4. 在函数 P 中,交换结构体时,应该使用结构体指针进行交换,而不是结构体本身。
5. 在 main 函数中,应该先读入 n 的值,再定义 struct shuju 类型的数组 c。
下面是修改后的代码:
```
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "string.h"
struct shuju {
char p_name[100], c_name[100], zhiwu[100], num[100];
int age;
};
void input(struct shuju* p, int m) {
int i;
for (i = 0; i < m; i++, p++) {
printf("请输入第%d个客户的信息:\n", i+1);
printf("请输入客户姓名:");
scanf("%s", p->p_name);
printf("请输入客户年龄:");
scanf("%d", &p->age);
printf("请输入客户手机号:");
scanf("%s", p->num);
printf("请输入客户公司名:");
scanf("%s", p->c_name);
printf("请输入客户职务:");
scanf("%s", p->zhiwu);
}
}
void P(struct shuju* a, int m) {
struct shuju* p;
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < m - i - 1; j++) {
if (strcmp(a[j].p_name, a[j + 1].p_name) > 0) {
p = &a[j];
a[j] = a[j + 1];
a[j + 1] = *p;
}
}
}
}
void output(struct shuju* p, int m) {
int i;
printf("姓名\t年龄\t手机号\t公司名\t职务\n");
for (i = 0; i < m; i++) {
printf("%s\t%d\t%s\t%s\t%s\n", p[i].p_name, p[i].age, p[i].num, p[i].c_name, p[i].zhiwu);
}
}
int main() {
int n;
struct shuju c[100];
printf("请输入客户个数:");
scanf("%d", &n);
input(c, n);
P(c, n);
output(c, n);
return 0;
}
```
阅读全文