| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 655 人关注过本帖
标题:[求助]链表的生成 我的程序应该怎么改?
只看楼主 加入收藏
我本无聊中
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-3
收藏
 问题点数:0 回复次数:3 
[求助]链表的生成 我的程序应该怎么改?

下面是本人写的程序,目的是想完成当输入(学号为0同时姓名为0时),结束创建链表;
而当学号为0,姓名不为0时,继续循环创建;当学号或姓名只有一个为0,而输入的3门成绩(sc[3])都为0时,此时把学号和姓名同时赋值为0,并结束创建连表)

#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct student
{ long num;//学号
char name[20];
float sc[3];//3门成绩
struct student *next;
};
typedef struct student STU;

STU *creat() //建立链表函数
{STU *head,*p1,*p2;
int i;
head=(STU *)malloc(sizeof(STU));
p2=head;
head->next=NULL;
do {
p1=(STU *)malloc(sizeof(STU));
puts("===============================");
printf("请输入学号:");
scanf("%ld",&p1->num);
printf("请输入姓名:");
scanf("%s",p1->name);
printf("请输入3门成绩:");
for(i=0;i<3;i++)
if(scanf("%f",&p1->sc[i])!=1){p1->num=0;strcpy(p1->name,"\0");} //当输入3门成绩都为0时将学号,姓名赋值为0
for(;i<3;i++)p1->sc[i]=0; //当输入的成绩有个别没有输入时,自动赋值为0
p1->next=NULL;
p2->next=p1;
p2=p2->next;
}while(p1->num!=0||p1->name!="\0");
return head;
}
main()
{STU *head;
head=creat();
}


可是本程序一直循环,请问该怎么改 错在了那里?

搜索更多相关主题的帖子: 链表 
2006-11-22 10:29
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 
p1-&gt;name不可能为'\0'

2006-11-22 11:29
我本无聊中
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-3
收藏
得分:0 

那么怎么改呢? 我的意思是:改为当输入学号为0,但同时姓名没有输入的时候,结束循环.或者是当输入的成绩都为0,就把学号清0,并把姓名清除.此时结束循环.

2006-11-22 14:55
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 
姓名不输入,就会一直等待输入

2006-11-22 17:06
快速回复:[求助]链表的生成 我的程序应该怎么改?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032419 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved