1樓:匿名使用者
change 是用來控制迴圈的,整個while迴圈是將當前已經輸入的n的資料全部從小到大的排序。只有每次在迴圈裡面的有發生資料的交換,change才會被值為1,如果change為0說明陣列已經有序了,你是的只需要while(n<0)這樣程式也是正確的,但是會增加很多不需要的比較,比如輸入的a[j+1]就是最大的數了,沒有change的情況下還會執行(n-1)(n-2)/2次比較。
這個演算法之中,因為j變數是從小到大開始迴圈的,當a[j+1] < a[j] 的時候會交換,但是如果a[j+1]同時有小於a[j-1]的,由於j是從小往到的增長,一個for迴圈之中,無法再講a[j+1] (將換後已經移到了a[j]的位置)和a[j-1]驚醒交換, 所以需要多次。
如下面的例子:
已有的資料為: 1 2 4 5
然後輸入了 3, 在進入while迴圈之前陣列中的資料為:
1 2 4 5 3
第一次進入while: n = 4
j = 0 時, a[j] = 1 < a[j+1] = 2, 不交換: 1 2 4 5 3
j = 1 時, a[j] = 2 < a[j+1] = 4, 不交換: 1 2 4 5 3
j = 2 時, a[j] = 4 < a[j+1] = 5, 不交換: 1 2 4 5 3
j = 3 時, a[j] = 5 > a[j+1] = 3, 交換: 1 2 4 3 5(change 置為1)
第一交換完,整個陣列還不是有序的,需要繼續的執行。
第二次進入while:
j = 0 時, a[j] = 1 < a[j+1] = 2, 不交換: 1 2 4 3 5
j = 1 時, a[j] = 2 < a[j+1] = 4, 不交換: 1 2 4 3 5
j = 2 時, a[j] = 4 > a[j+1] = 3, 交換: 1 2 3 4 5(change 置為1)
j = 3 時, a[j] = 4 < a[j+1] = 5, 不交換: 1 2 4 3 5
整個while之後, change為1, 主要再次的進入執行, 檢查。
這次由於所以的數已經有排序了
j = 0 時, a[j] = 1 < a[j+1] = 2, 不交換: 1 2 3 4 5
j = 1 時, a[j] = 2 < a[j+1] = 3, 不交換: 1 2 3 4 5
j = 2 時, a[j] = 3 < a[j+1] = 4, 不交換: 1 2 3 4 5
j = 3 時, a[j] = 4 < a[j+1] = 5, 不交換: 1 2 3 4 5
這次完了之後change=0; 不用在繼續執行while了。
這樣有了change變數控制之後,迴圈的次數就少多了。
2樓:匿名使用者
#include
void main ()
}n--;}}
for (i=0;i<=9;i++)
printf ("\n");}
3樓:匿名使用者
change的作用是進行條件判斷,以減少程式執行時間,也就是說的當發現迴圈結束後,沒有任何資料進行了交換,排序就完成了,不需要再進行n--後的迴圈操作了。
4樓:
首先明確,這是從鍵盤上輸入十個數,然後按冒泡法排序輸出。n為迴圈次數,change為每次大迴圈中有沒有資料交換的情況,有則有繼續下一能迴圈,否則可以提前退出(已經排好序了)。
5樓:匿名使用者
條件語句 for()迴圈語句在括號內的條件下進行迴圈 根據條件 迴圈 ..當然這個是c#裡面的語句,在c語言中也是一樣的啊。比如說 int i=0;int
6樓:手機使用者
change 是個判斷量 ,while (n>0&&change==1) 這裡是判斷 如果change 為1 不退出迴圈,因為找到前面一個大於後面一個則交換,但並不知道還有前面一個大於後面一個的,所以將change賦值為1繼續檢查,直到沒有前面一個大於後面一個則while (n>0&&change==1) change=0;這裡將使迴圈退出
c++中程式執行到cin語句需要由鍵盤連續輸入多個資料怎麼理解?
7樓:匿名使用者
1、cin是c++程式語言互換流中的標準輸入流,是istream類的物件,是計算機輸入的一種手段,它需要iostream.h支援。cin從標準輸入裝置(鍵盤)獲取資料,程式中的變數通過流提取符">>"從流中提取資料。
流提取符">>"從流中提取資料時跳過輸入流中的空格、tab鍵、換行符等空白字元。注意:只有在輸入完資料再按回車鍵後,該行資料才被送入鍵盤快取區,形成輸入流,提取運算子">>"才能從中提取資料。
它的使用需要包含標頭檔案#include 以及 using namespace std;
2、例項:
#include
using namespace std;
int main() {
char str[8];
cin.getline(str, 5);
cout<
8樓:匿名使用者
用一個while迴圈搞定吧!輸入一個判讀一次是不是結束符就行了!
9樓:匿名使用者
可以用迴圈,也可以這樣 cin >> a >> b >> c; 這樣依次輸入資料,輸入的第一個資料給a,第二個給b,第三個就給了c
10樓:誰讓我揩油
cin>>a1>>a2>>…>>an;你想要幾個就寫幾個
c語言,while語句中,當輸入字串exit時,退出程式。語句怎麼寫?
11樓:黃山
char szbuffer[1024] = ;
while (判斷資訊)
//迴圈中要加入的處理語句}
12樓:匿名使用者
#inlcude
int main()
returrn 0;}
13樓:匿名使用者
while(i=exit)
14樓:匿名使用者
char str[101] = ;
while(strcmp(str, "exit") != 0)
c/c++語言中,在不確定使用者輸入資料個數的情況下來控制迴圈結束?
15樓:四舍**入
int main()
int a[100],i=0,ch=0;
printf("請輸入一組整形資料(不超過100個):");
dowhile(ch!='\n');
for(ch=0;chprintf("%d\n" , a[ch]);
16樓:真的無奈啊
while(scanf(......)!=eof)
return 0;}
17樓:
是的,每輸入一個資料就判斷一下,比如設定使用者輸入end表示結束,當程式獲取到這個字串後就跳出迴圈。
18樓:匿名使用者
先申明一個整數,作為要輸入的資料的個數n,要求使用者輸入。
再根據使用者輸入的數n來確定陣列的大小a[n],,
就可以用for迴圈來控制
19樓:匿名使用者
int main()
while(ch!='\n');
for(ch=0;ch
printf("%d\n" , a[ch]);}
20樓:
我分析一下:
如果是控制檯程式的話,按回車時,開始輸入。
使用者只輸入一次回車嗎?
、、、如果不是1次回車,比如我輸入1,然後回車,等明天我再來輸入2,然後回車,肯定不行啊。
。。。。。。。。。。
如果只是一次回車,那也就是說只有1行輸入。那就用getline(cin,sting)
把資料都讀進來,如string ==「1 2 3 1 45 78」,然後通過空格,一個一個把數字分解出來
21樓:四川新聞直播
for(int i =1 ;i<100;i++)
printf("請輸入一組整形資料(不超過100個)");
}是不是這個意思?
22樓:匿名使用者
#include
using namespace std;
void main(void)
,i=0;
printf("請輸入一組整形資料:\n");
while(cin>>a[i++]);
cout<<"輸出陣列"< i=0; while(i<100) cout<
system("pause"); }輸入數字意外的字元(不包含回車,製表符等)即結束。但要保證輸入的整數不溢位。 令外:使用cin 需要包含的標頭檔案是iostream 有c語言基礎,學c++了,是直接學習c++primer好呢,還是先學習c++primer plus然後再學習c++ primer好呢? 23樓:匿名使用者 我也是過來人,我覺得c++primer不適合你,我現在有兩本一本是c++ primer plus 一本是primer,相對而言c++ primer plus 是比較適合剛轉入c++的,不能太急進,而且要看最新版的,語言標準近些年變化好大。 24樓:執劍映藍光 c語言基礎對於c++有一定作用,但c++是物件導向的,和c的差距很大。學習還是抱著從零開始的心態比較合適。 c++primer更詳細,涵蓋c++的所有知識。c++primerplus更適合新手。 建議學習c++primerplus並結合做專案 25樓:吾嘯 學c++一定要看c++ primer ,c primer plus 可看可不看. 經典啊. 學就學好的,不然還不如不學. c++ primer還好學點. c++程式設計語言是c++之父寫的,更難,所以學c++ primer . 26樓:匿名使用者 我有《c++ primer 》要發給你麼。?看過你就知道先看哪本好了 27樓:曾哥那才是爺們 c++跟c相比多了些,面像物件的概念,看c++primer吧, 計算機二級c++到底考什麼 28樓:迷蟲仔 到書店買本書就好了,你只需要買你對應考試的書就好了,書分兩本,一本上機,一本筆試,現在計算機考試難度已經很低了,基本上都是命中原題達95%以上,所以你只需要好好背就好了,基本是個體力+運氣的活。 29樓:匿名使用者 2012-8-1 2:45:34吹餚感離計算機二級c++到底考什麼 30樓:匿名使用者 我考了c++二級 還考軟體工程基礎,資料庫基礎等。只要把c++程式設計基礎和c++物件導向學好就沒什麼問題的。 cin其實是一個例項,可以理解為一個系統自己的變數然後cin這個例項的定義的類的一個基類過載過operator bool 這個過載可以把例項轉換為int型別 while cin a 就相當於先進行cin a,然後判斷cin.good cin的operator bool 就是返回cin.good 當輸... int i,sum i 1,sum 0 while i 100 int cou 0 int num 0 while num 100 main printf d n sum 用c語言for迴圈求1到100之和 sum sum i 這一句寫在了for迴圈的外面,意思就是先作for迴圈至i 101,最後執... 我沒聽懂你的意思,你的意思是做一個兩個數的比較那個數大?再說冒泡演算法是兩個for好不好,最重要的是一個數一個數的比,把最大的數放上面,如果不想換數字,也可以換指標的。include int main for i 1 i 11 i printf 5d,a i printf n 您好,這個題跟氣泡排序...C 的while迴圈的問題
c語言while迴圈程式設計輸出1到100這數的和
C語言問題。那個for迴圈裡面我想用if當剪掉兩個比較,輸出大的那個,但是因為一次只輸