1. c語言編程用什麼筆記本電腦,內存硬碟大的cpu處理快點的筆記本
看你用什麼軟體,如果是用 TC 或 Free C 或 VC6 等,十年前的主流配置就行。如果 VS2013、2015,近 3 年現在的主流配置即可。
2. 我發現我的CPU一運行C語言程序,它的使用率就為100%,我發現我的內存小了,這個會影響CUP的使用率嗎
TC等都是16位的編程工具,編譯出來的程序都是16位的,而在windows下運行16位的程序都是這樣的(使用率100%)
但如像不會影響windows的運行速度
3. 用c語言編輯很大很大很大型的程序是不是很考驗CPU的性能如果CPU性能跟不上的話是不是就會很卡很
你確定是「編輯」???不是「編譯」???
編輯是肯定沒問題。
編譯要看你用什麼編譯環境,如果是集成開發環境(IDE),那麼很吃CPU和內存,程序小可能也會卡更別說很大的程序了。
4. C語言如何利用CPU指令
C可以直接調用匯編語言:例如
int array[10];
__asm mov array[6], bx ; Store BX at array+6 (not scaled)
array[6] = 0; /* Store 0 at array+24 (scaled) */
5. 如何獲取電腦CPU,內存,硬碟的信息。用C語言編寫的。
用win32 api,QueryValue查詢注冊表,可以獲取cpu信息,也可以用NtQuerySystemInformation,比較齊全。
別的東西可以查詢相關api吧
6. c語言 用最少的資源(內存 cpu)將一個元素插入一維數組指定的位置中去
LS程序思路大體正確,但是實現有誤。
C的標准庫函數memcpy需要被復制的存儲器源和目標不能有重疊,否則後果不確定。
對於LZ這種基本上總是有元素佔用空間重疊的情況,應該用memmove代替mem。
具體實例(假設數組類型是int)可以參考LS,關鍵行
memcpy(array+pos+1,array+pos,sizeof(int)*(maxcnt-pos);
改為
memmove(array+pos+1,array+pos,sizeof(int)*(maxcnt-pos));即可(LS還漏了個括弧= =)。
這行代碼把&array[pos]處開始到數組結尾的所有元素向後移動一個位置,以便在&array[pos]起始的地址空間空出sizeof(int)的空間,供要插入的元素佔用。
然後
array[pos]=value;即可在移動空出來的位置插入新元素value。
如果不需要運行期安全性,可以定義#define NDEBUG,這樣按LS的實例生成的代碼中assert宏會被留空,不會進行檢查而提高效率。
這是一般情況下最高效的解決方案。內嵌匯編優化可能可以有更高效率的實現,但這是平台相關的,且不是純粹的C語言表達。
====
[原創回答團]
7. 在C語言藍橋杯中的:資源約定: 峰值內存消耗 < 64M CPU消耗 < 1000ms是什麼意思
這個是由伺服器的評測系統來運行你提交的源代碼來進行判定的,你要做的就是保證演算法的空間和時間效率足夠高,也就是在問題規模較大時,避免N次方或者指數增長。
8. C語言怎麼取CPU的各項信息
intel IA32架構下CPU提供了獲取CPU信息的指令CPUID,用該指令能獲取CPU信息,使用方法和說明如下。要注意的是,一下如有小於號的,都不是英文的小於號,要用都得該為英文的小於號。 1、什麼是cpuid指令 CPUID指令是intel IA32架構下獲得CPU信息的匯編指令,可以得到CPU類型,型號,製造商信息,商標信息,序列號,緩存等一系列CPU相關的東西。 2、cpuid指令的使用 cpuid使用eax作為輸入參數,eax,ebx,ecx,edx作為輸出參數,舉個例子: __asm { mov eax, 1 cpuid ... } 以上代碼以1為輸入參數,執行cpuid後,所有寄存器的值都被返回值填充。針對不同的輸入參數eax的值,輸出參數的意義都不相同。 為了更好的在C++中使用cpuid指令,可以使用類對指令進行封裝,在類中定義一個專門的函數負責cpuid的執行,他需要一個輸入參數。還需要定義四個成員變數存儲cpuid執行以後返回來的值。由於這四個寄存器都是32位長的,可以使用unsinged long 類型變數存儲。 typedef unsigned long DWORD class CPUID { public: ... private: void Executecpuid(DWORD eax); // 用來實現cpuid DWORD m_eax; // 存儲返回的eax DWORD m_ebx; // 存儲返回的ebx DWORD m_ecx; // 存儲返回的ecx DWORD m_edx; // 存儲返回的edx ... } void CPUID::Executecpuid(DWORD veax) { // 因為嵌入式的匯編代碼不能識別 類成員變數 // 所以定義四個臨時變數作為過渡 DWORD deax; DWORD debx; DWORD decx; DWORD dedx; __asm { mov eax, veax ;將輸入參數移入eax cpuid ;執行cpuid mov deax, eax ;以下四行代碼把寄存器中的變數存入臨時變數 mov debx, ebx mov decx, ecx mov dedx, edx } m_eax = deax; // 把臨時變數中的內容放入類成員變數 m_ebx = debx; m_ecx = decx; m_edx = dedx; } 這樣就可以通過直接調用Executecupid()函數的方式來執行cpuid指令了,返回值存在類成員變數m_eax, m_ebx, m_ecx和m_edx中。 3、獲得CPU的製造商信息(Vender ID String) 把eax = 0作為輸入參數,可以得到CPU的製造商信息。 cpuid指令執行以後,會返回一個12字元的製造商信息,前四個字元的ASC碼按低位到高位放在ebx,中間四個放在edx,最後四個字元放在ecx。比如說,對於intel的cpu,會返回一個「GenuineIntel」的字元串,返回值的存儲格式為: 31 23 15 07 00 EBX| u (75)| n (6E)| e (65)| G (47) EDX| I (49)| e (65)| n (6E)| i (69) ECX| l (6C)| e (65)| t (74)| n (6E) 因此可以這樣實現他: string CPUID::GetVID() { char cVID[13]; // 字元串,用來存儲製造商信息 memset(cVID, 0, 13); // 把數組清0 Executecpuid(0); // 執行cpuid指令,使用輸入參數 eax = 0 memcpy(cVID, &m_ebx, 4); // 復制前四個字元到數組 memcpy(cVID+4, &m_edx, 4); // 復制中間四個字元到數組 memcpy(cVID+8, &m_ecx, 4); // 復制最後四個字元到數組 return string(cVID); // 以string的形式返回 } 4、獲得CPU商標信息(Brand String) 在我的電腦上點擊右鍵,選擇屬性,可以在窗口的下面看到一條CPU的信息,這就是CPU的商標字元串。CPU的商標字元串也是通過cpuid得到的。由於商標的字元串很長(48個字元),所以不能在一次cpuid指令執行時全部得到,所以intel把它分成了3個操作,eax的輸入參數分別是0x80000002,0x80000003,0x80000004,每次返回的16個字元,按照從低位到高位的順序依次放在eax, ebx, ecx, edx。因此,可以用循環的方式,每次執行完以後保存結果,然後執行下一次cpuid。 string CPUID::GetBrand() { const DWORD BRANDID = 0x80000002; // 從0x80000002開始,到0x80000004結束 char cBrand[49]; // 用來存儲商標字元串,48個字元 memset(cBrand, 0, 49); // 初始化為0 for (DWORD i = 0; i<3; i++) // 依次執行3個指令 { Executecpuid(BRANDID + i); memcpy(cBrand + i*16, &m_eax, 16); // 每次執行結束後,保存四個寄存器里的asc碼到數組 } // 由於在內存中,m_eax, m_ebx, m_ecx, m_edx是連續排列 // 所以可以直接以內存的方式進行保存 return string(cBrand); // 以string的形式返回 } 5、檢測CPU特(CPU feature) 現在的intel CPU,台式機的好點的都支持Hyper-Threading了,移動的要支持Speed Sted。這些都是CPU的特性。CPU的特性可以通過cpuid獲得,參數是eax = 1,返回值放在edx和ecx,通過驗證edx或者ecx的某一個bit,可以獲得CPU的一個特性是否被支持。比如說,edx的bit 32代表是否支持MMX,edx的bit 28代表是否支持Hyper-Threading,ecx的bit 7代表是否支持speed sted。下面就是獲得CPU特性的例子: bool CPUID::IsHyperThreading() // 判斷是否支持hyper-threading { Executecpuid(1); // 執行cpuid指令,使用輸入參數 eax = 1 return m_edx & (1<<28); // 返回edx的bit 28 } bool CPUID::IsEST() // 判斷是否支持speed step { Executecpuid(1); // 執行cpuid指令,使用輸入參數 eax = 1 return m_ecx & (1<<7); // 返回ecx的bit 7 } bool CPUID::IsMMX() // 判斷是否支持MMX { Executecpuid(1); // 執行cpuid指令,使用輸入參數 eax = 1 return m_edx & (1<<23); // 返回edx的bit 23 } CPU的特性還有很多,這只是平時我們聽到比較多的三個,更多的特性請參考intel的資料。
9. 匯編語言編輯cpu的,c語言等好像是編輯內存的,定義一個數組就開辟內
這兩門語言的功能基本是一樣的 不過匯編要比C語言不那麼好理解
c語言也要操作CPU 匯編也要操作內存的
10. 請教下:C語言獲取計算機系統CPU使用率,內存使用情況的思路或流程是怎樣的!
查WINDOW提供的介面是什麼,然後用C去調用獲取當前數值,就好了,然後設置一個輪詢,每間隔一段時間輪詢一次就好了。