注册 登录
编程论坛 新人交流区

[求助]C PRMIER PLUS后的一个题

wubizao 发布于 2007-11-18 12:44, 772 次点击
第四版第五章编程练习3
原题:写一程序,要求用户输入天数,然后转化为周数和天数。
显示如下:
18 days are 2 weeks,4days.
要求:
使用一个while循环让用户重复输入天数;当用户输入一个非数值(如Q)时,程序终止循环。
我是这样写的:
#include<stdio.h>
#define WL 7
int main(void)
{
int dayss;
int weeks,days;

scanf("%d",&dayss);
while(dayss>=0)
{
weeks=dayss/WL;
days=dayss%WL;
printf("%d days are %d weeks,%d days\n",dayss,weeks,days);
printf("Next input?\n");
scanf("%d",dayss);
}
return 0;
}

我只是满足了题目的一个要求,重复输入,但是想了好久,不知道怎么样才能实现输入一个非数值就跳出循环?
望大家点拨下?
5 回复
#2
xDevil2007-11-18 13:12
#include<stdio.h>
#define WL 7
int main(void)
{
int dayss;
int weeks,days;
printf("input:\n");
while(scanf("%d",&dayss)&&dayss!=NULL)
{
weeks=dayss/WL;
days=dayss%WL;
printf("%d days are %d weeks,%d days\n",dayss,weeks,days);
printf("Next input?\n");
}
return 0;
}
#3
wubizao2007-11-18 13:16

我还没学到这个进度
这句scanf("%d",&dayss)&&dayss!=NULL
不明白
看来要加油了!

#4
wubizao2007-11-18 13:19
我翻了下书
scanf()函数返回成功读入的项目的个数
如果没有读取项目(当它期望一个数值却你输入了一个非数值),scanf()就会返回0
#5
fanhgghgg2007-11-18 13:23
while(scanf("%d",&dayss)!=EOF&&adysss>=0)

{
....

}
#6
wubizao2007-11-18 13:32
多谢大家指导!
1