Time of Update: 2017-02-27
輸出1到4這四個數字所能組成的互不相同且無重複數位三位元企業發放的獎金根據利潤提成求一個加上100後是一個完全平方數,再加上168又是一個完全平方數的整數輸入某年某月某日並判斷這一天是這一年的第幾天輸入三個整數並把它們按由小到大的順序輸出用*號輸出字母C的圖案輸出九九乘法口訣表兔子問題判斷並輸出101-200之間的素數輸出100-1000之間所有的“水仙花數”將一個正整數分解質因數條件運算子的例子輸入兩個正整數m和n並求其最大公約數和最小公倍數輸入一行字元並統計出其中英文
Time of Update: 2017-02-27
C的優勢組譯工具同樣需要調用子程式(函數),拋開語言的差異,其邏輯結構應該是一樣的。同樣的彙編也需要“大量”使用堆棧,這一點彙編沒有任何優越性。包括所有的C51在內的大多數單片機的C語言都不是在堆棧上傳遞函數,而是由編譯器靜態分配。由於C語言更加接近自然語言,如果編譯器沒有BUG,同樣結構下C語言一定比彙編可靠。最後一句:C的局部變數是可以覆蓋的,彙編的所有變數都是全域的,C不僅僅效率高,而且因為局部變數的不可見度所以更可靠。
Time of Update: 2017-02-27
【程式41】題目:學習static定義靜態變數的用法1.程式分析:2.程式原始碼:#include "stdio.h"varfunc(){ int var=0; static int static_var=0; printf("\40:var equal %d \n",var); printf("\40:static var equal %d \n",static_var); printf("\n"); var++;
Time of Update: 2017-02-27
程式31】題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。1.程式分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。2.程式原始碼:#include <stdio.h>void main(){ char letter; printf("please input the first letter of someday\n"); while ((letter=getch())!='Y')/
Time of Update: 2017-02-27
【程式21】題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。1.程式分析:採取逆向思維的方法,從後往前推斷。2.程式原始碼:main(){int day,x1,x2;day9;x21;while(day>0) {x1(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/ x2x1; day--
Time of Update: 2017-02-27
【程式11】題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?1.程式分析:兔子的規律為數列1,1,2,3,5,8,13,21....2.程式原始碼:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0)
Time of Update: 2017-02-27
企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?1.程式分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長
Time of Update: 2017-02-27
進程vs線程,如何選擇?我們編寫程式,到底是採用多線程還是多進程?這裡是有區別的,採用不同的機制能夠獲得的效率也不一樣。如何選擇適合我們自己的程式的機制呢?下面是一些常見的選擇的看法,不過也只是提供給大家參考參考,具體設計的時候還是要自己處理。¨ 一個程式裡面的所有的線程都在同一個Runspace中執行。而一個程式的子進程則是運行在另外的執行空間中的,這裡是通過調用了exec函數來實現的。¨
Time of Update: 2017-02-27
今天來學習一個小小的執行個體,使用C語言實現在螢幕上用“*”顯示0-360度的餘弦函數cos(x)曲線。類比法:#include <stdio.h>#include <math.h>int main(void)...{ double i ; int j,k; for(i=1.0 ; i>=-0.4 ; i -=0.1) ...{ j = (int)(acos(i)*10) ;
Time of Update: 2017-02-27
虛擬一個案頭,然後在虛擬桌面啟動explorer進程,使用者可以用"ALT+Q"來切換現有案頭與這個虛擬桌面,使用者需要運行什麼軟體,自己在虛擬桌面開啟就是了。原理很簡單,實現同樣也很簡單,下面是代碼:#include<afxwin.h>HINSTANCE hInst; //當前執行個體TCHAR szAppName[] = TEXT ("VirtualDesk") ; //程式名稱HWND hwnd ; //主表單控制代碼HDESK
Time of Update: 2017-02-27
寫好C語言,漂亮的宏定義很重要,使用宏定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟體中常用得宏定義……1,防止一個標頭檔被重複包含#ifndef COMDEF_H#define COMDEF_H//標頭檔內容#endif2,重新定義一些類型,防止由於各種平台和編譯器的不同,而產生的類型位元組數差異,方便移植。typedef unsigned char boolean; /* Boolean value type. */typedef
Time of Update: 2017-02-27
由於以文本方式和二進位方式讀取斷行符號符,讀取的長度都為為2,而我需要的是字元個數,下面兩種方法經過調試,並且結果正確。第一種方法: 也可以讀取一個不定長的檔案。FILE *pFile = fopen( pFilePath, "r" ); if ( pFile == NULL ) { return 0; } fseek( pFile, 0, SEEK_END ); iFileLen = ftell( pFile
Time of Update: 2017-02-27
以下四個函數分別實現:大五碼轉GBK碼/GBK轉大五碼GB2312碼轉GBK碼/GBK碼轉GB2312碼//---------------------------------------------------------------------------// 大五碼轉GBK碼:void __fastcall BIG52GBK(char *szBuf){ if(!strcmp(szBuf, "")) return; int nStrLen =
Time of Update: 2017-02-27
最近做嵌入式開發,板子上面需要有解析XML的功能,理所當然地我就去網上找開源的來用。結果找來的要不是C++的,要不就是超級複雜的。像libxml,我統計了下解析一個40幾KB的XML檔案,居然動態申請記憶體100多次,對於沒有mmu功能的arm7,真是無福消受了。所以,我只能自己寫一個來用了。我寫的這個xml解析器,非常簡單,核心代碼只有600多行。當然,功能也相對弱些,只支援ansi編碼的xml檔案,只能解析,不能產生。整個解析器只用到了 若干條 EBNF文法 和 一個DFA狀態機器
Time of Update: 2017-02-27
一、c程式儲存空間布局C程式一直由下列部分組成:1)本文段——CPU執行的機器指令部分;一個程式只有一個副本;唯讀,防止程式由於意外事故而修改自身指令;2)初始化資料區段(資料區段)——在程式中所有賦了初值的全域變數,存放在這裡。3)非初始化資料區段(bss段)——在程式中沒有初始化的全域變數;核心將此段初始化為0。4)棧——增長方向:自頂向下增長;自動變數以及每次函數調用時所需要儲存的資訊(返回地址
Time of Update: 2017-02-27
筆者在開發縣級電網調度自動化系統的過程中,碰到一個要繪製電力系統一次接線圖的問題。由於電力系統一次接線圖比較複雜,圖上有一些特殊的符號,象變壓器符號、開關符號等等,用一般的編程方法來繪製比較困難,因此,筆者用C語言開發了一個手工繪製電力系統一次接線圖的鍵盤繪圖程式,使用該程式繪製的一次接線圖符合使用者需求,效果良好。2.使用方法程式中定義了幾個特殊鍵:"V”:畫筆提起"W”:開始畫圖"R”:開始擦圖"S”:當
Time of Update: 2017-02-27
在講“函數與程式結構”這一章中,有這樣一句話:“如果某個函數從一個地方返回時有傳回值,而從另一個地方返回時沒有傳回值,該函數並不非法,但可能是一種出問題的徵兆。”這句話覺得有些難以理解。於是寫了段測試代碼,如下:#include <stdio.h>int f(int i) {if (1)return;elsereturn 1;}main(void) {int i = -10;printf("%d\n", f(i));
Time of Update: 2017-02-27
1 引言電腦技術和資訊技術的高速發展的今天,電腦和電腦技術大量應用在人們的日常生活中,嵌入式電腦也得到了廣泛的應用。 嵌入式電腦是指完成一種或多種特定功能的電腦系統,是軟硬體的緊密結合體。具有軟體代碼小、高度自動化、響應速度快等特點。 特別適合於要求即時和多任務的應用體系。嵌入式即時系統是目前蓬勃發展的行業之一。 但是,即時嵌入式系統的特點使得其軟體受時間和空間的嚴格限制,加上運行環境複雜,使得嵌入式系統軟體的開發變得異常困難。
Time of Update: 2017-02-27
在實際的應用中一個應用程式需要對多個訊號進行處理,為了方便,linux系統引進了訊號集的概念。訊號集用多個訊號組成的資料類型sigset_t.可用以下的系統調用設定訊號集中所包含的資料。1、常見訊號及定義如圖:2、sigset_t在linux2.6.39/include/asm-generic/signal.h中定義typedef struct { unsignedlong sig[_NSIG_WORDS]; }
Time of Update: 2017-02-27
如果我們把電腦上的作業系統及各種各樣的軟體看成一系列的有機生命,而不是指令集,那麼這就是一個進程的世界,在進程的世界中同樣有“道德”和“法製法規”,窺探進程世界,看它的俠肝義膽,風雨江湖路~~~~~linux支援多個進程同時進行,也就是我們常說的現代作業系統中的多道程式設計,所謂同時是linux系統調度各個進程分別佔用cpu的時間。由於每個時間片的時間很小和宏觀時間相比,給人的感覺是多個進程在運行。註:總結下就是在微觀是串列,在宏觀上是並行。為了提