我在做练习,写一个动态的单向链表,实现创建,删除功能,创建链表完成后,输入数据时,出现了问题,我把代码发出来,前辈们帮看看,问题出在哪?
#include <stdio.h>#include <malloc.h>
#define LEN sizeof(struct student)
struct student *creat();struct student *delet(struct student *head,int a);void print(struct student *head);
int n;
struct student{ int num; float score; struct student *next;};
void main(){ struct student *p,*y; int b; p=creat(); printf("请输入要删除的结点:"); scanf("%d",&b); y=delet(p,b); print(y); }
struct student *creat(){ struct student *head,*p1,*p2; p1=p2=(struct student *)malloc(LEN); n=0; head=NULL; printf("请输入学号:"); scanf("%d",&p1->num); printf("请输入分数:"); scanf("%f",&p1->score);//这一步的时候,就出现问题了,把%f改成%d,把上面struct student里的float score改成int,就没问题了,这是什么回事呀 while(p1->num!=0) { n++; if(n==1) { head=p1; } else { p2->next=p1; } p2=p1; p1=(struct student *)malloc(LEN); printf("请输入学号:"); scanf("%d",&p1->num); printf("请输入分数:"); scanf("%f",&p1->score); }
free(p1); p2->next=NULL;
return head;}
struct student *delet(struct student *head,int a){
}
void print(struct student *head){
}
我把运行后出问题的图片贴出来,前辈们帮看看,是怎么回事
å äº\nè¿æ¯ä¸è¡åããã
追çç¡®å®æ¯ç¯å¢çé®é¢ï¼å¥½äºï¼æä½ ä¸ªåæ³ï¼
æ代ç æ·è´ä¸ä¸ï¼éæ°ç¼è¯å°±å¥½äºãä¸è¦å¤ªè®¤çï¼è¿ç§äºæµªè´¹æ¶é´ã
#include
#include
#define LEN sizeof(struct student)
struct student *creat();
struct student *delet(struct student *head,int a);
void print(struct student *head);
int n;
struct student
{
int num;
float score;
struct student *next;
};
void main()
{
struct student *p,*y;
int b;
p=creat();
printf("请è¾å
¥è¦å é¤çç»ç¹ï¼");
scanf("%d",&b);
y=delet(p,b);
print(y);
}
struct student *creat()
{
struct student *head,*p1,*p2;
p1=p2=(struct student *)malloc(LEN);
n=0;
head=NULL;
printf("请è¾å
¥å¦å·ï¼");
scanf("%d",&p1->num);
printf("请è¾å
¥åæ°:");
scanf("%f",&p1->score);
while(p1->num!=0)
{
n++;
if(n==1)
{
head=p1;
}
else
{
p2->next=p1;
}
p2=p1;
p1=(struct student *)malloc(LEN);
printf("请è¾å
¥å¦å·ï¼");
scanf("%d",&p1->num);
printf("请è¾å
¥åæ°:");
scanf("%f",&p1->score);
}
free(p1);
p2->next=NULL;
return head;
}
struct student *delet(struct student *head,int a)
{
return head;
}
void print(struct student *head)
{
}
我用getchar(p1->score),但是不给输入,,
追答getchar 是从屏幕获取一个字符。兄弟。你用错了。
追问那应该换哪个呀?,,
我的代码应该没有问题吧?上一次做练习时这样还行,现在就不行了,,
C语言高手进,帮忙解答一下下列各题的标准答案。此题是我的重要复习题...
【答案】32.D 33.B 36.A 45.C 47.C 50.D 58.B 【解析】32.字符串数组除了里面的实际字符,系统还会自动的分配一个结束符"\\0",所以该数组所占空间为6+1=7个。33.一句话说不明白,放心,已经通过程序验证,答案肯定正确。36.括号内的只能算是一个参数。45.因为是static定义的静态变量,所...
c语言高手帮忙下,看看下面这个程序哪里出错
首先。。。y=3x-1;和y=2x-1;这里,明显是错误的,c语言中的变量不能以数字开头的,3x,2x明显不是变量,应该是想做乘法运算吧,如果是乘法运算的话应该有“*”。其次,else是自动跟上一个没配对掉的if组合,这样的话if(x>=10)y=3x-1;printf("=%d",y);else的写法就不对了,应该在if后...
C语言高手进来帮一下忙啊 两个程序有什么不一样吗?为什么结果不同呢...
参考以下吧, fopen的参数 r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rb+ 读写打开一个二进制文件,允许读数据。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ ...
C语言高手来看看,看程序写结果,告诉我步骤
include<stdio.h> int x1=30,x2=40;\/\/此时全局变量变成10;void sub(int x,int y){ x1=x; \/\/把传进来的值赋值给全局变量x1;x=y;\/\/这一段和下面一段不用管,形参x跟y值的改变是不改变实参x3,跟x4的值的,只要注意全局变量x1跟x2即可。y=x1;} int main(){ int x3=10,x4=20;sub...
用C语言编写求高手帮我看一下,那里错了,题目是这样的,读入三角形三边的...
S(a,b,c)(a+b+c)\/2 define AREA(a,b,c) sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))这种定义习惯非常不好,把他们改成函数,在main中调用 补充:语法上是没有错,但是你的sqrt 是在某个h文件中的宏定义 在编译的时候,编译器找不到对应sqrt的宏 ...
C语言高手进来帮看下
具体自己研究。解决的话就是 printf("请输入学号:\\n");scanf("%d",&p1->num);printf("请输入分数: \\n");scanf("%f",&p1->score);这样在后面换行就好。也有清空缓冲区的函数,我不是很会用。fflush(stdin);\/\/清空输入缓冲区 fflush(stdout);\/\/清空输出缓冲区 可追问。
关于C语言求一串阶乘的和,求高手帮我看一下!
如果在计算20以内的阶乘之和时,使用常规的整型变量,可能会出现计算结果错误的问题。原因在于阶乘之和超过了整型变量的存储上限。例如,计算结果实际为2561327494111820313,而代码输出为268040729。这主要是因为计算过程中数值超过了整型的最大值。解决此问题的方法是使用浮点型变量进行计算,以避免整数溢出。
C语言的高手们快进来!帮忙啊
楼上说的对,执行完printf("%c,",b++); b现在是字符'3',然后,你把b-a,首先2个字符不能直接运算,计算机自动转换他们的ASCII,结果是 int类型的数字2,然后%d输出,就是数字2了。
C语言高手请进 帮我看看这个函数写对了吗??
int create(){ int n=0;struct man temp,man_list[N],*p,*a;FILE *fp;int res;fp=fopen("d:\\\\tongxunlu.dat","r+"); \/\/ 打开方式出错 if(fp==NULL){ printf("文件打开失败");return 0;} p=man_list;res=fscanf(fp,"%20s%15s%15s",p->name,p->cellph,p->tel);if(...
c语言高手请进来!
int i=-1;printf("%d,%o\\n",i,i)上面那大哥说的差不多了,只是%d是表示10进制的,%o是表示8进制的,关于在内存中怎么存贮转化你可以参考下清华大学出版社的 计算机基础,。大一的学生用的。8进制的177777转化成10进制并不是-1,这和在内存中的存储有关系,具体说太复杂了,你去自己看下吧。