鱼C论坛

 找回密码
 立即注册
查看: 3086|回复: 7

输入一个字符继续程序,输入另外一个字符退出程序问题

[复制链接]
发表于 2021-5-18 07:08:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,为啥我的程序在运行第二遍的时候会打印两次"输入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[i];
    else
    for(i=0;i<yue-1;i++)
    sum+=b[i];
    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;
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-18 07:24:34 | 显示全部楼层
手机编译器打的,可能格式没那么好看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-18 07:30:29 | 显示全部楼层
用if else来写也是一样,是我编译器的问题还是程序问题。??大佬们过来瞧一瞧看一看咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-18 11:18:17 | 显示全部楼层
AA刘海明 发表于 2021-5-18 07:30
用if else来写也是一样,是我编译器的问题还是程序问题。??大佬们过来瞧一瞧看一看咯

你把你的运行结果截图发来看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-18 14:01:08 | 显示全部楼层
孤世星辰 发表于 2021-5-18 11:18
你把你的运行结果截图发来看一下

ev9r
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-18 14:01:52 | 显示全部楼层
孤世星辰 发表于 2021-5-18 11:18
你把你的运行结果截图发来看一下

发了,好像发图片链接要审核
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-18 14:03:12 | 显示全部楼层
本帖最后由 AA刘海明 于 2021-5-18 14:04 编辑

百度网盘分享的好像都要提取码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-18 23:16:54 | 显示全部楼层
/*
懒惰的渔夫三天打鱼两天晒网,要求程序输入从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[i];
    else
    for(i=0;i<yue-1;i++)
    sum+=b[i];
    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();
        }
    }
}
原来每次输入完有打印的动作后都要获取一次当前键盘输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-11 04:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表