C++100例题.docx

上传人:b****4 文档编号:4159606 上传时间:2022-11-28 格式:DOCX 页数:49 大小:27.20KB
下载 相关 举报
C++100例题.docx_第1页
第1页 / 共49页
C++100例题.docx_第2页
第2页 / 共49页
C++100例题.docx_第3页
第3页 / 共49页
C++100例题.docx_第4页
第4页 / 共49页
C++100例题.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

C++100例题.docx

《C++100例题.docx》由会员分享,可在线阅读,更多相关《C++100例题.docx(49页珍藏版)》请在冰豆网上搜索。

C++100例题.docx

C++100例题

/*求任意一个整数的十位上的数字*/

#include

intmain()

{

intx,n;//x为任意一个整数,n为其十位上的数字

cout<<"输入任意一个整数:

";

cin>>x;

n=x/10%10;

cout<

"<

return0;

}

/*输入三个实数,判断能否构成三角形,若能判断是何种三角形*/

#include

#defineRT"直角三角形"

#defineRY"等腰三角形"

#defineRB"等边三角形"

doublecos(doublea,doubleb,doublec)

{

doubletc;//角度值

tc=(a*a+b*b-c*c)/(2*a*b);

returntc;

}

intmain()

{

doublea,b,c;

cout<<"输入三条边长:

";

cin>>a>>b>>c;

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

else{

cout<<"此三边不能构成三角形"<

return0;

}

if(a==b&&b==c)cout<

elseif(cos(a,b,c)>0&&cos(a,c,b)>0&&cos(b,c,a)>0)

{

if(a==b||a==c||b==c)cout<<"锐角等腰三角形"<

elsecout<<"锐角三角形"<

}

elseif(cos(a,b,c)==0||cos(a,c,b)==0||cos(b,c,a)==0)

{

if(a==b||a==c||b==c)cout<<"等腰"<

elsecout<

}

elseif(cos(a,b,c)<0||cos(a,c,b)<0||cos(b,c,a)<0)

{if(a==b||a==c||b==c)cout<<"钝角等腰三角形"<

elsecout<<"钝角三角形"<

}

return0;

}

/*输入任意的a,b,c求一元二次方程ax*x+bx+c=0的根*/

#include

#include

intmain()

{

inta,b,c;

doublex1,x2;

cout<<"输入方程ax*x+bx+c=0的系数:

";

cin>>a>>b>>c;

if(b*b-4*a*c<0){

cout<<"此时方程无解"<

}

elseif(b*b-4*a*c==0){

x1=-1*(b/2/a);

cout<<"此时方程有唯一解为:

"<<"x="<

}

elseif(b*b-4*a*c>0){

x1=(-b-sqrt(b*b-4*a*c))/2/a;

x2=(-b+sqrt(b*b-4*a*c))/2/a;

cout<<"此时方程有两根,分别为x1="<

}

return0;

}

/*将百分制转换为五级制成绩*/

#include

intmain()

{

intscore;

charlieve;

cout<<"输入百分制的成绩:

";

cin>>score;

switch(score/10)

{

case10:

case9:

case8:

lieve='A';break;

case7:

case6:

lieve='B';break;

case5:

case4:

lieve='C';break;

case3:

case2:

lieve='D';break;

case1:

case0:

lieve='E';break;

default:

cout<<"输入成绩有误"<

}

cout<<"其成绩为"<

return0;

}

/*输入年月日,判断它是该年的第多少天*/

#include

intisleap[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},//非润年

{0,31,29,31,30,31,30,31,31,30,31,30,31}};//润年

intmain()

{

intyear,month,day,leap,days=0;

cout<<"输入年、月、日:

";

cin>>year>>month>>day;

if(year%4==0&&year%100!

=0||year%400==0)

leap=1;

elseleap=0;

for(inti=1;i

days+=isleap[leap][i];

days+=day;

cout<<"这一天是这一年的第"<

return0;

}

/*假定2007年的一月一日是星期三,求2009年的4月20日是星期几*/

#include

intisleap[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,30,29,31,30,31,30,31,31,30,31,30,31}};

intmain()

{

intyear,month,day,days=0;

year=2009,month=4,day=20;

intynleap(inti);

for(inti=2007;i

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

days+=isleap[ynleap(i)][j];

for(intj=1;j

days+=isleap[ynleap(year)][j];

days+=day-1;

intflag;

flag=days%7;

switch(flag)

{

case0:

cout<<"这天是星期三"<

case1:

cout<<"这天是星期四"<

case2:

cout<<"这天是星期五"<

case3:

cout<<"这天是星期六"<

case4:

cout<<"这天是星期日"<

case5:

cout<<"这天是星期一"<

case6:

cout<<"这天是星期二"<

default:

cout<<"这不可能"<

}

return0;

}

intynleap(inti)

{

intf;

if(i%4==0&&i%100!

=0||i%400==0)f=1;

elsef=0;

return0;

}

/*韩信点兵*/

#include

intmain()

{

for(inti=1;;i++)

if(i%3==2&&i%5==3&&i%7==2){

cout<<"满足条件的最小整数是"<

return0;

}

}

/*求一个整数的各个数位上的数字之和并反序输出*/

#include

intmain()

{

intyuan,current=0,sum=0;

cout<<"输入原整数";

cin>>yuan;

while(yuan)

{

current=current*10+yuan%10;

sum+=yuan%10;

yuan=yuan/10;

}

cout<<"该数各个数位上的数字的和是"<

cout<<"反序输出是"<

return0;

}

/*求1+2+3+……前n项的和*/

#include

intmain()

{

intn,sum=0;

cout<<"输入相加的共有几项:

n=";

cin>>n;

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

sum+=i;

cout<<"这前"<

return0;

}

/*求1-3+5-7+……的前100项的和*/

#include

intmain()

{

intsum=0,flag=1,count=1;

for(inti=1;count<=100;i=i+2){

sum+=flag*i;

flag=-flag;

count++;

}

cout<<"这样的前100项的和是:

"<

return0;

}

/*求1+(1+2)+(1+2+3)+(1+2+3+4)+……的前n项的和*/

#include

intmain()

{

intn,sum=0;

cout<<"输入相加项数n=";

cin>>n;

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

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

sum+=j;

cout<<"此式前"<

return0;

}

/*求n!

*/

#include

intmain()

{

intn;

doublesum=1;

cout<<"输入阶乘数n=";

cin>>n;

doublejc(intn);

sum=jc(n);

cout<<"n的阶乘是:

"<

return0;

}

doublejc(intn)

{

if(n==1)return1;

elsereturnn*jc(n-1);

}

/*求1!

+2!

+3!

+……+n!

*/

#include

doublejc(inti)

{

if(i==1)return1;

elsereturni*jc(i-1);

}

intmain()

{

doublesum=0;

intn;

cout<<"输入项数n=";

cin>>n;

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

sum+=jc(i);

cout<<"前"<

return0;

}

/*求1!

-3!

+5!

-7!

+……前n项的和*/

#include

doublejc(inti)

{

if(i==1)return1;

elsereturni*jc(i-1);

}

intmain()

{

intn,flag=1,count=0;

doublesum=0;

cout<<"输入项数n=";

cin>>n;

for(inti=1;count

{

sum+=flag*jc(i);

count++;

flag=-flag;

}

cout<<"前"<

return0;

}

/*求1*2+2*3+3*4+……前n项的和*/

#include

doublech(inti)

{

returni*(i+1);

}

intmain()

{

intn;

doublesum=0;

cout<<"输入相加的项数n=";

cin>>n;

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

sum+=ch(i);

cout<<"该式前"<

return0;

}

/*判断一个从键盘输入的数是否为素数*/

#include

#include

intmain()

{

intn;

cout<<"输入一个整数:

";

cin>>n;

for(inti=2;i<=sqrt(n);i++)

if(n%i==0)break;

if(i>sqrt(n))cout<<"这个数是素数"<

elsecout<<"这个数不是素数"<

return0;

}

/*求3到1000之间的所有素数的和*/

#include

#include

intsushu(inti)

{

for(intj=2;j<=sqrt(i);j++)

if(i%j==0)break;

if(j>sqrt(i))returni;

elsereturn0;

}

intmain()

{

doublesum=0;

for(inti=3;i<=1000;i++)

sum+=sushu(i);

cout<<"3到1000之间的所有素数的和为"<

return0;

}

/*验证哥德巴赫猜想:

一个大于2的偶数总可以分解成两个素数的和*/

#include

#include

intcheck(inti)

{

if(i==1)return-1;

if(i==2)return2;

for(intj=2;j<=sqrt(i);j++)

if(i%j==0)break;

if(j>sqrt(i))returni;

elsereturn-1;

}

intmain()

{

intn;

cout<<"输入一个偶数n=";

cin>>n;

for(inti=n-1;i>=n/2;i--)

if(check(i)+check(n-i)==n)

cout<

return0;

}

/*设s=1+1/2+1/3+…+1/n,求与8最接近的s的值及与之对应的n值*/

#include

#include

doublefun(doublen)

{

doublesum=0;

for(doublei=1;i<=n;i++)

sum+=1.0/i;

returnsum;

}

intmain()

{

doubles=0;

doublen=1;

while

(1)

{

s=fun(n);

if(fabs(8.0-fun(n))>fabs(8.0-fun(n+1)))n++;

else{

cout<<"最接近8的s="<

cout<<"此时的n="<

break;

}

}

return0;

}

/*假定2007年的一月一日是星期三,打印出该年的日历*/

#include

#include

intmain()

{

intmonth_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

staticintdays=0;

cout<<""<

<

//最前面有4个空格

intweekday;

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

for(intj=1;j<=month_day[i];j++){

days++;

weekday=((days-1)%7+3)%7;//注意

if(j==1){

cout<

(2)<

for(intp=1;p<=weekday;p++)

cout<<"";

}

cout<

if(weekday==6)cout<

}

cout<

}

return0;

}

/*鸡兔同笼一共有40只脚,求鸡兔各有多少只,总共有多少种组合*/

#include

intmain()

{

inta,b,n=0;//a鸡,b兔,n组合数

for(a=0;a<=20;a++)

for(b=0;b<=10;b++)

if(2*a+4*b==40){

cout<<"鸡:

"<

"<

n++;

}

cout<<"共有"<

return0;

}

/*换零钱.把一元钱全兑换成硬币(1分2分5分),有多少种兑换方法*/

#include

intmain()

{

inta,b,c,n=0;//1分的为A,2分的为B,5分的为C,种数为N

for(a=0;a<=100;a++)

for(b=0;b<=50;b++)

for(c=0;c<=20;c++)

if(a+2*b+5*c==100){

cout<

n++;

}

cout<<"共有"<

return0;

}

/*已知A>B>C>0,A,B,C为整数,且A+B+C<100。

求满足1/A*a+1/B*b=1/C*c的A,B,C共有多少组*/

#include

intmain()

{

inta,b,c,n=0;

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

for(b=c+1;b<100;b++)

for(a=b+1;a<100;a++)

if(a+b+c<100&&1.0/a/a+1.0/b/b==1.0/c/c)

{

cout<

n++;

}

cout<<"这样的A,B,C共有"<

return0;

}

/*设abcd*e=dcba,(a非0,e非0非1),求满足条件的整数abcd与e*/

#include

intmain()

{

inta,b,c,d,e;

intsum1=0,sum2=0;

for(a=1;a<=9;a++)

for(b=0;b<=9;b++)

for(c=0;c<=9;c++)

for(d=0;d<=9;d++)

for(e=2;e<=9;e++){

sum1=a*1000+b*100+c*10+d;

sum2=d*1000+c*100+b*10+a;

if(sum1*e==sum2)

cout<

}

return0;

}

/*因子之和等于它本身的数为完数。

如:

28的因子是1,2,4,7,14,且1+2+4+7+14=28,则28为完数。

求[2,1000]中的完数*/

#include

#include

intcheck(inti)

{

inttemp=0;

for(intj=2;j<=sqrt(i);j++)

if(i%j==0)temp+=j+i/j;

if(temp+1==i)returni;

elsereturn0;

}

intmain()

{

intcount=0;

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

if(check(i)!

=0){

cout<

count++;

}

cout<<"共有"<

return0;

}

/*将一个整数分解为1、质因子或本身之积。

如5=1*5,8=1*2*2*2*/

#include

intmain()

{

intn;

cout<<"输入一个整数:

";

cin>>n;

cout<

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

while

(1){

if(n%i==0){

cout<<"*"<

n/=i;

}

elsebreak;

}

cout<

return0;

}

/*求1000以内亲密数对。

亲密数对的定义是:

若正整数a的所有因子之和为b,b的所有因子之和为a,

且a!

=b,则称ab互为亲密数对。

如:

220的因子之和1+2+4+…+110=284

284的因子之和1+2+…+142=220*/

#include

#include

intcheck(inta)

{

inttempA=0,tempB=0;

intb=0;

for(intj=2;j<=sqrt(a);j++)

if(a%j==0)tempA+=j+a/j;

b=1+tempA;

for(j=2;j<=sqrt(b);j++)

if(b%j==0)tempB+=j+b/j;

if(tempB+1==a)returnb;

elsereturn0;

}

intmain()

{

intj,n=0;

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

j=check(i);

if(j!

=0&&i!

=j){cout<

n++;}

}

cout<<"共有"<<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

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

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