当前位置: 代码迷 >> C语言 >> [求助]一个简单却易犯错的scanf输入
  详细解决方案

[求助]一个简单却易犯错的scanf输入

热度:370   发布时间:2007-05-17 11:06:51.0
[求助]一个简单却易犯错的scanf输入
从键盘 输入3学生数据
要求有 姓名 学号 三门课成绩 (关于结构体的题。谁能用scanf+一个for循环就把所有的数据输入进去呢?)

[此贴子已经被作者于2007-5-17 11:07:40编辑过]

搜索更多相关的解决方案: scanf  输入  

----------------解决方案--------------------------------------------------------

for(i=0;i<3;i++)
{
scanf("%s%s%d%d%d",s1,s3,&a,&b,&c);
如果还是不行就加一个
fflush(stdin)
}


----------------解决方案--------------------------------------------------------
回复:(qq110224037)[求助]一个简单却易犯错的scanf...
是一个这样的结构。如下 现在要求从键盘输入3学生数据,要求有姓名 ,性别,三门成绩。并输出性别 姓名,三门成绩总平均成绩以及输出最高分和拿最高分的学生姓名
void main()
{
struct pu \*结构名*\
{char name[8];\*姓名*\
char sex[2];\*性别*\
float a1;\*英语成绩*\
float a2;\*数学成绩*\
float a3;\*语文成绩*\
}s[3];\*定义数组形结构变量*\
}

[此贴子已经被作者于2007-5-17 12:23:30编辑过]


----------------解决方案--------------------------------------------------------
我也是初学者~我想问上二楼;你那还能清晰点么~我还是不会用你的!
----------------解决方案--------------------------------------------------------

fflush(stdin) 第一次看到这个函数!刚刚在网上查了下!就放这里吧!


fflush( ) 函数

刷新低级函数打开的文件内容,并将它写入磁盘。

语法

FFLUSH(nFileHandle)

参数

nFileHandle

指定输出到磁盘的刷新文件的句柄。

返回值类型
逻辑型

说明
fflush( ) 函数释放此文件缓冲区所占用的内存。
FLUSH 命令与 fflush( ) 函数不同。FLUSH 命令不对低级文件操作,而对表和索引进行操作.

原始连接:http://jsjzx.yzu.edu.cn/jsjzx/jyn/wtm/vfphelp/lngfflushlp_rp.htm


----------------解决方案--------------------------------------------------------

试试这个:
for(i=0;i<3;i++)
{
scanf("%s%c%d%d%d",s[i].name,s[i].sex,s[i].a1,s[i].a2,s[i].a3);

}

不行就加个 &:
for(i=0;i<3;i++)
{
scanf("%s%c%d%d%d",&s[i].name,&s[i].sex,&s[i].a1,&s[i].a2,&s[i].a3);

}


----------------解决方案--------------------------------------------------------

#define NUM 2
main()
{
int i,k;
struct student
{
char name[10];
char sex[2];
int english;
int math;
int chinese;
int pj;
};
struct student pu[NUM];
for(i=0;i<NUM;i++)
{ printf("\nthe %d student:\n",i+1);

printf("please inter name:");
scanf("%s",pu[i].name);

printf("please inter sex:");
scanf("%s",pu[i].sex);

printf("please inter english:");
scanf("%d",&pu[i].english);

printf("please inter math:");
scanf("%d",&pu[i].math);

printf("please inter chinese:");
scanf("%d",&pu[i].chinese);

pu[i].pj=(pu[i].english+pu[i].math+pu[i].chinese)/3;
}

for(i=0;i<NUM;i++)

for(i=0;i+1<NUM;i++)
{if(pu[i].pj>pu[i+1].pj) k=i; else k=i+1;}

printf("\n%s,%s,%5d,%5d,%5d,pj=%d\n",pu[k].name,pu[k].sex,pu[k].english,pu[k].math,pu[k].chinese,pu[k].pj);

}


----------------解决方案--------------------------------------------------------

for(i=0;i<3;i++)
{
scanf("%s %c %f %f %f",s[i].name,s[i].sex,&s[i].a1,&s[i].a2,&s[i].a3);

}

"%s %c %f %f %f" //中间有空格


----------------解决方案--------------------------------------------------------
7楼的不错,呵呵,向你学习啊
----------------解决方案--------------------------------------------------------
回复:(qq110224037)[求助]一个简单却易犯错的scanf...

感谢大家关注,特别谢谢7楼--你是最棒的 (呵呵~~~~~~~~~


----------------解决方案--------------------------------------------------------
  相关解决方案