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

上传人:b****6 文档编号:5590315 上传时间:2022-12-28 格式:DOCX 页数:22 大小:19.93KB
下载 相关 举报
50道C++编程练习题及解答c 编程例题.docx_第1页
第1页 / 共22页
50道C++编程练习题及解答c 编程例题.docx_第2页
第2页 / 共22页
50道C++编程练习题及解答c 编程例题.docx_第3页
第3页 / 共22页
50道C++编程练习题及解答c 编程例题.docx_第4页
第4页 / 共22页
50道C++编程练习题及解答c 编程例题.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

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

《50道C++编程练习题及解答c 编程例题.docx》由会员分享,可在线阅读,更多相关《50道C++编程练习题及解答c 编程例题.docx(22页珍藏版)》请在冰豆网上搜索。

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

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

50道C/C++编程演习题【2】

1.输入3个数,求最大值

intmain()

{inta,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

usingnamespacestd;

intmain()

{

doublea,b,c,d,x1,x2;

cin>>a>>b>>c;

if(a==0)

if(b==0)cout<<"error\n";

elsecout<<"x="<<-c/b<

else

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

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

cout<<"x1=x2="<<-b/(2*a)<

elseif(d>1e-6)

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

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

cout<<"x1="<

}

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

}

}

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

intmain()

{inta;

cin>>a;

if(a>=90)cout<<"A";

elseif(a>=80)cout<<"B";

elseif(a>=70)cout<<"C";

elseif(a>=60)cout<<"D";

elsecout<<"E";

}

4.输入3个double类型的值,断定这3个值是否可以表示一个三角形的三条边.

intmain()

{

doublea,b,c;

cin>>a>>b>>c;

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

cout<<"可以组成三角形";

else

cout<<"不可以组成三角形";

}

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

intmain()

{

inti;

inta,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

s=s+a;

}

cout<

}

6.输入若干个数,设输入的第一个数为后面要输入的数的个数,求平均值及最大值.

intmain()

{

inta,m,s=0;

cin>>n;

cin>>a;

m=a;s=a;

for(inti=1;i

{cin>>a;

s+=a;

if(a>m)m=a;

}

cout<<"平均值:

"<<(double)s/n<<",最大值:

"<

}

7.输入若干个数,输入-999表示停止,求平均值及最大值.

#include

#include

#include

usingnamespacestd;

intmain()

{intn,count,sum,max;

doubleave;

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<

:

fixed)<

(2);

cout<<"平均值为:

"<

"<

}

}

8.乞降s=1*1+2*2+3*3+...+100*100

intmain()

{inti,t;

doubles=0;

for(i=1;i<=100;i++)

{t=i*i;

s=s+t;

}

}

9.印度国王的嘉奖,乞降s=20+21+22+...+263

intmain()

{doublet=1,s=0;

for(inti=0;i<=63;i++)

{s=s+t;

t=2*t;

}

cout<

}

10.乞降s=1!

+2!

+3!

+...+10!

intmain()

{inti;

longt,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!

+...

intmain()

{inti;

doublet,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+...

intmain()

{inti,k;

doublepi,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

intmain()

{

inti,j;

doublepi,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个数,统计个中正数.负数和零的个数.

intmain()

{

inta,n=0,m=0,s=0;

for(inti=1;i<=20;i++)

{cin>>a;

if(a>0)n++;

elseif(a<0)m++;

elses++;

}

cout<

}

15.输入若干个整数,盘算个中的奇数之和与偶数之和,假设输入0表示停止.

intmain()

{inta,n=0,m=0;

cin>>a;

while(a!

=0)

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

elsem+=a;

cin>>a;

}

cout<

}

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

intpow(intx,inty)

{ints=1;

for(inti=1;i<=y;i++)

s=s*x;

returns;

}

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

intmain()

{inti,a,b,c;

for(i=100;i<=999;i++)

{a=i/100;

b=i/10%10;

c=i%10;

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

cout<

}

}

intmain()

{inti,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<

}

}

18.编写一个函数,肯定一个整数是否为完整数(一个数,等于他的因子之和).用这个函数肯定和打印1到1000之间的所有完整数.

intperfect(intn)

{inti,s=1;

for(i=2;i<=n/2;i++)

if(n%i==0)s=s+i;

if(s==n)return1;

elsereturn0;

}

intmain()

{intn;

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

ifperfect(n)

cout<

}

19.写一函数,求斐波那契数列的第n项.

intfib(intn)

{

inti,f1,f2,f;

if(n==1||n==2)return1;

f1=1;f2=1;

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

{f=f1+f2;

f1=f2;

f2=f;

}

returnf;

}

20.写一个函数,取一个整数值并返回将此整数的各数字反序的数值

intreverse(intn)

{ints=0;

while(n)

{s=s*10+n%10;

n/=10;

};

returns;

}

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

voidshow(intn)

{while(n)

{cout<

n/=10;

};

}

voidshow(intn)

{if(n<10)cout<

else

{cout<

show(n/10);

}

}

22.写一个函数,将一个整数的列位数字的按次序打印出来

voidshow(intn)

{

intk=1,m=n;

while(m>10)

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

while(n)

{cout<

n%=k;

k/=10;

};

}

voidshow(intn)

{inta[10],i=0;

while(n)

{a[i]=n%10;

n/=10;

i++;

}

for(intj=i-1;j>=0;j--)

cout<

}

voidshow(intn)

{if(n<10)cout<

else

{show(n/10);

cout<<""<

}

}

23.求一个整数的列位数之和的函数

intsum(intn)

{ints=0;

while(n)

{s+=n%10;

n/=10;

};

returns;

}

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

#include

#include

#include

usingnamespacestd;

boolisprime(intn)

{floatk=sqrt(float(n));

for(inti=2;i<=k;i++)

if(n%i==0)returnfalse;

returntrue;

}

intmain()

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

if(isprime(n))cout<

}

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

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

inti,k,a[1001];

for(i=2;i<=1000;i++)a[i]=1;

floats=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.断定某一年是否闰年的函数

boolIsLeapYear(inty)

{return(y%4==0&&y%100!

=0)||(y%400==0);

}

27.写一个函数,交流两个整型变量的值

voidswap(int*p,int*q)

{intt;

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

}

voidswap(int&a,int&b)

{intt;

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

}

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

intgcd(intm,intn)

{intk;

while(n!

=0)

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

returnm;

}

intgcd(intm,intn)

{intk;

while((k=m%n)!

=0)

{m=n;n=k;}

returnn;

}

intgcd(intm,intn)

{while(m!

=n)

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

elsen=n-m;

}

returnm;

}

29.求两个数的最小公倍数

intlcm(intm,intn)

{intt,s;

if(m

s=m;

while(s%n!

=0)s=s+m;

}

intlcm(intm,intn)

{

returnm*n/gcd(m,n);

}

30.百钱买百鸡问题:

鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁.母.雏各几何?

intmain()

{

intcock,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.编一程序,输入一行字符串,统计个中的小写英文字母的个数.

intmain()

{chars[100];

cin.getline(s,100);

inti=0,count=0;

while(s[i]!

='\0')

{if(s[i]>='a'&&s[i]<='z')

count++;

i++;

}

cout<

}

32.编一程序,输入一行字符串,将个中的大写英文字母改为小写,再输出.

intmain()

{chars[100];

inti;

cin.getline(s,100);

i=0;

while(s[i]!

='\0')

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

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

cout<

}

33.打印杨辉三角形(帕斯卡三角形),打印10行.

#include

#include

usingnamespacestd;

intmain()

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

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

{a[i][0]=1;

a[i][i]=1;

}

for(inti=1;i<10;i++)

for(intj=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

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

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

cout<

cout<

}

}

34.打印一个九九乘法表

#include

#include

usingnamespacestd;

intmain()

{

for(intj=1;j<=9;j++)

{for(inti=1;i<=j;i++)

cout<

(2)<

cout<

}

}

35.掷骰子10000次,统计得到各点数的次数.

intmain()

{inta[7]={0};

srand(time(0));

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

++a[1+rand()%6];

for(inti=1;i<=6;++i)

cout<

"<

}

36.编写函数distance,盘算两点(x1,y1)和(x2,y2)之间的距离.

doubledistance(doublex1,doubley1,doublex2,doubley2)

{

returnsqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

}

37.写一个程序,进行体操评分,依次输入10名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分.

intmain()

{inti;

floatmax,min,s,x;

max=0;min=10;s=0;

for(i=1;i<=10;i++)

{cin>>x;

s=s+x;

if(x

if(x>max)max=x;

}

s=s-min-max;

cout<

}

38.写一函数,将一数组中的元素反转.

voidreverse(inta[],intn)

{for(inti=0;i

swap(a[i],a[n-i-1]);

}

39.写一函数,在一个数组中找出最大元素的地位

intSearchMax(inta[],intn)

{intk=0;

for(inti=1;i

if(a[i]>a[k])k=i;

returnk;

}

40.找出一个二维数组中的鞍点,即该元素在该行上最大,在该列上最小.

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

voidstrcpy(char*p,constchar*q)

{

while(*p++=*q++);

}

char*strcpy(char*str1,constchar*str2)

{

char*p=str1;

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

returnp;

}

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

intstrcmp(char*str1,constchar*str2)

{

while(*str1&&*str2&&*str1==*str2)

{str1++;str2++;}

return*str1-*str2;

}

intstrcmp(char*str1,constchar*str2)

{

while(*str1==*str2)

{if(*str1=='\0')return0;

str1++;str2++;

}

return*str1-*str2;

}

43.写一个字符串衔接函数

char*strcat(char*str1,char*str2)

{

char*p=str1;

while(*str1!

=0)str1++;

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

returnp;

}

44.写一个求字符串长度函数

intstrlen(char*str)

{

intn=0;

while(*str!

='\0')

{n++;str++;}

returnn;

}

45.写一函数,在一数组里查找某个值.

intsearch(inta[],intn,intkey)

{for(inti=0;i

if(a[i]==key)

returni;

return-1;

}

46.编一程序,求两个矩阵的乘积

47.盘算某日是某年的第几天

boolisLeapYear(inty)//断定某一年是否闰年

{

return(y%4==0&&y%100!

=0)||(y%400==0);

}

intmain()

{

intyear,month,day,i,s=0;

inta[13]=(0,31,28,31,30,31,30,31,31,30,31,30,31};

cin>>year>>month>>day;

for(i=1;i

s=s+a[i];

s=s+day;

if(isLeapYear(year)&&month>2)s++;

cout<

}

48.编写一个关心小学生进修加法的程序,随机产生2个数,让学生输入答案.

#include

#include

usingnamespacestd;

intmain()

{

intx,y,z;

srand(time(0));

x=rand()%1000;

y=rand()%1

展开阅读全文
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1