输入一个字符继续程序,输入另外一个字符退出程序问题
如题,为啥我的程序在运行第二遍的时候会打印两次"输入y继续,输入n退出"。下面是程序
/*懒惰的渔夫三天打鱼两天晒网,要求程序输入从2011年
1月1日后的任意一天能查询到渔夫在打鱼还是在晒网*/
#include <stdio.h>
int rnpd(int a)//自定义闰年判断函数
{
if(a%4==0&&a%100==0||a%400==0)//闰年成立条件
return 1;
else
return 0;
}
int tsjs(int nian,int yue,int ri)//自定义天数计算函数
{
int sum=0,i,j;//声明自定义函数sum
int a[]={31,28,31,30,31,30,31,31,30,31,30,31};//数组,闰年十二个月每月天数
int b[]={31,29,31,30,31,30,31,31,30,31,30,31};//数组,非闰年十二个月每月天数
if(rnpd(nian)==1)//判断闰年判断函数返回值
for(i=0;i<yue-1;i++)//除了输入的月份的之前的月份的天数的和
sum+=a;
else
for(i=0;i<yue-1;i++)
sum+=b;
if(rnpd(nian)==1)
for(j=2011;j<nian;j++)//判断距离2011年有多少年,并且检测其中有没有闰年且将之前年份的天数求和
sum+=366;
else
sum+=365;
sum+=ri;//将输入的日子,月份天数和,年份天数和相加并赋值给sum函数
return sum;
}
int main()
{
int nian,yue,ri,d;
char e;
while(1)//死循环
{
printf("输入y继续,输入n退出\n");
e=getchar();
switch(e)
{
case 'y' ://e等于'y'分支
{
printf("请输入年月日,以空格键隔开\n");
scanf("%d%d%d",&nian,&yue,&ri);
d=tsjs(nian,yue,ri);//调用天数计算函数
if((d%5)<4&&(d%5>0))//天数计算函数结果值对5取余数
printf("渔夫在打鱼\n");
else
printf("渔夫在晒网\n");
}
;
break;
case 'n' ://e等于'n'分支
{
break;//跳出死循环
}
;
break;
}
}
} 手机编译器打的,可能格式没那么好看{:10_277:} 用if else来写也是一样,是我编译器的问题还是程序问题。??大佬们过来瞧一瞧看一看咯 AA刘海明 发表于 2021-5-18 07:30
用if else来写也是一样,是我编译器的问题还是程序问题。??大佬们过来瞧一瞧看一看咯
你把你的运行结果截图发来看一下 孤世星辰 发表于 2021-5-18 11:18
你把你的运行结果截图发来看一下
ev9r 孤世星辰 发表于 2021-5-18 11:18
你把你的运行结果截图发来看一下
发了,好像发图片链接要审核 本帖最后由 AA刘海明 于 2021-5-18 14:04 编辑
百度网盘分享的好像都要提取码 /*
懒惰的渔夫三天打鱼两天晒网,要求程序输入从2011年
1月1日后的任意一天能查询到渔夫在打鱼还是在晒网
*/
#include <stdio.h>
int rnpd(int a)
//自定义闰年判断函数
{
if(a%4==0&&a%100==0||a%400==0)
//闰年成立条件
return 1;
else
return 0;
}
int tsjs(int nian,int yue,int ri)
//自定义天数计算函数
{
int sum=0,i,j;
//声明自定义函数sum
int a[]={
31,28,31,30,31,30,31,31,30,31,30,31}
;
//数组,闰年十二个月每月天数
int b[]={
31,29,31,30,31,30,31,31,30,31,30,31}
;
//数组,非闰年十二个月每月天数
if(rnpd(nian)==1)
//判断闰年判断函数返回值
for(i=0;i<yue-1;i++)
//除了输入的月份的之前的月份的天数的和
sum+=a;
else
for(i=0;i<yue-1;i++)
sum+=b;
if(rnpd(nian)==1)
for(j=2011;j<nian;j++)
//判断距离2011年有多少年,并且检测其中有没有闰年且将之前年份的天数求和
sum+=366;
else
sum+=365;
sum+=ri;
//将输入的日子,月份天数和,年份天数和相加并赋值给sum函数
return sum;
}
int main()
{
int nian,yue,ri,d;
char e;
while(1)
//死循环
{
printf("输入y继续,输入n退出\n");
e=getchar();
if(e=='y')
{
printf("请输入年月日,以空格键隔开\n");
scanf("%d%d%d",&nian,&yue,&ri);
d=tsjs(nian,yue,ri);
//调用天数计算函数
if((d%5)<4&&(d%5>0))
//天数计算函数结果值对5取余数
printf("渔夫在打鱼\n");
else
printf("渔夫在晒网\n");
e=getchar();
}
else if(e=='n')
{
{
break;
//跳出死循环
}
}
else if(e!='y'&&e!='n')
{
printf("请输入正确的字母或数字\n");
e=getchar();
}
}
}
{:10_266:}{:10_250:}{:10_266:}原来每次输入完有打印的动作后都要获取一次当前键盘输入
页:
[1]