C循環(huán)控制結(jié)構(gòu)練習(xí)題_第1頁
C循環(huán)控制結(jié)構(gòu)練習(xí)題_第2頁
C循環(huán)控制結(jié)構(gòu)練習(xí)題_第3頁
C循環(huán)控制結(jié)構(gòu)練習(xí)題_第4頁
C循環(huán)控制結(jié)構(gòu)練習(xí)題_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、循環(huán)控制結(jié)構(gòu)練習(xí)題1. 從鍵盤上輸入一個正整數(shù)n,計算其階乘n! #include <iostream>#include <cmath>using namespace std;int f(int n)int t = 1;for (int i = n; i > 0; i-)t = t*i;return t;(0的階層為1)int main()int n;cout << "n="cin >> n;cout << endl;if (n < 0)n = abs(n);cout << "n!

2、="<<f(n);system("pause"); return 0;2. 從鍵盤上輸入一個正整數(shù)n,判斷是否是素數(shù)?法1: #include<iostream>#include <iomanip>using namespace std;void f(int n) int k = sqrt(n),i;for ( i = 2; i <= k; i+)if (n%i = 0)break;if (i >= k+1)cout << n << "是素數(shù)" << endl;

3、else cout << n << "不是素數(shù)" << endl;int main()int n;cout << "n="cin >> n;f(n);system("pause"); return 0;法2;#include<iostream>#include <iomanip>using namespace std;bool f(int n) int k = sqrt(n), i;for (i = 2; i <= k; i+)if (n%i =

4、 0)break;if (i >= k + 1)return 1;else return 0;int main()int n;cout << "n="cin >> n;f(n);if(f(n)cout << n << "是素數(shù)" << endl;else cout << n << "不是素數(shù)" << endl;system("pause"); return 0;bool f2(int n)int k=sqrt(n)

5、,i;for( i=2;i<=k;i+)if(n%i=0)return 0;if(i>=k+1)return 1;1int main()int n;while(1)cin>>n;if(n=0)break;if(f2(n)cout <<"是素數(shù)!"<<endl;system("pause");return 03.編寫程序,輸入一個整數(shù),求該整數(shù)的各位數(shù)字和。 #include <iostream>#include <cmath>using namespace std;int f(int

6、 n)int t = 0;for (int i = n; i > 0; i=i/10)t=i%10+t;return t;int main()int n;cout << "n="cin >> n;if (n < 0)n = abs(n);cout << "n的各位數(shù)字和為:" << f(n) << endl;system("pause"); return 0;法二: int f(int n)if (n < 10)return n;else return (n

7、 % 10 + f(n / 10);int main()int n;cout << "n="cin >> n;if (n < 0)n = abs(n);cout << "n的各位數(shù)字和為:" << f(n) << endl;system("pause"); return 0;int f3(int n)n=abs(n);if(n<10)return n;else return (n%10)+f3(n/10);int main()int n;while(1)cin&g

8、t;>n;if(n=0)break;cout <<f3(n);system("pause");return 0;3. 編寫程序,輸入一個整數(shù),求該整數(shù)的各位數(shù)字的乘積。法一:#include <iostream>using namespace std;int f(int n)if (n < 10)return n;else return (n % 10 )* f(n / 10);int main()int n;cout << "n="cin >> n;n = abs(n);cout <&l

9、t; f(n);system("pause");return 0;法二:#include <iostream>using namespace std;int f(int n)int t = 1;for (int i = n; i > 0; i = i / 10)t = t*(i % 10);return t;int main()int n;cout << "n="cin >> n;n = abs(n);cout << f(n);system("pause");return 0;in

10、t f4(int n)n=abs(n);if(n<10)return n;else return (n%10)*f3(n/10);int main()int n;while(1)cin>>n;if(n=0)break;cout <<f4(n);system("pause");return 0;4. 編寫程序,輸入一個整數(shù),求該整數(shù)的各位數(shù)字的平方和。法一: #include <iostream>using namespace std;int f(int n)int t = 0;for (int i = n; i > 0; i

11、= i / 10)t = t+(i % 10)*(i%10);return t;int main()int n;cout << "n="cin >> n;n = abs(n);cout << f(n);system("pause");return 0;法二:#include <iostream>using namespace std;int f(int n)if (n < 10)return n*n;else return (n % 10)*(n % 10)+f(n / 10);int main()i

12、nt n;cout << "n="cin >> n;n = abs(n);cout << f(n);system("pause");return 0; int f4(int n)n=abs(n);if(n<10)return n*n;if(n>10)return (n%10)*(n%10)+f4(n/10); int main()int n;while(1)cin>>n;if(n=0)break;cout <<f4(n)<<endl;system("pause&

13、quot;);return 0;5. 編寫程序,輸入一個整數(shù),求該整數(shù)的各位上的數(shù)字是否包含數(shù)字5,若有則輸出是第幾位有含數(shù)字5. #include <iostream>using namespace std;void f(int n)int j = 0;for (int i = n; i > 0; i = i / 10)j+;if (i % 10 = 5)cout << j << " "int main()int n;cout << "n="cin >> n;n = abs(n);cou

14、t << "包含5的位置i為:"f(n);cout << endl;system("pause");return 0;void f5(int n,int m)for(int i=n,j=0;i>0;i=i/10,j+)if(i%10=m)cout <<"第"<<j+1<<"位"<<endl;int main()int n,m;while(1)cin>>n>>m;if(n=0)break;f5(n,m);system

15、("pause");return 0;6. 編寫程序輸出一個平行四邊行。注:邊長為10個*號 void u()int i = 0;for (int i = 1; i <= 10; i+)cout << setw( i);for (int j = 1; j <= 10; j+)cout << '*'cout << endl; void f6()for(int j=0;j<10;j+)cout<<setw(20+j);for(int i=0;i<10;i+)cout<<'

16、*'cout <<endl;int main()int n,m;f6();system("pause");return 0;8.編程計算:的前20項的和。法一: #include <iostream>using namespace std;double f(double n)if (n > 0) if (n = 1)return 1;else return n / (2 * n - 1) + f(n - 1);int main()int n;cout << "n="cin >> n;n = a

17、bs(n);cout << f(n);cout << endl;system("pause");return 0;double f7(double n)int i;if(n>0)if(n=1)return 1;else return (n/(2*n-1)+f7(n-1);int main()double n,m;cin>>n;cout <<f7(n);system("pause");return 0;9.編寫一程序,輸入一個正整數(shù),統(tǒng)計該數(shù)中含數(shù)字5的個數(shù)。 using namespace std;v

18、oid f(int n)int j = 0;for (int i = n; i > 0; i = i / 10)if (i % 10 = 5)j+;cout <<j<<endl;int main()int n;cout << "n="cin >> n;n = abs(n);cout << "包含5的個數(shù)為:"f(n);cout << endl;system("pause");return 0;10.編寫程序,輸出所有含數(shù)字5且為77倍數(shù)的四位數(shù)。 void

19、J() for(int i=1000;i<=9999;i+)if (i % 77 = 0) int m = i;for(m;m>0;m=m/10)if (m % 10 = 5) cout << i << " " break; int main()J();System(“pause”);return 0;11.編寫一程序,輸入一個正整數(shù)n,求大于等于n的最小素數(shù)。#include<iostream>using namespace std; int main()int x, b, i, m, k;cout << &qu

20、ot;請輸入一個整數(shù):"cin >> x;b = sqrt(x);for (i = 2; i <= b;i+)if (x%i = 0) break;if (i >= b+ 1) cout << x << endl;else for (m = x; m+)k = sqrt(m);for (i = 2; i <= k;i+)if (m%i = 0)break;if (i >= k + 1)cout << m << " "break;system("pause");r

21、eturn 0;法二:#include <iostream>using namespace std;int main()int n, k, m, i, j;cout << "n="cin >> n;for (i = n; i+)for (j = 2; j*j<i; j+)if (i%j = 0)break;if (j*j >= i)cout << i << endl;break;system("pause");return 0;12.從鍵盤輸入一個小于15的正整數(shù),計算其階乘。13.

22、編程計算1!+2!+3!+.+n!。n從鍵盤輸入。int sum2(int n)int sum=0,t=1;for(int j=1;j<=n;j+)t=1;for(int i=1;i<=j;i+)t=t*i;sum=sum+t;return sum;int main()int n;while(1)cin>>n;if(n=0)break;cout <<"sum="<<sum2(n)<<endl;system("pause");return 0;14.從鍵盤上輸入一個正整數(shù)m,找出1000至1000

23、0之間所有各位數(shù)字之和等于m的數(shù)。如輸入32,則有9869滿足要求。因為9869各位上數(shù)字之和等于32。#include <iostream>using namespace std;void f(int m)int i;for (i = 1000; i < 10000; i+)int sum = 0;for (int j = i; j>0; j = j / 10) sum = sum + j % 10; if (sum = m) cout << i << " " cout << endl;int main()int

24、 n, m;cout << "n="cin >> n;f(n);system("pause");return 0;15.已知xxz+yzz=532,求所有可能的x,y,z的值#include <iostream>using namespace std;int main()for (int x = 0; x <= 9; x+)for (int y = 0; y <= 9; y+)for (int z = 0; z <= 9; z+)int k = x * 10 + x * 100 + z + y * 1

25、00 + z * 10 + z;if (k = 532)cout << x << " " << y << " " << z << " " << endl;system("pause");return 0;16.編程從鍵盤中隨機(jī)輸入若干整數(shù),統(tǒng)計其中正整數(shù)、0、負(fù)整數(shù)數(shù)的個數(shù)。當(dāng)輸入整數(shù)100000時結(jié)束輸入。#include <iostream>using namespace std;void main()int n=0

26、,m=0,k=0,c=0;while (n != 100000)cout << "n="cin >> n; if (n > 0)k+;else if (n = 0)m+;else if (n < 0)c+;cout << "正整數(shù)的個數(shù)是:" << k << endl;cout << "負(fù)整數(shù)的個數(shù)是:" << k << endl;cout << "0的個數(shù)是:" << k <&

27、lt; endl;system("pause");17.編寫一程序,輸入一個正整數(shù)n,求小于等于n的最大素數(shù)。18.求100999中的。所謂水仙花數(shù)是指一個三位數(shù),它的每位數(shù)字的立方之和等于該數(shù)。例如,因為153135333,所以153為水仙花數(shù)。#include <iostream>using namespace std;void main()int i;for (i = 100; i <= 999; i+)int j, sum = 0;j = i;while (j)intk = j % 10;sum = sum + k*k*k;j = j / 10;i

28、f (sum = i)cout << sum << " "system("pause");19.求1000之內(nèi)的所有完數(shù)。所謂完數(shù)是指一個數(shù)恰好等于它的所有因子之和。例如,6123,所以6為完數(shù)。20. 編一程序顯示如下圖案:* * * * * * * * * * * * * * * * * * * * *21.編一程序顯示如下圖案:AA B CA B C D E #include<iostream>#include <iomanip>using namespace std;void f(int n) fo

29、r (int i = 1; i <= n; i+) cout << setw(20 - i);for (int j = 0; j < 2 * i - 1; j+)char t = 'A'+j;cout << t;cout << endl;int main()f(3);system("pause"); return 0;21.根據(jù)/4 =1-1/3+1/5-1/7+求的近似值,直到最后一項的值小于0.000001為止。22. 猴子吃桃問題。猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個。第二天早上

30、又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,發(fā)現(xiàn)只剩一個桃子了,求猴子第一天究竟摘了多少個桃子?23.編程序模擬剪刀,石頭和紙游戲。游戲規(guī)則為:剪刀剪紙,石頭砸剪刀,紙包石頭玩游戲者從鍵盤上輸入s (表示剪刀)或(表示石頭)或(表示紙),要求兩個游戲者交替輸入,計算機(jī)給出輸贏的信息。 24.編寫程序輸出菲波那切數(shù)列的前20項。即前兩項為1,以后每一項為前兩項之和。25.打印九九乘法表。26.若一頭小母牛,從出生起第四個年頭開始每年生一頭母牛,按此規(guī)律,第n年時有多少頭母牛?27.編寫程序,輸入一個整數(shù),求該整數(shù)是幾位數(shù)?并輸出最高位數(shù)

31、字。 #include <iostream>using namespace std;int f(int n)int x = 0,j=0;for (int i = n; i > 0; i = i / 10) j+;if (x < i % 10)x = i % 10;cout << j << endl;return x;int main()int n;cout << "n="cin >> n;n = abs(n);cout << f(n);cout << endl;system(&q

32、uot;pause");return 0;28.從鍵盤上輸入一個正整數(shù)n,求出5位數(shù)中各位數(shù)字之和等于n的所有素數(shù),每行按6個素數(shù)輸出。法一: #include <iostream>(錯誤)using namespace std;void f(int m, int n, int k)int l = 0;for (int i = m; i <= n; i+) int s = 0;for (int j = i; j > 0; j = j / 10)s = s + j % 10;if (s = k) int t, z = sqrt(i);for (t = 2; t

33、<= k; t+)if (i%t = 0)break;if (t >= k + 1) cout << i << " "l+;if (l % 6= 0)cout << endl;int main()f(10000, 99999, 43);system("pause"); return 0;法二:(正確)#include <iostream>using namespace std;void foundPrime(int n)int k = 0;for (int i = 10000; i<100

34、000; i+)int s = 0;int m = i;while (m>0)s = s + m % 10;m = m / 10;if (s = n)int z = sqrt(i);int j;for (j = 2; j <= z; j+) if (i%j = 0) break;if (j >= z + 1)cout << i << " "k+;if (k % 6 = 0) cout << endl;int main()foundPrime( 43);system("pause");return 0;

35、29.編程求下式的值:n1+n2+n3+n4+n10,其中n=1,2,3。編寫函數(shù)時,設(shè)置參數(shù)n的默認(rèn)值為2。 #include <iostream>using namespace std;int f( int n=2)int i, t = 1, sum = 0,k=0;for (i = 1; i <=10; i+)t = t * n;sum = sum + t;return sum;int main()cout << f() << endl;cout << f(1) << endl;cout << f(2) <

36、;< endl;cout << f(3) << endl;system("pause"); return 0;30.給定求組合數(shù)公式為:Cnm = m!/ n! (m-n)!編一程序,輸入m 和n的值31.求s=1+(1+2)+(1+2+3)+.+(1+2+3+n)的值。 #include <iostream>using namespace std;int f(int n)int sum, t = 0;for (int j = 1; j <= n; j+) sum = 0;for (int i = j; i > 0; i

37、-)sum = sum + i;t = t + sum;return t;int main()int n;cout << "n="cin >> n;n = abs(n);cout << f(n);cout << endl;system("pause");return 0;32.編程計算:s=33.求sum=a+aa+aaa+aaaa+aaa(表示n個a)的值。其中a是一位數(shù)字。例如當(dāng)n=6,a=2時sum=2+22+222+2222+22222+222222。n和a的值由鍵盤輸入。法一: #include

38、<iostream>using namespace std;int f(int a, int n)int i, t = 1, sum = 0,k=0;for (i = 0; i <n; i+)sum = sum + pow(10, i)*a;k = k + sum;return k;int main()cout << f(2, 2) << endl;system("pause"); return 0; 法二:#include <iostream>using namespace std;int f(int a, int n

39、)int i, t = 1, sum = 0,k=0;for (i = 0; i <n; i+)k = k + a*t;sum = sum + k;t = t * 10;return sum;int main()cout << f(2, 3) << endl;system("pause"); return 0;34.求100230之間所有素數(shù)的和。 #include<iostream>#include <iomanip>using namespace std;void f() int t = 0;for (int j =

40、 100; j < 230; j+)int k = sqrt(j);int i;for (i = 2; i <= k; i+)if (j%i = 0)break;if (i >= k + 1) cout << j<< " " t+;if (t % 6 = 0)cout << endl;int main()f();system("pause");return 0; int sum(int n,int m)int sum=0;for(int i=n;i<=m;i+)int k=sqrt(i),j;f

41、or( j=2;j<=k;j+)if(i%j=0)break;if(j>=k+1)sum=sum+i;return sum;int main()cout <<sum(100,230);system("pause");return 0;35.從鍵盤上輸入若干整數(shù),計算并輸出其中正整數(shù)的平均值,以0作為輸入結(jié)束標(biāo)志。(要求分別使用while語句、do while語句編寫)36.編程實現(xiàn)下面的圖案。* * * * * *37.實現(xiàn)一個簡單的菜單程序,運行時顯示:Menu:A(階乘)S(求和) F(找素數(shù))Q(退出) 請選擇(A/S/F/Q)?當(dāng)選擇A時,輸

42、出”求階乘”信息;選擇S時,輸出”求和”信息;選擇F時,輸出”找素數(shù)”信息;選擇Q時,退出循環(huán),結(jié)束程序。#include <iostream>#include <iomanip>using namespace std;void menu()cout <<"-Menue-"<<endl;cout <<setw(15)<<"A.求階乘"<<endl;cout <<setw(13)<<"S.求和"<<endl;cout

43、<<setw(15)<<"F.找素數(shù)"<<endl;cout <<setw(13)<<"Q.退出"<<endl;int sum(int n)int sum=0;for(int i=n;i>0;i=i/10)sum=sum+i%10;return sum;int AA(int n)int t=1;for(int i=1;i<=n;i+)t=t*i;return t;void k3(int n)int k=sqrt(n);int i;for(i=2;i<=k;i+)if

44、(n%i=0)cout <<"不是素數(shù)!"<<endl;if(i>=k+1)cout <<"是素數(shù)!"<<endl;void choice()char ch;int n;while(1)menu();cout <<"請輸入數(shù)字:"cin>>n;cout <<"請輸入查找的序號:"cin>>ch;switch(ch)case 'A':cout <<AA(n);break;case '

45、;S':cout <<sum(n);break;case 'F':k3(n);break;case 'Q':break;int main()choice();system("pause");return 0;38.編程找出所有的三位整數(shù)中各位數(shù)字之和為素數(shù)的所有三位數(shù),每行輸出5個。39.編程實現(xiàn)如下圖案 ststststststststststststs stststststststststststs ststststststststststs stststststststststs ststststststststs

46、stststststststs ststststststs stststststs ststststs stststs ststs sts S40.編程實現(xiàn)如下圖案 A B B C C D D E E F F G G HHHHHHHHHHHHHHH41.編程實現(xiàn)如下圖案 A B B C C D D E E F F G G HHHHHHHHHHHHHHH G G F F E E D D C C B B Avoid printABCD()int j;/上半部分 for(int i=1;i<=8;i+) cout<<setw(20-i); for( j=1;j<=2*i-1;

47、j+) if(j=1 | j=2*i-1) cout<<(char)('A'+i-1); else if(i=8) cout<<(char)('A'+i-1); else cout<<" " cout<<endl; 42. 從鍵盤上輸入一個整數(shù),判斷該數(shù)是否為回文數(shù)。所謂的回文數(shù)就是從左到右讀與從右到左讀都是一樣的數(shù)。如7887、23432就是回文數(shù)。 #include<iostream>#include <iostream>using namespace std;void f(int n)int j = 0,t=0;for (int i = n; i > 0; i =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論