c语言找错误在第几行,c语言问题,有个错,不会改,错误在第30行

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

struct xuesheng

{

int xuehao;

char name[40];

float jine;

float zonge;

struct xuesheng *next;

};

float *p;

typedef struct xuesheng list;

typedef list * liebiao;

liebiao head=NULL,last=NULL,head1=NULL;

int enter(void);

void paidui(void);

void maifan(void);

void chongzhi(void);

void chazhao(void);

void shanchu(void);

void xianshi(liebiao xinxi);

int enter(void);

void caidan(liebiao head);

void jiaohuan(float *a,float *b);

void paixu(void);

void paidui(void)//排队

{

liebiao xinxi=NULL;

xinxi=malloc(sizeof(list)); /*分配结点内存*/

if(xinxi!=NULL)

{ /*插入结点*/

if (head==NULL)

{ /*若创建的是头结点*/

head=xinxi;

last=xinxi;

}

else

{

last->next=xinxi; /*将结点连上链表尾结点*/

last=xinxi; /*使last指向当前链表的最后一个结点*/

}

printf("输入学号\n");

scanf("%d",&xinxi->xuehao);

printf("输入姓名\n");

getchar();

gets(xinxi->name);

printf("输入金额\n");

scanf("%f",&xinxi->jine);

printf("输入消费总额\n");

scanf("%f",&xinxi->zonge);

p=&xinxi->zonge;

}

last->next=NULL;/*设置链表结束标记*/

}

void maifan(void)//买饭,并将第一个节点删掉

{

liebiao xinxi=NULL;

printf("买饭成功,退出队伍");

if(head->next!=NULL)

{

xinxi=head->next;

head=xinxi;

}

else

{

head =NULL;

}

}

void chongzhi(void)//充值

{

int i;

printf("请输入您要充值的金额:\n");

scanf("%d",&i);

head->jine=head->jine+i;

}

void chazhao(void)//查找并打印

{

liebiao xinxi;

int xuehao1;

xinxi=head;

printf("请输入要查询的学号:\n");

scanf("%d",&xuehao1);

while(xinxi!=NULL && xinxi->xuehao!=xuehao1)

{

xinxi=xinxi->next;

}

if(xinxi==NULL)

{

printf("队列中无这名同学");

}

else

{

printf("%-16s%-16s%-11s%10s\n","学号","姓名","金额","消费总额");

printf("%-16d%-16s%-11.2f%10.2f\n",xinxi->xuehao,xinxi->name,xinxi->jine,xinxi->zonge);

}

}

void jiaohuan(float *a,float *b)

{

float *i;

if(*a

i=a;

a=b;

b=i;

}

void paixu(void)

{

paidui();

if(p==NULL)

{

printf("当前没人在排队\n");

}

else

{

jiaohuan(p,p+1);

p=p+1;

while(p!=NULL)

{

printf("%f",p);

}

}

} ;

void shanchu(void) //查找并删除

{

liebiao zq,xinxi;

int xuehao1;

zq=NULL;

xinxi=head; /*将头接点地址赋给xinxi*/

printf("请输入要删除的学号:\n");

scanf("%d",&xuehao1); /*查找待删除结点*/

while (xinxi!=NULL && xinxi->xuehao!=xuehao1)

{

zq=xinxi;

xinxi=xinxi->next;

}

if (xinxi!=NULL)

{ /*如果找到要删除的结点*/

if (zq==NULL) /*删除的是头结点*/

head=xinxi->next; /*更新头结点*/

else /*删除的是中间结点或者尾结点*/

zq->next= xinxi->next;

free(xinxi); /*释放结点内存*/

}

else

printf("队列中无这名同学"); //没有找到符合条件的结点

}

void xianshi(liebiao xinxi) //打印

{

if (xinxi==NULL)

printf("当前没人在排队\n");

else

{

printf("%-16s%-16s%-11s%10s\n","学号","姓名","金额","消费总额");

while(xinxi!=NULL)

{

printf("%-16d%-16s%-11.2f%10.2f\n",xinxi->xuehao,xinxi->name,xinxi->jine,xinxi->zonge);

xinxi=xinxi->next;

}

}

}

int enter(void)

{

int menuChoice;

printf("\n请选择下面的一个项目\n"

"1.排队\n"

"2.打饭\n"

"3.充值\n"

"4.查询\n"

"5.删除\n"

"6.按消费总额排序\n"

"7.显示\n"

"8.退出\n");

scanf("%d",&menuChoice);

return menuChoice; //返回对应的选项序号

}

void caidan(liebiao head) //释放内存

{

liebiao temp;

while (head!=NULL)

{

temp=head;

head=head->next;

free(temp);

}

}

int main()

{

int choice;

while((choice=enter())!=8)

{

switch(choice)

{

case 1:

paidui();

break;

case 2:

maifan();

break;

case 3:

chongzhi();

break;

case 4:

chazhao();

break;

case 5:

shanchu();

break;

case 6:

paixu();

break;

case 7:

xianshi(head);

break;

}

}

caidan(head); //选择功能

system("pause");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值