搜索
查看: 3141|回复: 14
打印 上一主题 下一主题

167页的课后题把我难住了。请尝试编写一个两分钟倒计时。

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-4 13:56:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
问题:167页的课后题把我难住了。请尝试编写一个两分钟的倒计时。形如:2:00 1:59 1:58 ……0:01 0:00   如何编写啊?

沙发
发表于 2013-2-4 14:25:06 | 只看该作者
#include<stdio.h>
#include<stdlib.h>
int main()
    {
   system("color 3a");//颜色
        int min,sec2,i,sec1; //变量min表示分钟,变量sec1表示秒的十位,变量sec2表示秒的个数,变量i计算循环次数.
     min=2;
        while(min>=0)  //当sec1循环6次后开始min循环.
        {        sec1=5;
        while(sec1>=0)//当sec2循环10次后开始sec1循环
        {
        
        sec2=9;
        i=0;
                while(i<=9&&sec2>=0)//sec2循环10次,用i计算循环的次数
                        {
                        system("cls");//清屏
            printf("%d",min);
                        printf(":%d",sec1);       
            printf("%d\n",sec2);
            sleep(1000);
                        sec2=sec2-1;   //sec2每次循环减1
            i=i+1;  //循环一次i+1累计循环的次数
               
                        }
            sec1=sec1-1;//sec1每次循环减1
        }
       min=min-1;//min每次循环减1
        }       

    getch();
     return 0;
    }
板凳
 楼主| 发表于 2013-2-4 15:31:00 | 只看该作者
kekegcs 发表于 2013-2-4 14:25
#include
#include
int main()

首先感谢,您以上编写的是从59秒开始的,题目的要求是2:00这个整数关口开始,我试着在开头加入了一下代码:      system("cls");
            printf("2");
                        printf(":0");        
            printf("0");
            sleep(1000);
符合了要求,但问题是这部分代码是单独罗列的,如果想要在while语句中实现,有相应的办法么?
地板
发表于 2013-2-4 16:19:56 | 只看该作者
本帖最后由 kekegcs 于 2013-2-4 16:27 编辑

可以将sec2=10,
然后判断sec2的值
5#
发表于 2013-2-4 16:23:53 | 只看该作者
本帖最后由 kekegcs 于 2013-2-4 16:28 编辑

补充一下,在加一句
min--;这样就符合要求了.
6#
发表于 2013-2-4 17:30:45 | 只看该作者
就上面的问题我试个在while语句中可以实现,但是有点繁琐.我个人觉得把简单的问题复杂化了.
结合题目要求,
下面分享一个更简单实现方法.
#include<stdio.h>
#include<stdlib.h>
int main()
{               
    printf("2:00");
    sleep(1000);
        int min,sec,i;        
        min=1;
        while(min>=0)  
        {      
                          sec=59;
                        i=0;
                while(i<=59&&sec>=0)
                {
                         system("cls");//清屏                        
                printf("%d",min);
                                if(sec<=9)                //当sec是一位数时,在前面补充一个0,保持时间的格式.
                printf(":0%d",sec);
                else
                                printf(":%d",sec);
                sleep(1000);            
                        sec=sec-1;   
            i=i+1;                         
                }     
        min=min-1;
        }               
    getch();
        return 0;
}
7#
发表于 2013-2-4 19:59:03 | 只看该作者
在while语句内实现,感觉没有上面实现起来简单.本人初学,互相学习,仅供参考.....

#include<stdio.h>
#include<stdlib.h>
int main()
{               
   
        int min,sec,i;         
        min=1;
        sec=60;
        while(min>=0)  
        {        
                 if(sec==60||sec==0)
                 {
                 system("cls");
                 printf("%d",min+1);
                 printf(":00");
                 sleep(1000);
                 }
                sec=59;
                                i=0;
                while(i<=59&&sec>=0)
                                {
                system("cls");//清屏                        
                printf("%d",min);
                if(sec<=9) //当sec是一位数时,在前面补充一个0,保持时间的格式.
                printf(":0%d",sec);
               else
                printf(":%d",sec);
                sleep(1000);            
                sec=sec-1;   
                                i=i+1;                          
                                }
                     
        min=min-1;
        }               
    getch();
        return 0;
}
8#
 楼主| 发表于 2013-2-4 23:01:17 | 只看该作者
kekegcs 发表于 2013-2-4 19:59
在while语句内实现,感觉没有上面实现起来简单.本人初学,互相学习,仅供参考.....

#include

变量 i 好像没有实际效果,我去掉变量 i 也是能运行成功的。你编写的已经很好了,思路也很清晰,再次感谢!
9#
发表于 2013-2-5 16:42:44 | 只看该作者
kakagoal 发表于 2013-2-4 23:01
变量 i 好像没有实际效果,我去掉变量 i 也是能运行成功的。你编写的已经很好了,思路也很清晰,再次感谢 ...

你不说,还没注意,这个变量 i 确实多余,学习了.
老是喜欢设个变量计数,其实sec本身设置好范围就可以计数.
交流真好,不然还是保持这种不好的习惯.
10#
发表于 2013-2-10 08:03:50 | 只看该作者
#include <stdio.h>
int main()
{
        int a=2,b=0;
        while(a>=0)               //外循环实现“分”的自减
        {       
                while(b>=0)           //内循环实现“秒”的自减
                {
                        system("cls");
                        if (b<=9)
                                printf("%d:0%d",a,b);
            else
                                printf("%d:%d",a,b);
                        sleep(1000);
                        b=b-1;
        }
        a=a-1;                //“秒”自减完成后,“分”-1,秒作60 但由于每次格式化输出都要暂停1s 所以是59
        b=59;
        }
        return 0;
}
11#
发表于 2013-2-20 15:13:25 | 只看该作者
这个可以自己输入需要的时间,单位是分钟。
#include <stdio.h>
int main()
{
        int a;
scanf("%d",&a);
a=a*60;
    while(a>=0)
    {
                printf("%d:%02d\n",a/60,a%60);
        system("cls");
        a=a-1;
     }
        sleep(5000);
        return 0;
}
12#
发表于 2013-2-28 10:36:00 | 只看该作者
我也是被难住了在这里看到很多解答方法都觉得不是看不懂就是运行结果不符合要求,后来自己琢磨出一个能看懂也运行正确的,跟你分享下。
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a,b;
    printf("2:00");
    sleep(500);
    a=1;
    while(a>=0)
    {
        b=59;
        while(b>=0)
        {
            system("cls");
            if(b<=9) printf("%d:0%d",a,b);
            else    printf("%d:%d",a,b);
            sleep(500);
            b=b-1;
        }
        a=a-1;
    }
    sleep(5000);
    return 0;  
}
13#
发表于 2013-3-15 10:55:01 | 只看该作者
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int time,min,sec;
  5.         for(time=120;time>=0;time--)
  6.         {
  7.         system("cls");
  8.         min=time/60;
  9.         sec=time%60;
  10.         printf("%d:%.2d",min,sec);
  11.         sleep(1000);
  12.     }
  13.         sleep(5000);
  14.         return 0;
  15. }
复制代码
14#
发表于 2013-5-8 15:28:17 | 只看该作者
自己编的。秒跟分分别计数
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. int main()
  5. {
  6.         int a=2,b=0;//这可以做成输入的
  7.     system("color 0a");
  8.     while(a>=0)//当a>=0的时候循环
  9.     {
  10.         if(b>=0)//秒>=0,输出,b-1,延时
  11.         {
  12.                         system("cls");
  13.             printf("%d:%.2d",a,b);
  14.             b=b-1;
  15.             Sleep(1000);
  16.          }
  17.         else {a=a-1;b=59;}//秒<0,分钟减一,秒变成59
  18.     }
  19.         system("pause");
  20.         return 0;
  21. }
复制代码
15#
发表于 2016-9-7 20:22:27 | 只看该作者
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
        int a;
    a=120;//两分钟就是120秒;
    system("color 0a");//改个好看的颜色;
    while(a>=0)//秒倒数到0就停止咯;
    {
                system("cls");//每次循环前不管三七二十一清屏一下;
                printf("%.2d:%.2d",a/60,a%60);//%.2d代表显示两位数,a/60代表分钟,a%60代表秒钟;
                a=a-1;//每次循环秒数减一;
        Sleep(1000);//当然要延迟1秒钟才能循环;
    }
        system("pause");
        return 0;
}
[/mw_shl_code]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表