好文档 - 专业文书写作范文服务资料分享网站

50道C++编程练习题及解答-c 编程例题

天下 分享 时间: 加入收藏 我要投稿 点赞

50道C/C++编程练习题

1、输入3个数,求最大值 int main() { int a,b,c,m; cin>>a>>b>>c; m=a;

if(b>m) m=b; if(c>m) m=c; cout<

2、编程序,求方程ax2+bx+c=0的根 #include #include

using namespace std; int main() {

double a,b,c,d,x1,x2; cin>>a>>b>>c; if(a==0)

if(b==0) cout<<\ else cout<< \ else

{ d=b*b-4*a*c;

if(fabs(d)<=1e-6)

cout<<\ else if(d>1e-6)

{ x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a);

cout<<\ }

else cout<<\方程无实根\\n\ } }

3、输入一个成绩,打印相应的等级 int main() { int a; cin >> a;

if(a>=90) cout<<\

else if(a>=80) cout<<\ else if(a>=70) cout<<\ else if(a>=60) cout<<\ else cout<<\}

4、输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边。 int main() {

double a,b,c; cin>>a>>b>>c;

if(a+b>c && b+c>a && c+a>b) cout<<\可以构成三角形\ else

cout<<\不可以构成三角形\}

5、输入20个数,求其最大、最小和平均值 int main() {

int i;

int a,max,min,s; cin>>a;

max=min=a; s=a; for(i=1;i<20;i++) { cin>>a;

if(a>max) max=a; if(a

cout<

6、输入若干个数,设输入的第一个数为后面要输入的数的个数,求平均值及最大值。 int main() {

int a,m,s=0; cin>>n; cin>>a; m=a; s=a;

for(int i=1; i>a; s +=a;

if(a>m) m=a; }

cout<<\平均值:\,最大值:\}

1

7、输入若干个数,输入-999表示结束,求平均值及最大值。

#include #include #include using namespace std; int main()

{ int n, count, sum, max; double ave; count = 0; cin >> n;

sum = 0; max = n; while( n != -999 ) { sum = sum + n;

if( n > max ) max = n; count++; cin >> n; }

if( count != 0 )

{ ave=static_cast(sum) / count; cout<

<

cout<<\平均值为:\最大值为:\ } }

8、求和 s=1*1 + 2*2 + 3*3 +...+ 100*100 int main() { int i,t; double s=0;

for(i=1; i<=100; i++) { t=i*i; s=s+t; } }

01263

9、印度国王的奖励,求和 s=2 + 2 + 2 +...+ 2 int main()

{ double t=1,s=0;

for(int i=0; i<=63; i++) { s=s+t; t=2*t; }

cout<

2

10、求和 s=1! + 2! + 3! +...+ 10! int main() { int i; long t,s; t=1; s=0;

for(i=1; i<=10; i++) { t=t*i; s=s+t; } }

11、求 e=1 + 1/1! + 1/2! + 1/3! + ... int main() { int i;

double t,e; i=1; t=1; e=1; while(t>=1e-7) { t=t/i; e=e+t; i=i+1; }

cout<

12、求PI值,PI/4 = 1 - 1/3 + 1/5 - 1/7 + ... int main() { int i,k; double pi,t;

i=1; t=1; pi=0; k=1; while(fabs(t)>1e-8) { pi=pi+t; i=i+2; k=-k;

t=double(k)/i; }

cout<<4*pi; }

13、求PI值,PI/2 = 1 + 1/3 + 1/3*2/5 + 1/3*2/5*3/7 + ... #include #include int main() {

int i,j; double pi,t;

i=0; j=1; t=1; pi=0;

while(t>1e-18) { pi=pi+t; i=i+1; j=j+2; t=t*i/j; }

cout<

14、输入20个数,统计其中正数、负数和零的个数。

int main() {

int a,n=0,m=0,s=0;

for(int i=1; i<=20; i++) { cin >> a; if(a>0) n++;

else if(a<0) m++; else s++; }

cout<

15、输入若干个整数,计算其中的奇数之和与偶数之和,假设输入0表示结束。 int main()

{ int a,n=0,m=0; cin>>a; while(a!=0)

{ if(a%2 == 0) n += a;; else m += a; cin >> a; }

cout<

16、写一函数,计算x的y次方(假设x、y都为正整数)。

int pow(int x, int y) { int s=1;

for(int i=1; i<=y; i++) s = s * x; return s; }

17、求水仙花数(一个三位数,其各位数字立方和等于该数字本身)

3

int main() { int i,a,b,c;

for(i=100;i<=999;i++) { a=i/100; b=i/10; c=i;

if(i==a*a*a+b*b*b+c*c*c) cout<

int main() { int i,a,b,c;

for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) { i=a*100+b*10+c;

if(i==a*a*a+b*b*b+c*c*c) cout<

for(i=2;i<=n/2;i++) if(n%i==0) s=s+i; if(s==n) return 1; else return 0; }

int main() { int n;

for(n=2;n<=1000;n++) if perfect(n) cout<

19、写一函数,求斐波那契数列的第n项。 int fib(int n) {

int i,f1,f2,f;

if(n==1||n==2) return 1; f1=1; f2=1;

for(i=3; i<=n; i++) { f=f1+f2;

f1=f2; f2=f; }

return f; }

20、写一个函数,取一个整数值并返回将此整数的各数字反序的数值 int reverse(int n) { int s=0; while(n)

{ s = s * 10 + n % 10; n /= 10; };

return s; }

21、写一个函数,将一个整数的各位数字的反序打印

void show(int n) { while(n)

{ cout << n % 10 << \ n /= 10; }; }

void show(int n)

{ if(n < 10) cout << n; else

{ cout << n % 10 << \ show(n / 10); } }

22、写一个函数,将一个整数的各位数字的按顺序打印出来

void show(int n) {

int k = 1, m = n; while(m > 10)

{ k *= 10; m /= 10; } while(n)

{ cout << n / k << \ n %= k; k /= 10; }; }

4

void show(int n) { int a[10], i=0; while(n)

{ a[i] = n % 10; n /= 10; i++; }

for(int j=i-1; j>=0; j--) cout<

void show(int n)

{ if( n < 10 ) cout << n; else

{ show( n / 10 );

cout << \ } }

23、求一个整数的各位数之和的函数 int sum(int n) { int s = 0; while(n)

{ s += n % 10; n /= 10; };

return s; }

24、写一函数,判断某个数是否素数,以及求1-1000之内的素数

#include #include #include using namespace std; bool isprime(int n)

{ float k=sqrt(float(n)); for(int i=2; i<=k; i++) if(n%i==0) return false; return true; }

int main()

{ for(int n=2; n<=1000; n++)

if(isprime(n)) cout<

25、用筛法求1-1000之内的素数 #include #include #include #include using namespace std; int main() {

int i,k,a[1001];

for(i=2; i<=1000; i++) a[i]=1; float s=sqrt(float(1000)); for(i=2; i<=s; i++) if(a[i]==1) { k=2*i;

while(k<=1000) { a[k]=0; k=k+i; } }

for(i=2; i<=1000; i++)

if(a[i]==1) cout<

26、判断某一年是否闰年的函数 bool IsLeapYear(int y)

{ return (y%4 == 0 && y0 != 0)||(y@0 == 0); }

27、写一个函数,交换两个整型变量的值 void swap(int *p, int *q) { int t;

t=*p; *p=*q; *q=t; }

void swap(int &a, int &b) { int t;

t=a; a=b; b=t; }

28、求两个数的最大公约数,欧几里德算法(辗转相除法)

int gcd(int m, int n) { int k;

while(n!=0)

{ k=m%n; m=n; n=k; } return m; }

5

int gcd(int m, int n) { int k;

while((k=m%n)!=0) { m=n; n=k; } return n; }

int gcd(int m, int n) { while(m!=n)

{ if(m>n) m=m-n; else n=n-m; }

return m; }

29、求两个数的最小公倍数 int lcm(int m, int n) { int t,s;

if(m

while(s%n != 0) s=s+m; }

int lcm(int m, int n) {

return m*n/gcd(m,n); }

30、百钱买百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何? int main() {

int cock,hen,chick;

for(cock=0; cock<=20; cock++) for(hen=0; hen<=33; hen++) { chick=100-cock-hen;

if(5*cock+3*hen+chick/3.0==100) cout<

31、编一程序,输入一行字符串,统计其中的小写英文字母的个数。 int main()

  • 正文标题

  • 上下篇章

  • 相关推荐

  • 精选图文

3ae5s6xzb97yogl1iu3n