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) 看了許久才明白樓主的意思,在控制台的程式麼,你可以試著敲足足夠的換行,使得換一次就到達第二頁,看上去位置還在原來的地方。也就是printf n 多寫幾個啦。希望對你有幫助 note your choice is c ide include stdio.h include windows.h 填充螢幕... 顯示一個隨機數的公式為 randbetween 4500,10000 100因為你要在一個單元格中顯示,所以可以用連字元將10個這樣的公式連線起來 測試通過!redstarw 十二級 的回答是正確的但是兄臺你忘了教人家家在分析工具庫 預設情況下excel是沒有randbetween這個函式的啦操作工... 做過乙個三層架構的例子,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 ...c語言,visual c怎麼讓輸出的值保持位置不停
怎麼在excel裡輸入特定的資料
c 怎麼樣把輸入表的資料新增到資料庫