新手遇到的C的问题

nimo_soon 2008-08-07 03:19:19
#include <stdio.h>
main()
{
struct
{ /*定义一个结构变量*/
char name[8];
int age;
char sex[4];
char depart[20];
float wage1,wage2,wage3;
}a;
float wage;
char c='Y';
while(c=='Y'||c=='y') /*判断是否继续循环*/
{
printf("\nName:");
scanf("%s", a.name); /*输入姓名*/
printf("Age:");
scanf("%d", &a.age); /*输入年龄*/
printf("Sex:");
scanf("%s", a.sex);
printf("Dept:");
scanf("%s", a.depart);
printf("Wage1:");
scanf("%f", &a.wage1); /*输入工资*/
printf("Wage2:");
scanf("%f", &a.wage2);
printf("Wage3:");
scanf("%f", &a.wage3);
wage=a.wage1+a.wage2+a.wage3;
printf("The sum of wage is %6.2f\n", wage);
printf("Continue?<Y/N>");
c=getche();
}
}


这个例子是我从教程上摘下来的,当进行一次循环后输入Y,进行第二次循环,按理说打印出来的是name: 但是出现在屏幕上的却是
name:age: 请大家帮忙看下原因
...全文
25 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2008-08-07
  • 打赏
  • 举报
回复
学习~~

正解!
xkyx_cn 2008-08-07
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <conio.h>

main()
{
struct
{ /*定义一个结构变量*/
char name[8];
int age;
char sex[4];
char depart[20];
float wage1,wage2,wage3;
}a;
float wage;
char c='Y';
while(c=='Y' || c=='y') /*判断是否继续循环*/
{
printf("\nName:");
scanf("%s", a.name); /*输入姓名*/
fflush(stdin);
printf("Age:");
scanf("%d", &a.age); /*输入年龄*/
fflush(stdin);
printf("Sex:");
scanf("%s", a.sex);
fflush(stdin);
printf("Dept:");
scanf("%s", a.depart);
fflush(stdin);
printf("Wage1:");
scanf("%f", &a.wage1); /*输入工资*/
fflush(stdin);
printf("Wage2:");
scanf("%f", &a.wage2);
fflush(stdin);
printf("Wage3:");
scanf("%f", &a.wage3);
fflush(stdin);
wage=a.wage1+a.wage2+a.wage3;
printf("The sum of wage is %6.2f\n", wage);
printf("Continue? <Y/N>");
c=getche();
}
}
xkyx_cn 2008-08-07
  • 打赏
  • 举报
回复
清空输入缓存,每个scanf后都加上一句:
fflush(stdin);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧