1樓:網友
用定時器配合訊號來做吧,有相應的系統呼叫,如linux下的signal(),timer()等等,查查相關的文件,c語言本身應該沒有的吧腔掘,用語句來模擬延時也是可以塌山的,如。
int i=0;
while(i<10000)
i++;if(i==10000)
i=0;while(i<10000)
i++;goto la;
la return 0;
這樣其實也團圓中可以理解為雙延時了,利用goto轉到定時後執行的地方 ,這種延時不準確,時間不好控制。
2樓:網友
這個……我還是先用乙個比較偏題的答案來說吧。
當你碰到這類疑問的時候,有沒有想過這個問題本身就已經不是c語言的問題呢?如果你開始瞭解作業系統的話,你會發此亂衫現這些問題完全不值一提了。系統api裡面有無數種簡單快捷的解決方森腔法,你需要做的只是去查系統開發文件,比如windows sdk
下面的答案是更接近題目的內容:
作業系統提供了陪缺計數器的功能,瞭解下這個,你會發現完全沒疑問了。
3樓:匿名使用者
我也認為這不是什麼c語言的問題,c語言沒有這些機制。這完全是你具體的平臺定義的。
c語言的延遲函式 編寫
4樓:網友
c語言的延遲函式一般是利用無意義程式執行來控制時間從而達到延時的目的舉個例子:
for(i=0;ifor(j=0;j<120;j++)
這是延時x毫秒的for迴圈語句。
值得注意的是記得最後的;一定得記得寫。
5樓:網友
電腦執行語句需要時間。
執行每條語句時間比較短,用迴圈操作可累積時間。
6樓:其谷槐
延遲函式里執行的都是空語句,也就是說迴圈執行空語句來達到延遲的目的。
每執行一條語句,即使是空語句都要耗費電腦一些處理時間的,就是因為這個,在延遲函式里寫一些無關緊要的東西,用來浪費電腦處理時間,從而延遲。
7樓:百噸啤酒
利用電腦運算需要花費時間來達到延遲的目的。
for(j=0;jfor表示125n+n次自加運算。
c語言中乙個標準的延時1us的函式怎麼寫?
8樓:匿名使用者
如果是微控制器上,是有可能的。
微控制器12m晶振執行一條指令1us,所以c語言1us延時程式 用12m晶振延時1us,用—_nop_()
#include//標頭檔案。
nop_()//這乙個語句表示1us延時。
9樓:狂芳洲胥輝
學過彙編你就會知道,每條指令都佔一定的時間(或者機器週期)的,如果你讓機器什麼都不做,即空指令的話,機器就會延時,然後你在計算好每次延時到底有多長,外面套乙個迴圈(或者多重迴圈),根據你想要的延時時間即可計算出來迴圈的次數,延時函式基本上都是這種原理,它的引數就是用來控制迴圈次數的。
c語言如何跳出「延時迴圈」
10樓:網友
你增加乙個keyscan1();或修改下。
在執行延時程式時增加掃瞄鍵盤的步驟,判斷要不要終止延時;試試。
void delayms(uint x)
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--)
keyscan1();
11樓:網友
你可以新增乙個全域性變數,當取消按鈕沒按下的時候它的值為0,按下了則為1;然後在你的delayms函式的迴圈體中對這個全域性變數進行檢查,如果為1則表明取消按鈕已經按下,此時直接返回就能結束delayms的執行了。
大佬們求請教這道c語言的題目怎麼寫?
12樓:網友
eof是檔案尾的意義(它實際上等於-1),在windows中,eof在輸入時表示ctrl+z這個鍵,scanf(..=eof就是說緩衝區已無內容時就結束(也就是結束輸入時按ctrl+z然後按回車),只需要把你**中的while(1)換成上面提示中這個while就行了。
大佬們,求請教這道c語言的題目怎麼寫?
13樓:網友
你這樣寫當然不對,示例是一次輸入幾組數,之後才批量輸出,按題意的話,可以是。
#include
#define max 100
int main(void) ,n,i,c=0;
scanf("%d",&n);
while(n!=0)
for(i=0;iprintf(flag[i]==1?"yes.":"no.");}
14樓:網友
你那個判斷不對,x%10000 是取第一位,x%1000 是取前兩位,不是第二位,所以會錯。
請教關於微控制器c語言中用while延時的問題
15樓:網友
延時一次為一次機器週期,但是如果要準確的話,建議用keil去debug,將你需要的週期設定,1ms,1us等,以後只需要呼叫。
16樓:網友
首先延時函式一般採用for迴圈巢狀實現,而它們的轉化關係。你必須51指令中的時鐘週期、狀態週期、機器週期概念。c中的迴圈減其實就是彙編中的djnz指令,你先了解此指令在51中的執行週期。
在進行換算即可。
17樓:煙火夜空
晶振頻率fosc=12mhz,則機械週期 t=12/fosc=1us;程式中 的 自加(++自減(--的執行週期為1個機械週期,即1us;
若為 理想狀態,則delay(500000)的時間應該是:500000×1us=500ms;
但是,編譯軟體 要把 函式呼叫、for 語句轉換成 機器指令,這是需要一定週期的,週期長短 視不同的編譯軟體 而有所不同,目前也沒人對這個 轉換差別 做過 專業的考量,故lz 的問題,沒有確切 的答案,只能 是告訴 你,大於某個時間;如例子 的答案是 大於 500ms,但大到什麼程度,不知道,不過可以從 軟體中 單步除錯 中 得到。
c語言大小寫程式請教
18樓:網友
設計要求:轉換字母,如果輸入小寫則輸出大寫,如果輸入大寫則輸出小寫。
方法一:不使用庫函式,程式如下:
#include
#include
#include
main()
方法二:使用庫函式,程式如下:
#include
#include
#include
#include
main()
你所列出的程式中有以下錯誤:
1.沒有對輸入的字元進行判斷,程式無法確保輸入的是字母。
2.這個程式只能實現大寫到小寫的轉換,如果輸入乙個小寫字母,將不會得到預期的輸出。
原程式不存在語法錯誤,執行後輸入大寫字母后可以輸出對應的小寫形式,請說明你的錯誤資訊和輸入格式。
19樓:網友
你說的轉換是單向的還是雙向的哦?
#include
void main()
變相的if,o(∩_o...哈哈!
20樓:網友
你的程式只能把大寫變成小寫,小寫變大寫要減32
21樓:斂念壘
我也執行了一下和 lemonlinger - 秀才 二級 一樣沒有出錯。你是不是輸入a得到ü 這是因為『a』的ascii值比『a』的值大。
注:我用的是turboc2。你用的是turboc2嗎?
22樓:網友
你的錯誤提示是什麼啊?我也執行了一下,發現沒有錯誤啊!
菜鳥提問 請教這個C語言程式怎麼寫
1.除以10000看商如果大於1就是五位數。不是就繼續除以1000,100,10 2.假設這個數是x,五位.x 10000得到第五位x5 x x5 10000 1000得到第四位x4 3.得到了x3,x2,x1就用 printf d d d x1,x2,x3 逆序輸出若要得到123這個整數,可以用x...
請教C語言陣列的問題,請教一個C語言陣列的問題
這裡沒有重定義,第一個for裡是先給i賦初值2然後進行迴圈,到第二個for的時候i的值又被重新賦了初值為1,這裡的i已經與之前的i值沒有關係了.所以不是重定義 你應該先去看下重定義的概念是什麼,要不你還是會弄不明白的 重定義 是指之前已經定義了一個變數,然後在這個變數的作用域內,又定義了一次同名變數...
請教c語言中的問題,請教一個c語言中的問題?
不對int n n 意思是定義了一個指標變數n指向int型 n 等價於 n 就是先取n指向變數的值 然後讓n 1 n也就是讓n指向下一地址 而且這樣用必須先給n賦一個安全的地址才行 對啊,你用 幹什麼,有不是指標.就是 號自增 資深癩 int n n 或者int n n 以上都行 兩個的區別是 n ...