C編程基礎(chǔ)題訓(xùn)練答案_第1頁
C編程基礎(chǔ)題訓(xùn)練答案_第2頁
C編程基礎(chǔ)題訓(xùn)練答案_第3頁
C編程基礎(chǔ)題訓(xùn)練答案_第4頁
C編程基礎(chǔ)題訓(xùn)練答案_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1、輸入3個數(shù),求最大數(shù)。#include <iostream>using namespace std;int main()int a,b,c,max;cout<<"請輸入三個數(shù)字:"<<endl;cin>>a>>b>>c;max=(a>b)?a:b;if(c>max)max=c;cout<<"最大值:"<<max<<endl;return 0;2、韓信點兵:有一個數(shù),用3除余2;用5除余3;用7除余2;求滿足條件的最小數(shù)。#inclu

2、de <iostream>using namespace std;int main()int a;for(a=1;a<1000;a+)if(a%3=2&&a%5=3&&a%7=2)cout<<a;break;return 0;3、求1+2+3+100#include <iostream>using namespace std;int main()int s=0; int a=1;do s=s+a; a=a+;while(a<101);cout<<s<<endl;return 0;4、 求1-

3、2+3-4+-100#include <iostream>using namespace std;int main()int a,s=0,s1=0,s2=0;for(a=1;a<101;a+,a+)s1+=a;for(a=-2;a>-101;a=a-2)s2=s2+a;s=s1+s2;cout<<s<<endl;return 0;5、 求1+1/2+1/3+1/100#include <iostream>using namespace std;void main()float a,m;float s=0;for(a=1;a<10

4、1;a+)m=1/a;s=s+m;cout<<"s="<<s<<endl;6、 求輸入n,求n?。ㄐ枧袛鄋的合法性)遞歸調(diào)用#include <iostream>using namespace std;int fac(int n)if(n=0)return 1;elsereturn fac(n-1)*n;int main()while(1) int x,y,n; cout<<"輸入一個整數(shù):n" cin>>x; fac(x); cout<<fac(x)<<en

5、dl;break;return 0;7、 求1!+2!+3!+10!#include <iostream>using namespace std;int main()int s=0;int t=1;int n;for(n=1;n<11;n+)t=t*n;s=s+t;cout<<"1!+2!+3!+.+10!="<<s<<endl;return 0;8、求1+1/2!+1/3!+1/n!,直到1/n!<1E-5為止第一種方法:#include <iostream>using namespace std;v

6、oid main()double s=0;double t=1;double n=1;dot=t*n;s=s+1/t;n+;while (t<1e5);cout<<"1/1!+1/2!+1/3!+.+1/n!="<<s<<endl;第二種方法:#include <iostream>using namespace std;void main()double sum=0.0; /結(jié)果double now=1.0; /現(xiàn)在的1n!double cnt=2.0; /現(xiàn)在的nwhile(now>=1e-5)sum+=now;

7、now/=cnt;cnt+=1.0;cout<<sum<<endl;9、 用公式求ex=1+x+x2/2!+x3/3!+xn/n!。n取20。#include<iostream>using namespace std;int pow(int x, int n);int f1(int n);int main(int argc, char* argv) int x, n; double ex = 1; cin >> x; cin >> n; for (int i=1; i<=n; i+) ex += pow(x, i) / (f1(

8、i) * 1.0); cout << ex << endl; system("pause"); return 0;int f1(int n) int s = 1; for (int i=2; i<=n; i+) s *= i; return s;int pow(int x, int n) int s = 1; for (int i=1; i<=n; i+) s *= x; return s;10、假定f1=1,f2=1;fn=fn-1+fn-2。輸出前50項的值,且要求每行輸出5個值#include<iostream> #in

9、clude<iomanip>using namespace std; int f(int n)int sum;if (n<=2)return 1;else sum=f(n-1)+f(n-2);return sum;cout<<sum;int main() int i,n;cin>>n;f(n);for(i=1;i<=n;i+)cout<<"f("<<i<<"): "<<f(i)<<" "if(i%5=0)cout<<

10、endl;return 0; 11、 判斷一個數(shù)是否為素數(shù)方法1:# include<iostream># include<cmath>using namespace std;int main()int i,n,k;cout<<"請輸入一個數(shù):"<<endl;cin>>n;k=sqrt(n);for(i=2;i<=k;i+)if(n%i=0)break;if(i>k)cout<<n<<"是素數(shù)。"<<endl;else cout<<n&

11、lt;<"不是素數(shù)。"<<endl;return 0;方法2:#include<iostream> #include<cmath>using namespace std; int main() int i,n,m;cout<<"請輸入一個數(shù):"<<endl;cin>>n;m=sqrt(n);for(i=2;i<=m;i+)if(n%i=0)break; if(i>m) cout<<n<<"是素數(shù)。"<<endl

12、; else cout<<n<<"不是素數(shù)。"<<endl;return 0; 12、 輸出2-1000中的素數(shù)及個數(shù)。且要求每行輸出8個素數(shù)。 方法1:#include <iostream.h> #include <math.h> int main() int n=0, i, j,w,k; for(i=2;i<=2000; i+) w=1; k=sqrt(i);for (j=2; j<=k; j+) if (i%j=0) w=0;break; if (w) +n; if (n%8=0)cout<

13、<i<<endl; elsecout<<i<<" " cout<<endl;cout<<"個數(shù)n="<<n<<endl;return 0;方法2:#include <iostream>#include <cmath>using namespace std;int main()int i,j,n=0;for(i=2;i<2001;i+) for(j=2;j<=i;j+) if(j=i) cout<<i<<&q

14、uot; " n+; if(n%8=0) cout<<endl; if(i%j=0) break; cout<<endl;cout<<"個數(shù)為n:"<<n<<endl;return 0;13、 輸入兩個整數(shù),求最大公約數(shù)和最小公倍數(shù)。#include<iostream>using namespace std;int fun1(int a,int b);int fun2(int a,int b);int main()int a,b;cout<<"請輸入兩個整數(shù):"

15、<<endl; cin>>a>>b;int fun1(int a,int b);int fun2(int a,int b); cout<<"最大公約數(shù):"<<fun1(a,b)<<endl;cout<<"最小公倍數(shù):"<<fun2(a,b)<<endl;return 0;int fun1(int a,int b)int m,i; m=a<b?a:b; for(i=m;i>=1;i-) if(a%i=0&&b%i=0) b

16、reak; return i;int fun2(int a,int b) int n,j; n=a<b?a:b; for(j=n;j<=a*b;j+) if(j%a=0&&j%b=0) break; return j;14、 輸入一個非0的一位整數(shù)x,輸入一個整數(shù)n。輸出n位整數(shù)x x xx。#include<iostream>#include<cmath>using namespace std;int main()int m,i,s,x,n,j; cout<<"輸入一個整數(shù)x:"<<endl; c

17、in>>x; cout<<"輸入一個整數(shù)n:"<<endl; cin>>n;s=0;for(i=0;i<=n;i+) j=pow(10,i); s=s+j;m=x*s;cout<<"結(jié)果:"<<m<<endl;return 0;15、 輸入n、a。求sn=a+aa+aaa+aa,其中a是一個非0的一位整數(shù)。#include<iostream>#include<cmath>using namespace std;int fun(int a,in

18、t b);int main()int n,a,s,i,k;cout<<"輸入一個整數(shù)n:"<<endl; cin>>n; cout<<"輸入一個整數(shù)a:"<<endl; cin>>a;s=0;for(i=0;i<n;i+)k=fun(a,i);s=s+k;cout<<"Sn="<<s<<endl;return 0;int fun(int a,int b)int m,i,s,j; s=0;for(i=0;i<=b;i+

19、) j=pow(10,i); s=s+j;m=a*s;return m;16、 輸入任意的正整數(shù),將其各位分離出來;求它是幾位數(shù),求各位上數(shù)字的和,求其逆值。#include<iostream>#include<cmath>using namespace std;void main()int x,y,m,n,i,j=1,k=0,a20;cout<<"請輸入一個數(shù):"cin>>m;y=m;cout<<endl;for(i=1;i+) j*=10; n=m/j; ai=n; k+; if(n<1) break;c

20、out<<"您輸入的位數(shù)是:"<<k<<endl;int b=1,c,d=0;for(i=1;i<=k;i+) b*=10; /cout<<b<<endl; cout<<"你輸入的數(shù)字各位分別是:"for(i=k;i>0;i-) b=b/10; c=m/b; m=m-c*b; d+=c; cout<<c<<" "cout<<endl;/cout<<"你輸入的數(shù)字是"<<k&

21、lt;<"位數(shù)n"cout<<"各位上的數(shù)字之和為:"<<d<<endl;x=0;do x=x*10+y%10; y=y/10;while(y!=0);cout<<"逆序輸出為:"<<x;cout<<endl;17、一個正整數(shù)如果恰好等于它的因子之和,這個數(shù)稱為“完數(shù)”,如6=1+2+3。求1000以內(nèi)所有的完數(shù),每行5個。#include <iostream>#include <cmath>using namespace std;i

22、nt main()int m,i;cout<<"1000以內(nèi)的完數(shù)有:"for(m=1;m<1001;m+)int c=0,n=0; for(i=1;i<m;i+)if(m%i=0)c=c+i;if (c=m)n+;cout<<c<<" "if(n%5=0)cout<<endl;cout<<endl;return 0;18、 用迭代法求x=a的平方根。求平方根的迭代公式為xn+1=0.5(xn+a/xn) 。要求前后兩次求出的x的差的絕對值小于1e-5為止。#include <

23、iostream>#include <cmath>#include <cstdio>using namespace std;int main()double x1,x2,a,b;x2=0;x1=1.0;b=1.0;cin>>a;while(b>=1e-5)x2=(x1+a/x1)/2;b=fabs(x2-x1);x1=x2;cout<<x2<<endl;return 0;19、 用牛頓迭代法求方程在1.5附近的根 2x3-4x2+3x-6=0#include <iostream>#include <cma

24、th>#include <cstdio>using namespace std;int main()double x=1.5,x0,f,f1;do x0=x;f=2*x0*x0*x0-4*x0*x0+3*x0-6;f1=6*x0*x0-8*x+3;x=x0-f/f1; while(fabs(x-x0)>=1e-5);cout<<"x0="<<x0<<endl;return 0;20、 用二分法求上面的方程在(-10,10)之間的根#include <iostream>using namespace st

25、d;double fun(double x)return 2*x*x*x-4*x*x+3*x-6;double judge(double e,double a,double b)double c;c=(a+b)/2;if(b-a<=e) return c;elseif(fun(c)=0)return c;else if(fun(a)*fun(c)<0)/b=c;return judge(e,a,c);else/a=c;return judge(e,c,b);int main()double e; cout<<"請輸入精確度:"<<endl

26、; cin>>e; cout<<judge(e,-10,10)<<endl; return 0;21、 打印形狀為直角三角形的九九乘法表。#include <iostream>using namespace std;int main()int i,j,k;for(i=1;i<=9;i+) for(j=1;j<=i;j+) cout<<j<<"x"<<i<<"=" k=i*j; cout<<k<<" " i

27、f(i=j) cout<<endl; return 0;22、 百馬百擔(dān)問題。有100匹馬,馱100擔(dān)貨,大馬馱3擔(dān),中馬馱2擔(dān),兩匹小馬馱1擔(dān),問有大中小馬多少匹,共有多少組解?#include <iostream>using namespace std;int main()int x,y,z;int m=0;for(x=1;x<100;x+) for(y=1;y<100;y+) for(z=1;z<100;z+) if(x+y+z=100)&&(6*x+4*y+z=200) m+; cout<<"第"

28、<<m<<"種方案。"<<endl; cout<<"大馬:"<<x<<" " cout<<"中馬:"<<y<<" " cout<<"小馬:"<<z<<endl; return 0;23、 數(shù)列1,2,2,3,3,3,4,4,4,4,5, 問第100是多少?#include <iostream>using namespace

29、 std;int main()int i,m,n=0; for(i=1;i<101;i+) for(m=1;m<=i;m+) n+; if(n=100) cout<<"第100個數(shù):"<<i<<endl; return 0;24、 求任意一個整數(shù)的十位上的數(shù)字。#include <iostream>using namespace std;int main()int m,n,x;cout<<"請輸入一個數(shù):"cin>>m;n=m%10;m=(m-n)/10;x=m%10;c

30、out<<endl;cout<<"其十位數(shù)為:"<<x<<endl;return 0;25、 輸入三個實數(shù),判斷能否構(gòu)成三角形;若能,再說明是何種類型的三角形。#include <iostream>using namespace std;int main()int a,b,c;cout<<"請輸入任意三個數(shù):"cin>>a>>b>>c;if(a+b)>c&&(a+c)>b&&(b+c)>a&

31、&(a-b)<c&&(a-c)<b&&(b-c)<a) if(a=b|a=c|b=c)cout<<"是等腰三角形"else if(a=b&&a=c)cout<<"是等邊三角形"else if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)cout<<"是直角三角形"else cout<<"是普通三角形"else cout<<"不可以構(gòu)成三角形。&q

32、uot;<<endl;return 0;26、 輸入任意的a,b,c求一元二次方程ax*x+bx+c=0的根。#include <iostream>#include <cmath>using namespace std;int main()int a,b,c;cout<<"請輸入任意三個數(shù)a,b,c:"<<endl;cin>>a>>b>>c; float x1,x2,d; d=sqrt(b*b-4*a*c); if(d>=0) x1=(-b+d)/(2*a); x2=(-b

33、-d)/(2*a); cout<<"x1="<<x1<<endl; cout<<"x2="<<x2<<endl; else cout<<"無解"<<endl;return 0;27、 將百分制成績轉(zhuǎn)換為五級制成績#include <iostream>using namespace std;int main()int s; cout<<"請輸入分數(shù):" cin>>s;if(s>10

34、0|s<0)cout<<"輸入有誤!" else if(s>0&&s<60)cout<<"不及格" else if(s>=60&&s<80) cout<<"及格" else if(s>=80&&s<90) cout<<"良好" else if(s>=90&&s<=100) cout<<"優(yōu)秀" return 0;28、

35、輸入年月日,判斷它是該年的第多少天。#include <iostream>using namespace std;int main()int year,month,day,days=0,i;cout<<"請輸入年月日"<<endl;cout<<"請輸入年:"cin>>year;cout<<"請輸入月:"cin>>month;cout<<"請輸入日:"cin>>day; if(year>10000|yea

36、r<0|month<0|month>13|day<0|day>31) cout<<"有誤!"<<endl; else if(year%4=0&&year%100=0|year%400=0) for(i=1;i<month;i+) if(i=1|i=3|i=5|i=7|i=8|i=10|i=12) days+=31; else if(i=4|i=6|i=9|i=11) days+=30; else days+=29; else for(i=1;i<month;i+) if(i=1|i=3|i=5

37、|i=7|i=8|i=10|i=12) days+=31; else if(i=4|i=6|i=9|i=11) days+=30; else days+=28; cout<<"它是該年的第"<<days+day<<"天。"<<endl;return 0;29、 假定2007年的一月一日是星期三,求2009年的4月20日是星期幾。#include <iostream>using namespace std;long alldays(int year,int month,int day);long

38、alldays(int year,int month,int day)int i;long d=0;for(i=1;i<year;i+)if(year%4=0&&year%100=0|year%400=0)d+=366;elsed+=365;for(i=1;i<month;i+)if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)d+=31;else if(i=4|i=6|i=9|i=11)d+=30;else if(year%4=0&&year%100=0|year%400=0) d+=29;else d+=28; return d+

39、day;int main()int date,i,d;long x=alldays(2007,1,1);long y=alldays(2009,4,20); long z=alldays(2009,4,20)-alldays(2007,1,1)+1;cout<<endl;date=3;cout<<"間隔"<<z<<"天"cout<<endl;d=z%7;for(i=1;i<=d;i+)date+;if(date>7)date=date-7;cout<<"星期&q

40、uot;<<date;cout<<endl;return 0;30、 我國古代著名的孫子定理也稱韓信點兵。 /用現(xiàn)代語言講是:有一個數(shù),用3除余2,用5除余3,用7除余2,求滿足條件的最小數(shù)。#include <iostream>using namespace std;int main()int i;for(i=1;i+)if(i%3=2&&i%5=3&&i%7=2)break;else;cout<<i<<endl;return 0;31、 求一個整數(shù)的各個數(shù)位上的數(shù)字之和并反序輸出。#include

41、<iostream>using namespace std;int main()int m1,m2,j=10,i,d=0,a20;cout<<"請輸入任意一個數(shù)"<<endl;cin>>m1;m2=m1;cout<<"反序輸出各位數(shù)"<<endl;for(i=1;i+)m1=m2%j;m2=m2/j;ai=m1; cout<<m1<<" " d+=m1;if(m2<1)break;cout<<endl;cout<&l

42、t;"各位數(shù)之和為"<<d<<endl;return 0;32、 求1+2+3+前n項的和。#include <iostream>using namespace std;int main()int i,n,s=0;cout<<"請輸入一個n值:"<<endl;cin>>n;for(i=1;i<=n;i+)s+=i;cout<<"前n項和為:"<<s<<endl;return 0;33、 求1-3+5-7+的前100項的和。

43、方法1:#include <iostream>using namespace std;int main()int i,n=1,m=3,s,s1=0,s2=0;for(i=1;i<=100;i+)s1+=n; n+=2; for(i=1;i<=50;i+)s2+=m;m+=4;s=s1-2*s2;cout<<"前100項和為:"<<s<<endl;return 0;方法2:#include<iostream.h> void main() int a=1,b=-1,i,j; int m=1,n=1,sum=

44、0; for(i=1;i<=100;i+) a*=b; n=m*a; sum+=n; m+=2; cout<<-sum; cout<<endl; 34、 求1+(1+2)+(1+2+3)+(1+2+3+4)+的前n項的和#include <iostream>using namespace std;int main()int i,n,s=0,s1=0;cin>>n;for(i=1;i<=n;i+)s1+=i; s+=s1;cout<<"前n項和:"<<s<<endl;35、 求n!

45、#include <iostream>using namespace std;int main()int i,n;cin>>n;for(i=n-1;i>=1;i-)n*=i; cout<<"n!:"<<n<<endl;return 0;36、 求1!+2!+3!+n!#include <iostream>using namespace std;int main()int i,n,s=0,m=1;cin>>n;for(i=1;i<=n;i+) m*=i;s+=m; cout<

46、<"1!+2!+.+"<<n<<"!="<<s<<endl;return 0;37、 求1!-3!+5!-7!+前n項的和#include <iostream>using namespace std;int main()int m,n=1,x=1,y=-1,sum=0;double a,b=1,s=0;cin>>m;for(int i=1;i<=m;i+)n=2*i-1;a=1;for(int j=1;j<=n;j+)x*=y;a*=j;b=a*(-x);sum+=

47、b;cout<<sum<<" "<<endl;return 0;38、 求1*2+2*3+3*4+前n項的和#include <iostream>using namespace std;int main() int m,i,n,s=0; cin>>n;for(i=1;i<=n;i+)m=i*(i+1);s+=m;cout<<s<<" "<<endl;return 0;39、 從鍵盤輸入一個整數(shù),判斷它是否為素數(shù)#include <iostream&

48、gt;using namespace std;int main()int n,i,m;cin>>n;for(i=2;i<n;i+)m=n%i;if(m=0)break;if(m=0)cout<<"不是素數(shù)。"<<endl; elsecout<<"是素數(shù)。"<<endl;return 0;40、 求3到1000之間的所有素數(shù)的和。#include <iostream>#include <cmath>using namespace std;int main()int n

49、,i,k,s=0,j=0;for(n=3;n<=1000;n+) k=sqrt(n); for(i=2;i<=k;i+) if(n%i=0) break; if(i>k) cout<<n<<" " s+=n; j+; if(j%8=0) cout<<endl; cout<<endl;cout<<"s="<<s<<endl;return 0;41、 驗證哥德巴赫猜想:一個大于2的偶數(shù)總可以分解成兩個素數(shù)的和。#include <iostream>

50、;#include <cmath>using namespace std;int f(int x);int f(int a)/判斷是否是素數(shù) int i,j; j=sqrt(a); for(i=2;i<=j;i+) if(a%i=0) break; if(i>j) return 1; else return 0;void main()int n,m,i,k;cout<<"請輸入一個大于2偶數(shù):"<<endl;cin>>m;if(m<2|m%2!=0)cout<<"輸入有誤!"&

51、lt;<endl; else cout<<"偶數(shù)"<<m<<"可以拆成兩個素數(shù)之和"<<endl; for(i=1;i<=m/2;i+) n=i; k=m-i; if(f(n)&&f(k) cout<<" "<<n<<" "<<k<<endl; 42、 設(shè)s=1+1/2+1/3+1/n,求與8最接近的s的值及與之對應(yīng)的n值。#include <iostream>#inc

52、lude <cmath>using namespace std;void main()float i,n,s=0;for(i=1;i;i+)n=1/i;s+=n;if(fabs(s-8)<=1E-3)break;cout<<s<<endl;cout<<i<<endl;43、 假定2007年的一月一日是星期三,打印出該年的日歷(仿照臺歷或掛歷樣式)#include <iostream>#include <cmath>using namespace std;void main()cout<<"2007年的日歷"<<endl;int xq=1;for(int i=1;i<13;i+)cout<&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論