标题:本人初学者,向大神请教两个小问题,谢谢了
只看楼主
chinajlin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-2-13
 问题点数:0 回复次数:6 
本人初学者,向大神请教两个小问题,谢谢了
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
    system("color 0a");
    int a,b,c;         //这里不让我设置c为字符型,设成char c;下面就会出错
    printf("欢迎使用倒计时程序\n");
    printf("------------------\n");
   
    printf("请设置分钟数(按回车键确定)");
    scanf("%02d",&a);
    while(!(a>=0 && a<60))
        {
        if(a>=0 && a<60)
            a=a;
        else
            printf("您输入的数值有误!请重新输入。\n");
            Sleep(1000);
            printf("请设置分钟数(按回车键确定)");
            scanf("%02d",&a);
        }
        
    printf("请设置秒数(按回车键确定)");
    scanf("%02d",&b);
    while(!(b<60 && b>=0))    //我想设置成while(b>=60 && b<0),后面一起更改,出错!
        {
        if(b<60 && b>=0)
            b=b;
        else
            printf("您输入的数值有误!请重新输入。\n");
            Sleep(1000);
            printf("请设置秒数(按回车键确定)");
            scanf("%02d",&b);
        }
        
    printf("请输入ok按回车键开始");
    scanf("%d",&c);
   
    while(a>=0)
    {
        while(b>0)
        {
            system("cls");
            printf("%02d:%02d",a,b);
            Sleep(1000);
            b--;
        }
        system("cls");
        printf("%02d:%02d",a,b);
        Sleep(1000);
        a--;
        b=59;
    }
    system("cls");
    printf("00:00\n");
    printf("倒计时结束,谢谢使用!\n");
    Sleep(3000);
    system("pause");
    return 0;
}

上面是我写的一个课后作业,是编一个倒计时程序,这个程序是可以运行的,但里面有两个地方我想改下,我感觉我改的没问题,但改完后却报错,请高手指点一下。
1、我上面定义的c其实是没有实际作用的,只是想随便输入个内容然后按回车键的,我这里定义为int c,我想改为char c,因为毕竟是要使用的人输入ok的,但我这样定义后,后面就不让我输入而直接跳到下一步了,我后面也改为了相应的scanf("%c,&c"),请高手指点一下。
2、在设置分钟数和秒数那里,我写的是while(!(a>=0 && a<60)),我想改为while(a>=60 && a<0),下面的if语句也相应的改了过来,但我在运用时,如果我输入一个错误的数值,例如61,本来想程序应该是提示错误然后让我重新输入,但这里却会直接跳入到下一个语句,没有进行循环,请高手指点一下,谢谢了。
搜索更多相关主题的帖子: printf 回车键 scanf 输入 while 
2020-02-13 17:11
QQ3161222063
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-2-14
得分:0 
1. char是单个字符,你输入个"ok"? 改成char数组就能输"ok"了
或者输入单个字符'y'(yes/no )
2.是或的关系不是与的关系。你家a>=60和a<0能同时成立?
!(a>=0 && a<60)应该是 a>=0||a<60 数学再好好学学
2020-02-14 14:09
chinajlin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-2-13
得分:0 
回复 2楼 QQ3161222063
谢谢你的解答。关于第一个问题,我描述的不大清楚,我现在这样写后面就会让我输入c的值,随便什么都可以,因为没有影响,但我改成int a,b;char c;,下面改为scanf("%c",&c);时,当运行到输入c的值时,不等我输入任何数值然后按回车,直接就开始运行下一句了。
第二个问题解决了,谢谢你的指导。
2020-02-14 15:29
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
将  scanf("%c",&c);
改为scanf("%c ",&c);试试。
2020-02-14 16:54
QQ3161222063
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-2-14
得分:0 
回复 3楼 chinajlin
第一个我没看明白你意思。
刚刚看你解释,我猜测改成char 时,回车键也会当成一个字符,所以啥也不用输入。

解决方案我不清楚,试试版主说的?
2020-02-14 17:42
chinajlin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-2-13
得分:0 
回复 5楼 QQ3161222063
其实我就是想设置的东西,在我敲回车键以后再开始进行倒计时,因为我刚学,不知道其他的方法,就想了这么个笨办法,通过输入一个用不到的数值来起到暂停的效果,但我设置int时就会让我输入,改成char就不行了,这两个只是输入内容的格式的不同,应该不会有影响,但就是直接跳过了输入这一步。
2020-02-14 17:50
chinajlin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-2-13
得分:0 
回复 4楼 自学的数学
改过了,现在问题解决了,谢谢,但我不清楚为啥加个空格就可以了,感觉这个语句不加空格也没错啊,还请麻烦你再给讲解一下。
2020-02-14 17:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499217-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.436645 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved