主题:精度无法输入?为什么?
#define NULL 0
#define STU struct stu
#include <malloc.h>
#include<stdio.h>
STU
{
float num; //这里改成int 就ok ! 精度为什么就不行?(当然输出也改成%d)
char name[20];
STU *next;
};
main()
{STU *p1,*p2,*head;
printf("input the num :输如:\n");
head=(STU *) malloc(sizeof(STU));
p1=p2=head;
scanf("%f",&p2->num);
fflush(stdin);
printf("input the name :\n");
scanf("%[^\n]",p2->name);
fflush(stdin);
while(p2->num != 0 )
{p2=(STU *)malloc(sizeof(STU));
printf("input the num :输如:\n");
scanf("%f",&p2->num);
fflush(stdin);
if (p2->num==0)break;
printf("input the name :\n");
scanf("%[^\n]",p2->name);
fflush(stdin);
p1->next=p2;
p1=p2;
}
p1->next=NULL;
printf("\n");
do
{printf("%f\n",head->num);
printf("%s\n",head->name);
head=head->next;
printf("\n");
}while (head!=NULL);
}
以上为处理链表的一段代码
请问:1、为什么记录类型中定义的 num 为精度时就报错阿 ?
是不是输入时的什么格式没有注意到?
请问:2、为什么将 num 定义成 int 就没事了呢 ?(当然输出时的格式符也要改)
先谢过了!!!!!!!!!!!!
[em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1]
#define STU struct stu
#include <malloc.h>
#include<stdio.h>
STU
{
float num; //这里改成int 就ok ! 精度为什么就不行?(当然输出也改成%d)
char name[20];
STU *next;
};
main()
{STU *p1,*p2,*head;
printf("input the num :输如:\n");
head=(STU *) malloc(sizeof(STU));
p1=p2=head;
scanf("%f",&p2->num);
fflush(stdin);
printf("input the name :\n");
scanf("%[^\n]",p2->name);
fflush(stdin);
while(p2->num != 0 )
{p2=(STU *)malloc(sizeof(STU));
printf("input the num :输如:\n");
scanf("%f",&p2->num);
fflush(stdin);
if (p2->num==0)break;
printf("input the name :\n");
scanf("%[^\n]",p2->name);
fflush(stdin);
p1->next=p2;
p1=p2;
}
p1->next=NULL;
printf("\n");
do
{printf("%f\n",head->num);
printf("%s\n",head->name);
head=head->next;
printf("\n");
}while (head!=NULL);
}
以上为处理链表的一段代码
请问:1、为什么记录类型中定义的 num 为精度时就报错阿 ?
是不是输入时的什么格式没有注意到?
请问:2、为什么将 num 定义成 int 就没事了呢 ?(当然输出时的格式符也要改)
先谢过了!!!!!!!!!!!!
[em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1][em1]