C++程序.docx

上传人:b****7 文档编号:9072066 上传时间:2023-02-03 格式:DOCX 页数:30 大小:50.79KB
下载 相关 举报
C++程序.docx_第1页
第1页 / 共30页
C++程序.docx_第2页
第2页 / 共30页
C++程序.docx_第3页
第3页 / 共30页
C++程序.docx_第4页
第4页 / 共30页
C++程序.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C++程序.docx

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

C++程序.docx

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++)

cout<

cout<<"\n";

}

}

intmain(){

Yanga;

a.fun();

return0;

}

【程序34】

题目:

输入3个数a,b,c,按大小顺序输出。

程序分析:

利用指针方法。

#include

usingnamespacestd;

classSort{

public:

voidset_num();

voidfun();

private:

inta,b,c;

};

voidSort:

:

set_num(){

cin>>a;

cin>>b;

cin>>c;

}

voidswap(int*x,int*y){intt=*x;*x=*y;*y=t;}

voidSort:

:

fun(){

if(a>b)swap(a,b);

if(a>c)swap(a,c);

if(b>c)swap(b,c);

cout<

}

intmain(){

Sorta;

a.set_num();

a.fun();

return0;

}

【程序38】

题目:

写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

#include

usingnamespacestd;

classLen{

public:

intfun(char*s);

};

intLen:

:

fun(char*s){

inti=0;

while(*s){i++;s++;}

returni;

}

intmain(){

chara[80];

gets(a);

Lenb;

cout<

return0;

}

【程序39】

题目:

编写一个函数,

输入n为偶数时,调用函数求1/2+1/4+...+1/n,

当输入n为奇数时,调用函数1/1+1/3+...+1/n

(利用指针函数)

#include

usingnamespacestd;

classSum{

public:

voidfun(intn);

voidf(intn);

Sum(){sum=0;}

private:

doublesum;

};

voidSum:

:

fun(intn){

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

sum+=(double)1/i;

cout<

}

voidSum:

:

f(intn){

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

sum+=(double)1/i;

cout<

}

intmain(){

intn;

cin>>n;

Suma;

if(n%2==0)a.fun(n);

elsea.f(n);

return0;

}

【程序41】

题目:

海滩上有一堆桃子,五只猴子来分。

第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。

第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,

第三、第四、第五只猴子都是这样做的,

问海滩上原来最少有多少个桃子?

#include

usingnamespacestd;

classSum{

public:

voidfun();

};

booltake(intsum){

for(intn=1;n<=5;n++){

if(sum%5==1){

sum=sum-1;

sum=sum-sum/5;

}

else

returnfa

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

当前位置:首页 > 高中教育 > 其它课程

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

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