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;
}