❶ 為什麼devc++編譯後總是輸出同樣的結果
同學你好,這是DEVC++系統的問題,當你修改非源文件內容(即非main函數所在文件)中的代碼時,他不會自動進行重新編譯,你可以嘗試F12(全部重新編譯)試一下【或者找到運行->全部重新編譯】。
❷ 怎樣讓c語言程序結果不結束
在您想要暫停的地方加上 system("pause"); 就可以使 C/C++ 程序暫停。不過,這個辦法奏效的前提是系統中必須存在 pause 這個命令。此外,還需要包含標准頭文件 stdlib.h(對於 C)或者 cstdlib(對於 C++)。
這個是一個方法 還有 方法2
這種方法稍微有點復雜,但它通用於任何系統,只要這個系統擁有符合標準的 C/C++ 編譯器。在您想要暫停的地方加上 getchar();(對於 C 和 C++)或者 cin.get();(僅適用於 C++)就可以使程序暫停,然後按回車程序就會繼續執行。不過,您會發現,這種辦法卻不一定奏效。如果您夠細心,會發現只有當 getchar();/cin.get(); 前面有接收輸入的語句的時候,該辦法才會失效。如果之前沒有接收任何輸入,該辦法是 100% 奏效的!這是因為,如果前面接收了輸入,輸入流中可能會有殘留數據,getchar();/cin.get(); 就會直接讀取輸入流中的殘留數據,而不會等待我們按回車。解決該問題的辦法是,先清空輸入流,再用 getchar();/cin.get();。清空輸入流的辦法如下:
1). /* 適用於 C 和 C++。需要包含 stdio.h(對於 C)或者 cstdio(對於 C++)*/
while ( (c = getchar()) != '\n' && c != EOF ) ; /* 對於 C 和 C++ */
2). cin.clear(); // 僅適用於 C++,而且還需要包含標准頭文件 limits
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
例如
#include <iostream>
#include <limits>
#include <cstdio>
using namespace std;
int main()
{
int i_test, c;
printf("Please enter an integer: ");
scanf("%d", &i_test);
printf("You just entered %d.\nPress enter to continue...", i_test);
while ( (c = getchar()) != '\n' && c != EOF ) ; // 清空輸入流
clearerr(stdin); // 清除流的錯誤標記
getchar(); // 等待用戶輸入回車
cout << "Please enter an integer: ";
cin >> i_test;
cout << "You just entered " << i_test << ".\nPress enter to continue...";
cin.clear(); // 清除流的錯誤標記
cin.ignore( numeric_limits<streamsize>::max(), '\n' ); // 清空輸入流
cin.get(); // 等待用戶輸入回車
return 0;
}
最後還有一個方法 :
先運行 Windows 下的 MS-DOS(對於 Windows 98 等較老的 Windows 系統)或者「命令提示符」(對於 Windows XP 等較新的 Windows 系統),然後進入您想運行的 C/C++ 程序所在的目錄。假設該程序位於 D 盤的 cprog 目錄下,依次輸入以下內容就可以進入該目錄:
D:
cd cprog
接著輸入該程序的名字,按回車,該程序就會運行起來。假設該程序的名字為 test.exe,我們可以這樣輸入:
test
其實,不用進入 cprog 也可以運行 test,輸入如下:
D:\cprog\test