A. 求一个C语言写的倒计时程序,要求显示从30秒到0秒
#include <stdio.h>
#include <time.h>
main()
{
clock_t start,end;
int n;
printf("How many seconds do you want to count? ");
scanf("%d",&n);
getchar();
clrscr();
start=end=clock();
while((n-(int)(end-start)/19)>=0)
{
printf("the time is: %d",n-(int)(end-start)/19);
sleep(1);
end=clock();
clrscr();
}
}
B. 怎么样用c语言写一个倒计时程序
工程名称:99秒倒计时 //功能描述:程序开始显示99秒等待开始倒计时,当再次按下开关后计时 //停止,当再按下开关后计时 //复位实际上是单片机复位,重新开始! //通过本程序新的认识: 1.BCD数码管的使用 2.十进制到BCD码转化
C. c语言里在scanf等待时怎么弄出倒计时的效果
看样子只能使用多线程,但因为是控制台程序,在处屏幕上可能输入和输出有些冲突,原理大概应该是要使用到多线程,在主线程里处理输入,创建一线单独的线程来运行定义器并进行倒记数,并且输出。如果scanf函数需要输入的数据包含多个字符,可能会在屏幕上和倒数输出的数字想混乱,如果非要这么实现,建议使用getch函数,一个按键一个按键的接受输入,并且自定义回显。这样效果可能会好些。
D. 如何在c语言程序中插入一个倒计时命令
#include <stdio.h>
int main()
{
printf("hello world");
for(int i=60;i>0;i--)
{
printf("%d",i);
Sleep(1000);
}
}
E. c语言 制作 倒计时
#include"stdio.h"
#include"Windows.h"
intmain(){
printf("请输入倒计时时间(例如:01:26:30):");
inthour=0,min=0,sec=0;
scanf("%d:%d:%d",&hour,&min,&sec);
if(hour>24||hour<0||min>60||min<0||sec>60||sec<0){
printf("输入有误! ");
return0;
}
printf("倒计时开始! ");
inti,j,k;
for(i=hour;i>=0;i--){
for(j=min;j>=0;j--){
for(k=sec;k>=0;k--){
printf(" %2d:%2d:%2d",i,j,k);
Sleep(1000);
}
sec=59;
}
min=59;
}
exit(0);
}
F. c语言中怎样在函数中调用倒计时
专门开一个线程负责在屏幕上显示倒计时不就可以了.
while(
i
)
{
printf(
"时间还有:%d秒",
i
);
i--;
}
G. 如何用c语言实现从现在到某天的倒计时
取得系统时间,用指定时间的年,月,日,时,分,秒,分别减去系统对应的位,所得时间换算成秒,然后就用秒表的原理,每过一秒,把剩余时间除以一年的秒数,余数再除以一个月的秒数,以此类推,然后把它输出到屏幕。
time_t tTime; //距1900年1月1日的秒数
char str[80];
struct tm* stTm; //时间结构,格式请见其它回答
time(&timer);
stTm = localtime(&tTime);
strftime(str,sizeof(str),"%Y%m%d",stTm);//格式化时间
printf(str);//输出
另外,格式化时间的格式说明如下,希望对你有帮助:
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
H. 求一个C语言程序 实现LED显示器倒计时功能
//晶振:11.0592M T1-250微秒按键P30 P31 P32 P33/*变量的定义: show_val: 显示的值0-59 init_val: 初始值 state_val: 状态值 0-计数状态;1-设置状态;2-闪烁状态 shan_val: key_val1: 四个按键的值 0-无键;1-设置键 2-增一键 3-减一键 4-确定键 T1_cnt: 定时器计数溢出数 cnt_val: 倒计时的数值 led_seg_code:数码管7段码*/#include "reg51.h" //包含文件sbit P3_0=P3^0; //设置键sbit P3_1=P3^1; //增一键sbit P3_2=P3^2; //减一键sbit P3_3=P3^3; //确定键unsigned char shan_val; //闪烁时LED的开/关状态unsigned char cnt_val; //保存倒计数的当前值unsigned int T1_cnt; //保存定时器溢出次数unsigned char key_val_new,key_val_old;//存放当前扫描的键和前一次按下的键值unsigned char state_val; //状态值unsigned char show_val; //存放需要在数码管显示的数字unsigned char init_val; //暂存倒计数的初始值char codeled_seg_code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//----------延时--------------void delay(unsigned int i) //大约延时i*2个微秒{ while(--i);}//-----------按键扫描-------------unsigned char scan_key(){ unsigned char i; i=P3&0x0f; delay(100); //延时,去抖动 if(i==(P3&0x0f)) { if (P3_0==0) { while(P3_0==0); i=1; } else { if (P3_1==0) {while(P3_1==0); i=2;} else { if (P3_2==0) {while(P3_2==0); i=3;} else { if (P3_3==0) {while(P3_3==0); i=4;} } } } } else { i=0; } return i; EA=1;}//---------数码管显示--------------void led_show(unsigned char v){ unsigned char i; if(1) //动态扫描 {i=v/100; //取要显示的数的个位 P0=led_seg_code[i]; //转换为7段码 P2=0xfb; //显示个位 delay(15); //延时 i=(v%100)/10; //取十位 P0=led_seg_code[i]; //转换为7段码 P2=0xfd; //显示十位 delay(5); //延时 i=(v%100)%10; P0=led_seg_code[i]; P2=0xfe; delay(5); } else {P0=led_seg_code[0]; //处于闪烁状态 if(shan_val) {P2=0xff; } //将数码管的关闭 else {P2=0xfc; } //将数码管的打开 }}//----------定时器T1中断服务程序---------------void timer1() interrupt 3 //T1中断,250us中断一次{ T1_cnt++; switch (state_val) {case 0: if(T1_cnt>3999) //如果计数>3999, 计时1s { T1_cnt=0; if(cnt_val!=0) { cnt_val--;} else {state_val=2;} //定时计数到0时,切换状态 show_val=cnt_val; } break; case 2: if(T1_cnt>1999) //如果计数>1999, 计时0.5s { T1_cnt=0; shan_val=!shan_val; } //闪烁状态 break; }}//---------主程序----------------main(){init_val=200; //初始化各变量 cnt_val=init_val; show_val=cnt_val; state_val=0; key_val_old=0; T1_cnt=0; shan_val=0; //初始化51的寄存器TMOD=0x20; //用T1计时 8位自动装载定时模式 TH1=0x19; //250微秒溢出一次; 250=(256-x)*12/11.0592 -> x= 230.4 TL1=0x19; EA=1; //打开总中断允许 ET1=1; //开中断允许 TR1=1; //开定时器T1while(1){ key_val_new=scan_key(); //255表示无键按下 if(key_val_new!=0){ // 只有当前扫描的键值与上次扫描的不同,才判断是有键按下 //key_val_old=key_val_new; switch (key_val_new) { case 1: //设置键 state_val=1; //处于设置状态 TR1=0; //停止计时 show_val=init_val; //显示原来的倒计数初始值 break; case 2: if(state_val==1) //只有在设置状态,增1键才有用 { if (init_val>0) //更改原来的倒计数初始值 {init_val--; } else {init_val=200;} show_val=init_val;//显示更改后的倒计数初始值 } break; case 3: if(state_val==1) //只有在设置状态,减1键才有用 { if (init_val<200) //更改原来的倒计数初始值 {init_val++; } else {init_val=0;} show_val=init_val; //显示更改后的计数初始值 } break; case 4: if(state_val!=0) //如果已处于计数模式,确认键不起作用 { cnt_val=init_val; //将初始值赋给计数变量 show_val=cnt_val; //将计数变量的数字显示 TR1=1; //启动定时器T1 state_val=0; //将状态切换为计数模式 } break; } } led_show(show_val); //动态扫描}}
I. 这么用C语言做倒计时器
tdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
struct tm //定义时间结构体,包括时分秒和10毫秒
{
int hours,minutes,seconds;
int hscd;
}time,tmp,total; //time用以计时显示,tmp用以存储上一阶段时间,total记总时间
int cnt;
FILE* fout;
//每次调用update函数,相当于时间过了10ms
void update(struct tm *t)
{
(*t).hscd++; //10ms单位时间加1
cnt++;
if ((*t).hscd==100) //计时满1s,进位
{
(*t).hscd=0;
(*t).seconds++;
}
if ((*t).seconds==60) //计时满一分,进位
{
(*t).seconds=0;
(*t).minutes++;
}
if ((*t).minutes==60) //计时满一小时,进位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24) (*t).hours=0;
//delay();
Sleep(10); //Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms
}
void display(struct tm *t)
{
//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d\r",(*t).hscd);
//printf("Now, press ‘e’ key to stop the clock…");
}
void time_init() //初始化时间
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
void get_total() //计算总时间
{
total.hscd = cnt % 100;
cnt /= 100;
total.seconds = cnt % 60;
cnt /= 60;
total.minutes = cnt % 60;
cnt /= 60;
total.hours = cnt;
}
int main()
{
char m;
time_init();
cnt = 0;
fout = fopen("timeout.txt","w");
printf("按回车键开始计时!\n");
while(1)
{
m = getch();
if(m != ‘\r’) //读入一个输入,如果是回车,那么跳出次循环
printf("输入错误,仅能输入回车键!\n");
else
break;
}
printf("已经开始计时,但是你可以按回车键以分段计时!\n");
while(1)
{
if(kbhit()) //此处检查是否有键盘输入
{
m=getch();
if(m == ‘\r’) //如果等于回车,那么计时结束,跳出循环
break;
else if(m == ‘ ‘) //如果等于空格,显示此次计时,初始化计时器
{
tmp = time; //记录上一段计时器结果
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //写入文件
time_init();
printf("\n");
}
else
{
printf("输入错误,仅支持输入回车键或者空格键!\n");
}
}
update(&time); //更新计时器
display(&time); //显示计时器时间
}
tmp = time; //输出最后一次即使结果,写入文件
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total(); //计算总的时间,显示,并写入文件
printf("\n总时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"统计时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf("已经保存到当前目录下的timeout.txt文件中按任意键结束!");
getch();
}
另外,站长团上有产品团购,便宜有保证
J. 请问C语言能不能做一个倒计时的功能
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
void my_menu(void)
{
system("cls");
printf("界面\n");
}
void my_operate(void)
{
printf("%c\n", getch());//注意:可以将输入值用数组等保存,这里没有保存
}
void my_time(void)
{
int i;
for (i=60; i>0; i--)
{
Sleep(999);
system("cls");
printf("倒计时:%d\n", i);
printf("\n请输入一个字符:");
if (kbhit())
{
my_operate();
}
}
my_menu();
}
int main(void)
{
my_time();
return 0;
}