C 怎麼讓輸出的資料在輸入全部完成後在一次性輸出啊

2022-08-22 23:40:10 字數 4945 閱讀 5093

1樓:若依學長

一、 c++ 輸入輸出的含義

在c語言中我們的輸入和輸出都是以printf和scanf進行操作的。他們都是函式。在c++中的我們的輸入輸出都是以終端為物件的,即從鍵盤輸入資料,執行結果輸出到顯示器螢幕上。

從作業系統(linux)的角度看,每乙個與主機相連的輸入輸出裝置都被看作乙個檔案。程式的輸入指的是從輸入檔案將資料傳送給程式,程式的輸出指的是從程式將資料傳送給輸出檔案。c++的輸入與輸出包括以下3方面的內容:

1、對系統指定的標準裝置的輸入和輸出。簡稱標準i/o。(裝置)

2、以外存磁碟(或光碟)檔案為物件進行輸入和輸出。簡稱檔案i/0。(檔案)

3、對記憶體中指定的空間進行輸入和輸出。簡稱串i/o。(記憶體)

c++採取不同的方法來實現以上3種輸人輸出。 為了實現資料的有效流動,c++系統提供了龐大的i/o類庫,呼叫不同的類去實現不同的功能。

二、 c++的i/o對c的發展—型別安全和可擴充套件性

c語言中i/o存在問題:

1、在c語言中,用printf和scanf進行輸入輸出,往往不能保證所輸入輸出的資料是可靠的、安全的。學過c語言的讀者可以分析下面的用法:想用格式符%d輸出乙個整數,但不小心錯用了它輸出單精度變數和字串,會出現什麼情況?

假定所用的系統int型佔兩個位元組。

printf("%d",i); //i為整型變數,正確,輸出i的值

printf("%d",f); //f為單精度變數,輸出變數中前兩個位元組的內容

printf("%d","c++");//輸出字串"c++」的起始位址

編譯系統認為以上語句都是合法的,而不對資料型別的合法性進行檢查,顯然所得到的結果不是人們所期望的。

2、在用scanf輸入時,有時出現的問題是很隱蔽的。如

scanf("%d",&i); //正確,輸入乙個整數,賦給整型變數i

scanf("%d",i); //漏寫&

假如已有宣告語句"int i=1",定義i為整型變數,其初值為1。編譯系統不認為上面的scanf語句出錯,而是將輸入的值存放到位址為000001的記憶體單元中,這個錯誤可能產生嚴重的後果。

注意:c++為了與c相容,保留了用printf和scanf進行輸出和輸入的方法,以便使過去所編寫的大量的c程式仍然可以在c++的環境下執行,但是希望讀者在編寫新的c++程式時不要用c的輸入輸出機制,而要用c++自己特有的輸入輸出方法。在c++的輸入輸出中,編譯系統對資料型別進行嚴格的檢查,凡是型別不正確的資料都不可能通過編譯。

因此c++的i/0操作是型別安全(typesafe)的。

3、用printf和scanf可以輸出和輸入標準型別(如:int,float,double,char)的資料,但無法輸出使用者自己宣告的型別(如陣列、結構體、類)的資料。在c++中,會經常遇到對類物件的輸入輸出,顯然無法使用printf和scanf來處理。

c++的i/o操作是可擴充套件的,不僅可以用來輸入輸出標準型別的資料,也可以用於使用者自定義型別的資料。c++對標準型別的資料和對使用者宣告型別資料的輸入輸出,採用同樣的方法處理。顯然,在使用者宣告了乙個新類後,是無法用printf和scanf函式直接輸出和輸入這個類的物件的。

2樓:匿名使用者

如果是同乙個變數輸入不同的值,分別計算,那就要在程式開始部分,依次輸入並儲存到陣列中(如果還沒學陣列,就只能儲存到不同的變數裡),然後計算並輸出。

c++,先輸入5個數,一行乙個,再一次性輸出

3樓:it孤鶩

#include

using namespace std;

int main()

{double n;

while(cin>>n)

{if(n<=1e-6 && n>=-1e-6)cout<<"n is equal to than 0"<1e-6)cout<<"n is greater 0"<

用c或c++編寫乙個具有計算器功能的程式,要求一次性輸入一行要求算式,輸入「=」輸出結果,有什麼好的思路

4樓:自我程式設計

可以用2叉樹寫。

定義表示式結構體型別,比如:

typedef struct yunsuan

ys;根據優先順序解析多運算子的式子,比如2^2+(√4-1)。

從運算順序最低的運算符號開始先找到'+',建立樹頂點結構體,fh='+';father=null;brother=null;left=(2^2)的結構體;right=(√4-1)的結構體;

(2^2)的結構體:fh='^';num1=2;num2=2;father=最頂端的結構體;brother=(√4-1)的結構體;left=新建節點fh置0;right=新建節點fh置0;

(√4-1)的結構體:fh='-';num2=1;father=最頂端的結構體;brother=(2^2)的結構體;left=√4的結構體;right=新建節點fh置0;

√4的結構體:fh='√';num1=4;father=(√4-1)的結構體;brother=null;left=新建節點fh置0;right=null;

依次類推,以上只是說明樹形結構建立。

你解析字串,從運算順序最後的字元開始拆分並建立樹的最頂層節點,然後依次往下建立樹。

最後可以用遞迴函式或迴圈,遍歷樹各節點進行運算。

5樓:匿名使用者

#include

void main()

6樓:蕭兮

捕獲每次輸入的字元,是等號就進行運算,不是就繼續捕獲,然後呼叫一些字串操作的函式對捕獲到的字串進行分析處理,分離出兩個運算元和操作符,最後進行算術運算,得出結果顯示在最後,換行,進行下一輪的捕獲

7樓:

這是作為編譯原理的語法解析練習題,在部落格園搜一下vczh的手寫分析器文章有示例**

8樓:匿名使用者

//這個例子只能進行整數的四則混合運算(不能包含括號)#include

int jisuan(int num1,char op1,int num2) }

int process(int num1,char op1,int num2)

else if('*'==op2 || '/'==op2)else}}

else

return r;

}int main()

c++怎麼一次輸入多個數字啊

9樓:苦中作樂香蕉

#include

using namespace std;

double arr[10001];

int total=0;

int main()

10樓:匿名使用者

getline讀入一行到字元陣列

遍歷字元陣列,

(1)遇到逗號,說明乙個數結束了

(2)遇到小數點,說明數的處理要改變了

(3)遇到數字,要區分是小數點前還是後的部分(4)其他空格字元之類,跳過

具體步驟見**

#include

#include

using namespace std;

int main()else if(buf[i] == '.')else if(isdigit(buf[i]))else}}

cnt++;

for(int i = 0; i < cnt; i++)cout << a[i] << endl;

return 0;}

11樓:匿名使用者

用cin.getline一次讀入一行到字元陣列或者getline到string,自己用迴圈乙個個地切分

12樓:愛好_問問

用char型把,存進來就行了,不過輸入的時候一定要嚴格按照這種格式寫(數字 乙個字元 數字……,中間可以有任意個空格,也可以沒有空格)

例:float a[3];

char b[3];

cin>>a[0]>>b[0]>>a[1]>>b[1]>>a[2];

也可以用double型。

我試驗過了,絕對可以,只需要敲一次回車。

13樓:dn_海倫泰勒

#include

using namespace std;

int main()

for (i=0;i<5;++i)

cout<

return 0;}

c++編譯問題 能否向檔案寫入連結串列 在再次讀取時一次性將連結串列資料全部讀取

14樓:

當然可以——不過,只是寫的是「一次性」,讀的時候還是乙個資料乙個資料讀出來的。還有個問題,連結串列讀出來要用同型別的連結串列接收,否則就不好處理了;一次性讀出來只能申請整個檔案資料那麼大的連續空間,這連結串列的結點之間的相互關係也被破壞了,那還有什麼意義?

c++ fstream讀檔案是一次性讀到記憶體裡的嗎

15樓:

可以一次性讀入,結合字串流,將檔案中的內容一次性讀入記憶體,**如下:

using std::ostringstream;

using std::ifstream;

using  std::string;

std::string  filecontent;

string strfilename="serviceipconfig.txt";//檔案名字

fin.open(strfilename.c_str());

if (fin.is_open())

{  ostringstream temp;//字串流,提供對於string物件的寫的功能。

temp<

16樓:匿名使用者

reader.open(path)

c語言,visual c怎麼讓輸出的值保持位置不停

看了許久才明白樓主的意思,在控制台的程式麼,你可以試著敲足足夠的換行,使得換一次就到達第二頁,看上去位置還在原來的地方。也就是printf n 多寫幾個啦。希望對你有幫助 note your choice is c ide include stdio.h include windows.h 填充螢幕...

怎麼在excel裡輸入特定的資料

顯示一個隨機數的公式為 randbetween 4500,10000 100因為你要在一個單元格中顯示,所以可以用連字元將10個這樣的公式連線起來 測試通過!redstarw 十二級 的回答是正確的但是兄臺你忘了教人家家在分析工具庫 預設情況下excel是沒有randbetween這個函式的啦操作工...

c 怎麼樣把輸入表的資料新增到資料庫

做過乙個三層架構的例子,dal層 public bool insert casepsinfo pscase para 0 value para 1 value para 2 value para 3 value int result para if result 0 elsebll層 public ...