问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言链表输入问题

发布网友 发布时间:2022-04-26 07:15

我来回答

5个回答

热心网友 时间:2023-10-08 21:21

你的scanf("%c\n",p->name); scanf("%d\n",&p->score[i]); 改为scanf("%d",&p->score[i]); scanf("%s",p->name); 除此;
你的input()函数定义有问题,我试着给你改了下,你验证下是否可以,为了操作简便,我对你的结构体进行了重新定义:
typedef struct student node;
typedef node *llink;
下面是对你的input()函数的重新实现:
llink input()
{
llink head;
llink ptr,ptr1;
int i=0,n=0;
printf("请输入数据个数");
scanf("%d",&n);
head=(llink)malloc(sizeof(node));
if(!head)
return NULL;
printf("请输入学生学号\n");
scanf("%d",head->no);
printf("请输入学生姓名\n");
scanf("%s\n",head->name);
printf("学号\t姓名\t成绩\t");
scanf("%d\n",&head->score[i]);
head->next=NULL;
ptr=head;
for(i=1;i<n;i++)
{
ptr1=(llink)malloc(sizeof(node));
if(!ptr1)
return NULL;
printf("请输入学生学号\n");
scanf("%s",ptr1->no); //你把你的学号定义为char数组了.
printf("请输入学生姓名\n");
scanf("%s",ptr1->name);
printf("请输入学生成绩\n");
scanf("%d",&p->score[i]);
ptr1->next=NULL;
ptr1-next=ptr1;
ptr=ptr->next;
}
return head;
}
链表的插入操作必须有一个游动指针,必须含有
ptr1->next=NULL;
ptr1-next=ptr1;
ptr=ptr->next;
这几步关键语句;
其次关于printf()函数的格式化输出:
%c 单个字符
%d 十进制整数
%f 十进制浮点数
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数
%% 输出百分号%
仅供参考.

热心网友 时间:2023-10-08 21:21

printf("请输入学生学号\n");
scanf("%d",p->no); ///////////////应该是scanf("%s",p->no);
printf("请输入学生姓名\n");
scanf("%c\n",p->name); ///////////////应该是scanf("%s",p->name);
printf("请输入学生成绩\n");
for(i=0;i<3;i++)
scanf("%d\n",&p->score[i]); ///////////////应该是scanf("%f",&p->score[i]);

注意:上面的%s,%f分别是字符串和浮点数的输入格式!

热心网友 时间:2023-10-08 21:22

#include<stdio.h>
#include<stdlib.h>

void menu()
{
printf("MENU\n");
printf("0.输入\n");
printf("1.显示\n");
printf("2.删除\n");
printf("3.查找\n");
printf("4.插入\n");
}
struct student
{
int i;
char no[11]; /*学号由10个字符组成*/
char name[15]; /* 学生姓名*/
int score[3]; /*各门课成绩*/
float sum; /*总分*/
float average; /*平均分*/
int order; /*名次*/
struct student *next; /*指向后继结点的指针*/
};
struct student *p,*head;
void input()
{int i,n;
head=(struct student*)malloc(sizeof(struct student));
p=head;
printf("请输入数据个数");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入学生学号\n");
scanf("%s",p->no); //
printf("请输入学生姓名\n");
scanf("%s",p->name); //
printf("请输入学生成绩\n");
for(int j=0;j<3;j++) //这里也需要修改
scanf("%d",&p->score[j]);
p->next=(struct student*)malloc(sizeof(struct student));
if(i==n) p->next=NULL;
else p=p->next;
}
}
void output()
{
int i;
p=head;
printf("学号\t姓名\t成绩\t");
while(p!=NULL)
{
printf("%d%c",p->no,p->name);
for(i=0;i<3;i++)
printf("%d,%d,%d",&p->score[i]);
p=p->next;
}
}
void main()
{
int i;
menu();

printf("请选择\n");
scanf("%d",&i);
switch(i)
{
case 0:input();break;
case 1:output();break;
}
}

热心网友 时间:2023-10-08 21:22

1、将
scanf("%d",p->no);
修改为
scanf("%s",p->no);
2、将
scanf("%c\n",p->name);
修改为
scanf("%s\n",p->name);
3、将
if(i==n) p->next=NULL;
修改为
if(i==n-1)
{
free(p->next);
p->next=NULL;
}

热心网友 时间:2023-10-08 21:23

....太深奥 =高手回答吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...换手机号显示你以设置拒收微信登陆.换绑.注册短信怎么解决? 伊拉克战争是哪些国家发动的?请快回答,我有急用! 二零零三年三月谁发动了对伊拉克的战争 西门子、美的、容声三个门的冰箱那个牌子又省电又实用? 海尔冰箱BCD-206 SCFM 放3档工作多长时间 ,停多长时间正常 海尔BCD-206SCFM基本参数 6年级上册数学练习册百分数50到53页答案 小学数学六年级(上):帮你学数学口算练习册2008年印刷版信息 小学数学六年级(上):帮你学数学口算练习册2010年印刷版信息 小学六年级数学上册百分数练习册《课堂作业本》答案64面第2题 C语言数据结构 如何建立单向循环链表并且输入值 C语言链表的输入输出 c语言链表的输入求指导,纠结了好久 c语言实现链表的输入 C语言链表创建和输入 C语言链表的输入 《食品安全法实施条例》规定,餐饮服务许可的有效期为几年? 餐饮服务许可的有效期为几年? 餐饮服务许可证的有效期为几年? 美的电饭煲显示“e”是怎么回事? 餐饮服务许可证的有效期是多少年? 美的电压力锅坏了怎么修理 度蜜月是什么意思啊??老婆说结婚要去度蜜月 是什么 旅行结婚和度蜜月有什么不同吗? 去度蜜月英文怎么说 你觉得新婚之后一定要去度蜜月吗? ? 关于“度蜜月”的句子有哪些? 度蜜月一般几天最好呢? 新婚夫妻要度蜜月吗? 度蜜月是多久 C语言链表输入输出 C语言,为什么在输入链表数据的时候总是报错? 关于C语言链表插入数值的问题 C语言 建立链表输入学生信息然后输出 哪里错了. C语言单向链表的创建,输入,插入和删除的实现 一道c语言链表输入问题菜鸟题 C语言链表输。数据输入完成了,输出的时候只能输出最后一个,求指导:) C语言链表输入打印多项式 c语言 双向链表的初始化和输入 C语言链表输入并显示的问题,急啊!! 厦门法院强化诉调对接有什么作用? 市级法院分哪些部门(科室) 什么是中国民生银行消保委员会报告事项工作程序? 研究农民工犯罪的理由或意义是什么? 镇江法院下午上班时间 最高法工作报告普遍建立一站式多元解纷机制的成效怎么样? 南京市江宁区人民法院的所获荣誉 温州30条的内容什么 如何构建多元的矛盾化解机制 永辉超市股份有限公司电话是多少?