#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
int numble=0; //卖房人数
float money=0; //卖房总额
struct maifang
{
char name[10]; //卖房人姓名
float score; //卖房收入
}stu[50];
struct maifang input()
{
struct maifang stu;
getchar();
printf("\n卖房人姓名:");
scanf("%s",stu.name);
printf("\n卖房收入:");
scanf("%f",&stu.score);
numble++;
money+=stu.score;
return stu;
}
void display(struct maifang stud[],int count);
void display(struct maifang stud[],int count)
{
system("cls");
printf("\n%s\t","卖房人姓名");
printf("\t%s","卖房收入");
printf("\n");
for(int i=0;i<count;i++)
{
printf("\t%s\t",stud[i].name);
printf("\t%.2f",stud[i].score);
printf("\n");
}
printf("\n按任意键返回主菜单:");
getch();
}
void sort(struct maifang stud[],int count); //就是从这里开始错的
void sort(struct maifang stud[],int count)
system("cls");
struct maifang *p[50];
struct maifang *tmp;
int i,j,k,l;
for(i=0;i<count;i++)
{
p[i]=&stu[i];
}
for(i=0;i<count-1;i++)
{
for(j=count-1;j>i;j--)
{
if(stud[j].score<stud[j].score)
{
tmp=p[j];
p[j]=p[j-1];
p[j-1]=tmp;
}
}
}
printf("\n%s\t","卖房人姓名");
printf("\t%s","卖房收入");
printf("\n");
for(k=0;k<count;k++)
{
printf("\t%s\t",*p[k].name);
printf("\t%.2f",*p[k].score);
printf("\n");
}
printf("\n排序已完成,按任意键返回主菜单:");
getch();
}
int find(struct maifang stud[],int count,char mizi[]);
int find(struct maifang stud[],int count,char mizi[])
{
int i,j;
for(i=0;i<count;i++)
{
j=strcmp(stud[i].name,mizi);
if(j==0)
return i;
}
return -1;
}
void query(struct maifang stud[],int count);
void query(struct maifang stud[],int count)
{
int i;
char dno[10];
system("cls");
printf("\n请输入卖房人的姓名:");
scanf(" %s",dno);
i=find(stud,count,dno);
if(i==-1)
{
printf("\n您所要查询的人不存在!按任意键返回主菜单:");
getch();
return;
}
printf("\n%s\t","卖房人姓名");
printf("%s","卖房收入");
printf("\n%s\t",stud[i].name);
printf("\t%.2f\n",stud[i].score);
printf("\n按任意键返回主菜单:");
getch();
}
void sc();
void sc()
{
system("cls");
printf("卖房总人数:%d\n",numble);
printf("卖房总金额:%.2f\n",money);
printf("\n按任意键返回主菜单:");
printf(" ");
getch();
}
void main()
{
int count=0;
char sel='1',flag;
while(sel!='6')
{
system("cls");
printf("-------------二手房交易信息管理-------------\n\n");
printf("1.卖房信息录入\n2.显示卖房信息\n3.按卖房收入排序\n4.按卖房人姓名查询\n5.统计总收入\n6.退出\n");
printf("\n请选择:");
sel=getchar();
switch(sel)
{
case '1':
system("cls");
do
{
stu[count]=input();
count++;
printf("\n是否继续(y/n):");
fflush(stdin);
flag=getchar();
}while(flag=='y'||flag=='Y');
break;
case '2':
display(stu,count);
break;
case '3':
sort(stu,count);
break;
case '4':
query(stu,count);
break;
case '5':
sc();
break;
}
}
}
问一下我那里错了??
1. 使用指针数组对结构体数组进行排序,声明指针数组并与结构数组关联:
struct sell_record *p[50];
for(i=0;i<count;i++) { p[i] = &sells[i]; }
用于交换的变量也是指针:
struct sell_record *tmp;
交换时是交换指针而不影响结构数组的原始顺序:
tmp = p[j] ; p[j] =p[j-1] ; p[j-1] = tmp ;
这是是要求!