50道C编程练习题及解答_第1页
50道C编程练习题及解答_第2页
50道C编程练习题及解答_第3页
50道C编程练习题及解答_第4页
50道C编程练习题及解答_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

1.输入3个数,求最大值elseif(a>=60)cout«/,D*;

intmainOelsecout«"E";

{inta,b,c,m;(

c:n»a>>b»c;4.输入3个double类型的值,判断这3个值是否

m=a;可以表示一个三角形的三条边。

if(b>m)m=b;intmainO

if(c>m)m=c;(

cout<<m;doublea,b,c;

}cin»a»b>>c;

if(a+b>c&&b+c>a&&c+a>b)

2.编程序,求方程ax2+bx+c=0的根cout〈,可以构成三角形”;

#include<iostream>else

#include<cmath>cout<<"不可以构成三角形”;

usingnamespacestd;)

intmainO

(5.输入20个数,求其最大、最小和平均值

doublea,b,c,d,xl,x2;intmainO

cm»a>>b»c;(

if(a==O)inti;

if(b==0)cout«*error\n*;inta,max,min,s;

elsecout«z,x=z*«-c/b«endl;cin»a;

elsemax=min=a;s=a;

{d=b*b-4*a*c;for(i=l;i<20;i++)

if(fabs(d)<=le-6){cin»a;

coul«/,xl-x2-/,«-b/(2*a)«sndl;if(a>max)max-a;

elseif(d>le-6)if(a<min)min=a;

{xl=(-b+sqrt(d))/(2*a);s=s+a;

x2=(-b-sqrt(d))/(2*a);}

cout«z,xl=,z«xK<,z,x2=*<<x2«endl;cout«max«z,,/z<<min«w,v«s/20.0«endl;

))

elsecout<<”方程无实根\n”;

I6.输入若干个数,设输入的第一个数为后面要输

}入的数的个数,求平均值及最大值。

intmainO

3.输入一个成绩,打印相应的等级(

intmain()inta,m,s=0;

{inta;cin»n;

cm»a;cin»a;

if(a>=90)coui«"A";m=a:s=a;

elseif(a>=80)cout«"B";for(inti=l;i<n;i++)

e-seif(a>=70)cout«"C”;{cin»a;

s+=a;tor(inti=U;i<=63;1++)

if(a>m)m=a;{s=s+t;

)t=2*t;

cout<<"平均值:"<<(double)s/n<<:最大值:}

*«n«endl:cout«s/l.4e8«endl;

}}

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

及最大值。10、求和s=l!+2!+3!+...+10

itinclude<iostream>intmain()

#include<iomanip>{inti;

#include<csldlib>longl,s;

usingnamespacestd;t=l;s=0;

intmain()for(i=l;i<=10;i++)

{intn,count,sum,max;{t=t*i;

doubleave;s=s+t;

count=0;}

cm»n;(

sum=0;max=n;

while(n!=-999)11.求e=l+1/1!+1/2!+1/3!+

{sum=sum+n;intmainO

if(n>max)max=n;(inti;

count++;doublet,e;

cin>>n;1—1,l—l,0-1,

}while(t>=le-7)

if(count!=0){t=t/i;

{ave=staticcast<double>(sum)/count;e=e+t;

cout<<setiosflags(ios::fixed)i=i+l;

〈〈setprecision(2);)

cout<<“平均值为:〃<<ave<<”最大值为:cout«e;

^<<nax«endl;)

i

J

}12.求PI值,PIA=1-1/3+1/5~1/7+...

intmainO

8、求和s=l*l+2*2+3*3+...+100*100{inti,k;

intmainOdoublepi,t;

{inti,t;i=l;t=l;pi=0;k=l;

doubles=0;while(fabs(t)>le-8)

for(i=l:i<=100;i++){pi=pi+t:

{t=i*i:i=i+2;

s=s+t;k=-k;

)t=double(k)/i:

})

cout«4*pi;

9、印度国王的奖励,求和s=20+21+22+...+}

263

intmain()13.求PI值,PI/2=1+1/3-1/3*2/5+

(doublet=l,s=0;l/3*2/5*3/7+...

^include<iostream>s=s*x;

#include<cstdlib>returns;

intmain()}

(

inti,j;17、求水仙花数(一个三位数,其各位数字立方和

doublepi,t;等于该数字本身〉

i=0;j=l;t=l;pi=0;intmainO

while(t>le-18){inti,a,b,c;

{pi=pi+t;for(i=100;i<=999;i++)

i=i+l:{a=i/100:

J-J+2;b-i/10%10;

t=t*i/j;c=i%10;

}if(i==a*a*a+b*b*b+c*c*c)

cout«setprecision(17)«2*pi;cout<<i«endl;

})

)

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

intmain()intmain()

({inti,a,b,c;

inta,n=0,m=0,s=0;for(a=l;a<=9;a++)

for(inti=l;i<=20;i++)for(b-0;b<=9;b++)

{cin»a;for(c=0;c<=9;c++)

if(a>0)n++;{i=a*100+b*10+c;

elseif(a<0)m++;if(i==a*a*a+b*b*b+c*c*c)

elses++;cout<<i«cndl:

)

cout«n«z,”<<s;

}

18、编写一个函数,确定一个整数是否为完全数

15.输入若干个整数,计算其中的奇数之和与偶数(一个数,等于他的因子之和)。用这个函数确定

之和,假设输入。表示结束.和打印1到1000之间的所有完全数.

intmain()intperfect(intn)

{inta,n=0,m=0:{inti,s=l;

cm»a;for(i=2;i<=n/2;i++)

while(a!=0)if(n%i==0)s=s+i;

{if(a%2==0)n+=a;;if(s==n)return1;

elsem+=a;elsereturn0;

cin>>a;)

)intmainO

cout<<n«/,”<<m;{intn;

|for(n=2:n<=1000:n++)

ifperfect(n)

16.写一函数,计算x的y次方(假设x、y都为正cout<<n«en(ll;

整数)。)

intpow(intx,inty)

{ints=l;19、写一函数,求斐波那契数列的第n项。

for(inti=l;i<=y;i++)intfib(intn)

while(n)

intf;{cout«n/k«

if(n==l||n==2)return1;n%=k;

fl=l;f2=l;k/=10;

for(i=3;i<=n;i++)};

{f=fl+f2;

fl=f2;

f2=f;voidshow(intn)

){inta[l0],i=0;

returnf;while(n)

}{a[i]-ii%10;

n/=10;

20、写•个函数,取•个整数值并返回将此整数的i++;

各数字反序的数值)

intreverse(intn)for(intj=i-l;j>=0;j­)

{ints=0;cout«a[j]«*

while(n)(

{s=s*10+n%10;

n/=10;voidshow(intn)

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

return3;else

}{show(n/10);

cout<<""«n%10;

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

印)

voidshow(intn)

(while(n)23.求一个整数的各位数之和的函数

{cout«n%10«intsum(intn)

n/=10;{ints=0;

);whilc(n)

{s+=n%10;

n/=10;

voidshow(intn));

{if(n<10)cout«n:returns;

else)

{cout«n%10

show(n/10);24.写一函数,判断某个数是否素数,以及求1-

}1000之内的素数

}#includc<iostrcam>

#include<cmath>

22.写一个函数,将一个整数的各位数字的按顺序#include<stdlib.h>

打印出来usingnamespacestd;

voidshow(intn)boolisprime(intn)

((floatk=sqrt(float(n));

intk=1,m=n;for(inti=2;i<=k;i++)

whi1e(m>10)if(n%i==0)returnfalse;

{k*=10;m/=10;}returntrue;

}intgcd(intm,intn)

intmainO{intk;

{for(intn=2;n<=1000:n++)while(n!=0)

if(isprime(n))cout«setw(5)«n;{k=m%n;m=n;n=k;}

}returnm;

}

25.用筛法求1—1000之内的素数

#include<iostream>intgcd(intm,intn)

#include<cmath>{intk;

#include<stdlib.h>while((k=n^n)!=0)

includc<iomanip>{rn-n;n-k;}

usingnamespacestd;returnn;

intmain())

(

inti,k,a[1001]:intgcd(intm,intn)

for(i=2;i<=1000;i++)a[i]=l;(whilc(m!=n)

floats=sqrt(float(1000));{if(m>n)m=m-n;

for(i=2;i<=s;i++)elsen=n-m;

if(a[i]=l)}

{k=2*i;returnm;

while(k<=1000))

{a[k]=0;

k=k+i;29、求两个数的最小公倍数

}intlcm(intm,intn)

){intt,s;

for(i=2;i<=1000;i++)if(m<n){t=m;m=n;n=t;}

if(a[i]==1)cout«setw(5)«i;s=m;

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

26.判断某一年是否闰年的函数}

boolIsLeapYcar(inty)

{return(y%4==0&&y%100!=0)||(y%400二intlcm(intm,intn)

0);(

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

)

27、写一个函数,交换两个整型变量的值

voidswap(int*p,int*q)30、百钱买百鸡问题:鸡翁一值钱五,鸡母一值钱

{intt;三,鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏

t=*p;*p=*q;*q=t;各几何?

}intmainO

(

voidswap(int&a,int&b)intcock.hen,chick:

{intt;for(cock=0;cock<=20;cock++)

t=a;a=b;b=t;for(hen=0;hen<=33;hen++)

}{chick=100-cock-hen;

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

28、求两个数的最大公约数,欧儿里德算法(根转相cout«setw(4)«cock«setw(4)<<hen

除法)«setw(4)«chick«endl:

)}

}

31.编一程序,输入一行字符串,统计其中的小写34.打印一个九九乘法表

英文字母的个数。#include<iostream>

intmainO#includc<iomanip>

{chars[100];usingnamespacestd;

c:n.getline(s,100);intmainO

inti=0,count=0;I

while(s[i]\0*)for(intj=l;j<=9;j++)

{a*&&sEiK-z*){for(inii-1;i<-j;i++)

count++;cout«i«***«j«*=*«setw(2)«i*j<<*

i++;t

)cout«endl;

cout«count«endl;)

}}

32.编一程序,输入一行字符串,将其中的大写英35.掷骰子10000次,统计得到各点数的次数。

文字母改为小写,再输出。intmainO

intmainO{inta[7]={0};

{char3[100];srand(time(0));

inti;for(inti=l;i<=10000;++i)

c:n.get]ine(s,100);++a[1+rand()%6];

i=0;for(inti=l;i<=6;++i)

while(s[i]!=\0')cout«i«/,:*«a[i]«endl;

if(s[i]>=&&s[i]<=Z')}

s[i]=s[i]+32;

cout«s«endl;36.编写函数distance,计算两点(xl,yl)和

}(x2,y2)之间的距离。

doubledistance(doublexl,doubleyl,double

3工?T印杨辉三角形(帕斯卡三角形)打印10行.x2,doubley2)

#inc1ude<iostream>I

#include<iomanip>returnsqrt((xl-x2)*(xl-x2)+

usingnamespacesld;(yl-y2)*(yl-y2)):

intmainO)

{inta[10][10]={0};

for(inti=0;i<10;i++)37、写一个程序,进行体操评分,依次输入10名

{a[i][0]=l;评委所评分数,去除一个最高分和一个最低分,

a[i][i]=l;再算出平均分作为选手的得分。

}intmainO

for(inti=l:i<10:i++){inti:

for(intj=l;j<i;j++)floatmax,min,s,x;

a[i][j]=a[i-l][j-l]+a[i-l][j];max=0;min=10;s=0;

for(inti=0;i<10;i++)for(i=l;i<=10;i++)

{for(intj=0;j<=i;j++){cin»x;

cout«setw(4)«a[i][j];s=s+x;

cout<<endl;if(x<min)min=x;

if(x>max)max=x;{ii(*strl=>\0')return0;

)strl++;str2++;

s=s-min-max;}

cout<<s/8;return*strl-*str2;

})

38、写一函数,将一数组中的元素反转。43.写一个字符串连接函数

voidreverse(inta[],intn)char*strcat(char*strl,char*str2)

{for(inti=0;i<n/2;i++)I

swap(a[i],a[n-i-l]);char*p=strl;

}whilc(*sirl!-0)slrl++;

while(*strl++=*str2++);

39、写一函数,在一个数组中找出最大元素的位置returnp;

intSeai'chMax(inta[],intn)}

{intk=0;

for(inti=l;i<n;i++)44.写一个求字符串长度函数

if(a[i]>a[k])k=i;intstrlen(char*str)

returnk;I

}intn=0;

while(*str!-\0f)

40、找出一个二维数组中的鞍点,即该元素在该行{n++;3tr++;}

上最大,在该列上最小。returnn;

}

41.写一个字符串拷贝函数

voidstrcpy(char*p,constchar*q)45.写一函数,在一数组里查找某个值。

(intsearch(inta[],intn,intkey)

while(*p++=*q++);{for(inti=0;i<n;i++)

}if(a[i]==key)

returni;

char*strcpy(char*strl,constcnar*str2)return-1:

()

char*p=str1;

while(*strl++=*str2++);46.编一程序,求两个矩阵的乘积

returnp;

}47、计算某日是某年的第几天

boolisLeapYear(inty)〃判断某一年是否闰

42.写一个字符串比较函数年

intstrcmp(char*strl,constchar*str2)(

(return(y%4==0&&y%100!=0)||(y%400==

while(*strl&&*str2&&*strl==*str2)0);

{strl++:str2++:}}

return*strl-*str2;

}intmainO

(

intstrcmp(char*strl,constchar*str2)intyear,month,day,i,s=0;

(int

while(*strl==*str2)a[13]=(0,31,28,31,30,31,30,31,31,30,31,30,3

1):swap(a[k],a[bl-i]);

cm»ycar»nionth»day:}

for(i=l;i<month;i++)for(i=0;i<13;i++)cout«b[i]«*

s=s+a[i];)

s=s+day;

if(isLeapYear(year)&&month>2)s++;50、求100!

cout«s;#include<fstream>

}#include<cmath>

#include<iomanip>

48、编写一个帮助小学生学习加法的程序,随机产usingnamespacestd;

生2个数,让学生输入答案。constlongMOD-10000;

#include<iostream>intmainO

#include<cstdlib>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论