#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long int data;
float score;
struct Student *next;
};
int n;
struct Student *creat(void)
{
struct Student *p1,*p2,*head;
head=NULL;
p2=p1=(struct Student *)malloc(LEN);
n=0;
scanf("%d,%f",&p1->data,&p1->score);
while(p1->data!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(LEN);
scanf("%d,%f",&p1->data,&p1->score);
}
p2->next=NULL;
return head;
}
print(struct Student *head)
{
struct Student *p;
p=head;
while(p->data)
{
printf("%d%.1f\n",p->data,p->score);
p=p->next;
}
}
void main()
{
struct Student *t;
t=creat();
print(t);
}
這是一個簡單的鏈表的創立和輸出,但是我編譯時沒有出任何錯誤,運行的時候出來了好些問題
1、1是在輸入score的時候,輸入了帶小數點的數,按下回車就直接輸出,而且輸出還有問題截圖:
2、2是在不輸入小數點的情況下,輸出后資料乘了10。
這是怎么回事,直接懵了。
uj5u.com熱心網友回復:
scanf();函式是格式化輸入的意思,這里的格式就是你寫的("%d,%f"),那么你的輸入也應該一樣4564 32.0改成4564,32.0就不會一輸入小數就直接輸出了;
你發現每次輸出資料乘了10應該是還是格式問題,scanf認為你沒有輸入第二個數,所以就認為第二個數是0,你格式化輸出的兩個數也沒有分開,你輸入123 123,程式認為你輸入的是123,0 123,0 所以給你輸出1230 1230,看起來像是乘了10
uj5u.com熱心網友回復:
也不對呀,不管是加沒加,還是沒用
uj5u.com熱心網友回復:
你的程式在我這跑的結果,你看看我的輸入
uj5u.com熱心網友回復:
樓主看一下你的scanf輸入的格式是什么,是不是少了一個逗號,并且是英文的逗號;
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long int data;
float score;
struct Student *next;
};
int n;
struct Student *creat(void)
{
struct Student *p1,*p2,*head;
head=NULL;
p2=p1=(struct Student *)malloc(LEN);
n=0;
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data, &p1->score);
while(p1->data!=0)
{
n=n+1;
if(n==1)
head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(LEN);
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data,&p1->score);
}
free(p1);//p1沒加入鏈表,應該釋放
p2->next=NULL;
return head;
}
//print(struct Student *head)
void print(struct Student *head)
{
struct Student *p;
p=head;
//while(p->data)
while(p)
{
//printf("%d%.1f\n",p->data,p->score);
printf("%ld\t%.1f\n",p->data,p->score);
p=p->next;
}
}
//void main()
int main()
{
struct Student *t;
t=creat();
print(t);
}
供參考~
其他問題看代碼~如上
uj5u.com熱心網友回復:
參考 4 樓 自信男孩 的回復: 樓主看一下你的scanf輸入的格式是什么,是不是少了一個逗號,并且是英文的逗號;
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long int data;
float score;
struct Student *next;
};
int n;
struct Student *creat(void)
{
struct Student *p1,*p2,*head;
head=NULL;
p2=p1=(struct Student *)malloc(LEN);
n=0;
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data, &p1->score);
while(p1->data!=0)
{
n=n+1;
if(n==1)
head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(LEN);
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data,&p1->score);
}
free(p1);//p1沒加入鏈表,應該釋放
p2->next=NULL;
return head;
}
//print(struct Student *head)
void print(struct Student *head)
{
struct Student *p;
p=head;
//while(p->data)
while(p)
{
//printf("%d%.1f\n",p->data,p->score);
printf("%ld\t%.1f\n",p->data,p->score);
p=p->next;
}
}
//void main()
int main()
{
struct Student *t;
t=creat();
print(t);
}
供參考~
其他問題看代碼~如上 是scanf的逗號應該是沒錯,估計是我的編譯軟體出了問題,我還有些細節與要注意,我用老哥你的代碼運行是有問題,我得換個軟體,謝謝老哥了
uj5u.com熱心網友回復:
參考 4 樓 自信男孩 的回復: 樓主看一下你的scanf輸入的格式是什么,是不是少了一個逗號,并且是英文的逗號;
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long int data;
float score;
struct Student *next;
};
int n;
struct Student *creat(void)
{
struct Student *p1,*p2,*head;
head=NULL;
p2=p1=(struct Student *)malloc(LEN);
n=0;
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data, &p1->score);
while(p1->data!=0)
{
n=n+1;
if(n==1)
head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(LEN);
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data,&p1->score);
}
free(p1);//p1沒加入鏈表,應該釋放
p2->next=NULL;
return head;
}
//print(struct Student *head)
void print(struct Student *head)
{
struct Student *p;
p=head;
//while(p->data)
while(p)
{
//printf("%d%.1f\n",p->data,p->score);
printf("%ld\t%.1f\n",p->data,p->score);
p=p->next;
}
}
//void main()
int main()
{
struct Student *t;
t=creat();
print(t);
}
供參考~
其他問題看代碼~如上
uj5u.com熱心網友回復:
參考 3 樓 qq_37230152 的回復:
你的程式在我這跑的結果,你看看我的輸入嘖這感覺是我的編譯軟體出了問題
uj5u.com熱心網友回復:
參考 5 樓 小張在努力丫 的回復: Quote: 參考 4 樓 自信男孩 的回復: 樓主看一下你的scanf輸入的格式是什么,是不是少了一個逗號,并且是英文的逗號;
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long int data;
float score;
struct Student *next;
};
int n;
struct Student *creat(void)
{
struct Student *p1,*p2,*head;
head=NULL;
p2=p1=(struct Student *)malloc(LEN);
n=0;
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data, &p1->score);
while(p1->data!=0)
{
n=n+1;
if(n==1)
head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(LEN);
//scanf("%d,%f",&p1->data,&p1->score);
scanf("%ld,%f",&p1->data,&p1->score);
}
free(p1);//p1沒加入鏈表,應該釋放
p2->next=NULL;
return head;
}
//print(struct Student *head)
void print(struct Student *head)
{
struct Student *p;
p=head;
//while(p->data)
while(p)
{
//printf("%d%.1f\n",p->data,p->score);
printf("%ld\t%.1f\n",p->data,p->score);
p=p->next;
}
}
//void main()
int main()
{
struct Student *t;
t=creat();
print(t);
}
供參考~
其他問題看代碼~如上 是scanf的逗號應該是沒錯,估計是我的編譯軟體出了問題,我還有些細節與要注意,我用老哥你的代碼運行是有問題,我得換個軟體,謝謝老哥了
是運行問題還是編譯問題?如果是運行問題,那么跟換軟體有啥關系?你說的是編譯問題吧,把問題貼出來吧
uj5u.com熱心網友回復:
兄弟 你的逗號看起來真滴是中文逗號
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9547.html
標籤:C語言
上一篇:c語言檔案管理
下一篇:把電腦玩爆