C++程序.docx
- 文档编号:9072066
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:30
- 大小:50.79KB
C++程序.docx
《C++程序.docx》由会员分享,可在线阅读,更多相关《C++程序.docx(30页珍藏版)》请在冰豆网上搜索。
C++程序
C++程序设计
班级:
091001
姓名:
张娇
学号:
091001128
【程序9】
题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数"。
例如6=1+2+3.
编程找出1000以内的所有完数。
#include
usingnamespacestd;
classWanShu{
public:
voidfun();
};
voidWanShu:
:
fun(){
for(inti=1;i<=1000;i++){
intt=0;
for(intj=1;j<=i/2;j++){
if(i%j==0)t=t+j;
}
if(t==i)cout<
}
}
intmain(){
WanShua;
a.fun();
return0;
}
【程序10】
题目:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,
求它在第10次落地时,共经过多少米?
第10次反弹多高?
#include
usingnamespacestd;
classBallFall{
public:
BallFall(){height=100;distance=100;}
voidfun();
private:
doubleheight;
doubledistance;
};
voidBallFall:
:
fun(){
for(inti=1;i<10;i++){
distance=distance+height;
height/=2;
}
cout<<"路程是:
"< cout<<"高度是: "< } intmain(){ BallFalla; a.fun(); return0; } 【程序11】 题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数? 都是多少? 程序分析: 可填在百位、十位、个位的数字都是1、2、3、4。 组成所有的排列后再去掉不满足条件的排列。 #include usingnamespacestd; classNum{ public: voidfun(); }; voidNum: : fun(){ intcount=0; for(intx=1;x<5;x++){ for(inty=1;y<5;y++){ for(intz=1;z<5;z++){ if(x! =y&&y! =z&&x! =z){ count++; cout< if(count%4==0){ cout<<"\n"; } } } } } cout<<"共有"< } intmain(){ Numa; a.fun(); return0; } 【程序12】 题目: 企业发放的奖金根据利润提成。 利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%, 高于100万元时,超过100万元的部分按1%提成, 从键盘输入当月利润I,求应发放奖金总数? 程序分析: 请利用数轴来分界,定位。 注意定义时需把奖金定义成长整型。 #include usingnamespacestd; classAward{ public: Award(){i=0;s=0;} voidset_pro(); voidfun(); private: inti; doubles; }; voidAward: : set_pro(){ cin>>i; } voidAward: : fun(){ if(i<=10){ s=i*0.1; } elseif(i>10&&i<=20){ s=10*0.1+(i-10)*0.075; } elseif(i>20&&i<=40){ s=10*0.1+10*0.075+(i-20)*0.05; } elseif(i>40&&i<=60){ s=10*0.1+10*0.075+20*0.05+(i-40)*0.03; } elseif(i>60&&i<=100){ s=10*0.1+10*0.075+20*0.05+20*0.03+(i-60)*0.015; } else{ s=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(i-100)*0.01; } cout<<"本月应发放奖金"< } intmain(){ Awarda; a.set_pro(); a.fun(); return0; } 【程序13】 题目: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方, 如果开方后的结果满足如下条件,即是结果。 #include #include usingnamespacestd; classShu{ public: voidfun(); }; voidShu: : fun(){ for(inti=-100;i<=100000;i++){ if(sqrt(i+100)/1==int(sqrt(i+100))){ if(sqrt(i+268)/1==int(sqrt(i+268))){ cout< } } } } intmain(){ Shua; a.fun(); return0; } 【程序14】 题目: 输入某年某月某日,判断这一天是这一年的第几天? 程序分析: 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天, 特殊情况,闰年且输入月份大于3时需考虑多加一天。 #include usingnamespacestd; classDay{ public: Day(){year=0;month=0;day=0;} voidset_day(); voidfun(); private: intyear,month,day; }; voidDay: : set_day(){ cin>>year; cin>>month; cin>>day; } voidDay: : fun(){ intdays=0,d=0; for(inti=1;i switch(i){ case1: case3: case5: case7: case8: case10: case12: days=31;break; case4: case6: case9: case11: days=30;break; case2: {if(year%400==0||(year%4==0&&year%100! =0)) days=29; elsedays=28; break;} } d+=days; } cout<<"共有"< } intmain(){ Daya; a.set_day(); a.fun(); return0; } 【程序15】 题目: 输入三个整数x,y,z,请把这三个数由小到大输出。 程序分析: 我们想办法把最大数为x,最小数为z #include usingnamespacestd; classSort{ public: voidset_num(); voidfun(); private: intx,y,z; }; voidSort: : set_num(){ cin>>x; cin>>y; cin>>z; } voidswap(int*a,int*b){intt=*a;*a=*b;*b=t;} voidSort: : fun(){ if(x>y)swap(x,y); if(x>z)swap(x,z); if(y>z)swap(y,z); cout< } intmain(){ Sorta; a.set_num(); a.fun(); return0; } 【程序16】 题目: 输出9*9口诀。 程序分析: 分行与列考虑,共9行9列,i控制行,j控制列。 #include usingnamespacestd; classKou{ public: voidfun(); }; voidKou: : fun(){ for(inti=1;i<10;i++){ for(intj=1;j<=i;j++){ cout< } cout<<"\n"; } } intmain(){ Koua; a.fun(); return0; } 【程序17】 题目: 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个, 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。 程序分析: 采取逆向思维的方法,从后往前推断。 #include usingnamespacestd; classMon{ public: Mon(){lastnumber=1;} voidfun(); private: intlastnumber; }; voidMon: : fun(){ for(inti=2;i<=10;i++){ lastnumber=(lastnumber+1)*2; } cout< } intmain(){ Mona; a.fun(); return0; } 【程序20】 题目: 有一分数序列: 2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 程序分析: 请抓住分子与分母的变化规律。 #include usingnamespacestd; classSum{ public: Sum(){sum=0;} voidfun(); private: doublesum; }; voidSum: : fun(){ intx=2,y=1,t; for(inti=0;i<20;i++){ sum+=(double)x/y; t=y; y=x; x=y+t; } cout<<"前20项之和是: "< } intmain(){ Suma; a.fun(); return0; } 【程序21】 题目: 求1+2! +3! +...+20! 的和 程序分析: 此程序只是把累加变成了累乘。 #include usingnamespacestd; classSum{ public: voidfun(); }; voidSum: : fun(){ floatsum=0; floatfac=1; for(inti=1;i<=20;i++){ fac=fac*i; sum+=fac; } cout< } intmain(){ Suma; a.fun(); return0; } 【程序22】 题目: 利用递归方法求5! 。 程序分析: 递归公式: fn=fn_1*4! #include usingnamespacestd; classWu{ public: longfun(intn); }; longWu: : fun(intn){ if(n==1)return1; elsereturnn*fun(n-1); } intmain(){ Wua; cout< } 【程序25】 题目: 一个5位数,判断它是不是回文数。 即12321是回文数,个位与万位相同,十位与千位相同。 #include usingnamespacestd; classHui{ public: voidfun(); voidset_n(); private: longn; }; voidHui: : set_n(){ cin>>n; } voidHui: : fun(){ if(n/10000==n%10&&n/10%10==n/10/10/10%10) cout<<"是回文数"< elsecout<<"不是回文数"< } intmain(){ Huia; a.set_n(); a.fun(); return0; } 【程序27】 题目: 求100之内的素数 #include #include usingnamespacestd; classSu{ public: voidfun(); }; voidSu: : fun(){ intj; for(inti=1;i<=100;i++){ for(j=2;j<=sqrt(i);j++) if(i%j==0)break; if(j>sqrt(i))cout< } } intmain(){ Sua; a.fun(); return0; } 【程序28】 题目: 对10个数进行排序 程序分析: 可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。 #include usingnamespacestd; classSort{ public: voidfun(); }; voidSort: : fun(){ inti; inta[10]; for(i=0;i<10;i++){cin>>a[i];} for(i=0;i<10;i++){ for(intj=i+1;j<10;j++){ if(a[i]>a[j]){ intt=a[i]; a[i]=a[j]; a[j]=t; } } } for(i=0;i<10;i++)cout< } intmain(){ Sorta; a.fun(); return0; } 【程序29】 题目: 求一个3*3矩阵对角线元素之和 程序分析: 利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 #include usingnamespacestd; classCross{ public: Cross(){sum=0;} voidfun(); voidset_num(); private: intsum; inta[3][3]; }; voidCross: : set_num(){ for(inti=0;i<3;i++){ for(intj=0;j<3;j++){cin>>a[i][j];} } } voidCross: : fun(){ for(inti=0;i<3;i++){ for(intj=0;j<3;j++){ if(i==j)sum+=a[i][j]; } } cout<<"对角线元素之和是"< } intmain(){ Crossa; a.set_num(); a.fun(); return0; } 【程序31】 题目: 将一个数组逆序输出。 程序分析: 用第一个与最后一个交换。 #include usingnamespacestd; classInverse{ public: voidset_array(); voidfun(); private: inta[10]; }; voidInverse: : set_array(){ for(inti=0;i<10;i++)cin>>a[i]; } voidInverse: : fun(){ for(inti=9;i>=0;i--){ cout< } } intmain(){ Inversea; a.set_array(); a.fun(); return0; } 【程序33】 题目: 打印出杨辉三角形(要求打印出10行如下图) #include usingnamespacestd; classYang{ public: voidfun(); }; voidYang: : fun(){ inta[10][10]; inti; for(i=0;i<10;i++){ a[i][0]=1;a[i][i]=1; } for(i=2;i<10;i++){ for(intj=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i<10;i++){ for(intj=0;j<=i;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序