C++一些经典例题

C++一些经典例题

1、求一个数的绝对值

#include
using namespace std;
int main()
{
int x,y;
cin>>x;
if(x<0)
y= -x;
else if(x>0)
y=x;
cout<<y;
}

2、 按数值由小到大的次序输出这两个数

(若a>b)
一般令 t=a,a=b,b=t
#include
using namespace std; void main()
{
float a,b,t;
cin>>a>>b;
if (a>b)
{t=a;a=b;b=t;}
cout<<a<<b;
}

3、判断是否为闰年

逻辑运算符

要判别某一年(year)是否为闰年。 闰年的条件是符合下面两者之一: ①能被4整除,但不能被100整除。 ②能被100整除,又能被400整除。 用一个逻辑表达式来表示: (year % 4 == 0 && year % 100 != 0) || year % 400 == 0
当给定year为某一整数值时,如果上述表达式值为真(1), 则year为闰年;否则year为非闰年。
#include using namespace std;
int main( )
{
int year;
bool leap;
cout<<“please enter year “;
cin>>year;
if((year%4 == 0&&year%100!=0||year%400==0))
leap=true;
else leap=false;
if (leap)
cout<<year<<” is “;
else
cout<<year<<” is not “;
cout<<” a leap year.”<<endl;
return 0;
}

4、嵌套,输出九九乘法表

在这里插入图片描述
在这里插入图片描述

4、

在这里插入图片描述
分析:
对于分子:s=1 -1 1 -1 …
对于分母:n=1 3 5 7 …
累加项:t=s/n
pi=pi+t s=-s n=n+2 t=s/n 则pi=pi4
#include
#include
using namespace std;
main()
{
int s;
float n,t,pi;
t=1;
pi=0;
n=1.0;
s=1;
while((fabs(t))>=1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi
4;
cout<<pi;
}

5、输入一个整数,输出该整数所有素数因子

判断一个整数m是否为素数,只 需用2~m-1之间的每一个整数 去除,如果都不能被整除,那 么m就是一个素数。

在这里插入图片描述

6、水仙花数

水仙花 数"是指一个三位数,其各位数字立方和 等于该数本身
#include
using namespace std; main()
{
int i,j,k,n;
cout<<"'water flower’number is:\n";
for(n=100;n<1000;n++)
{
i=n/100; //分解出百位
j=n/10%10; //分解出十位
k=n%10; //分解出个位
if(i100+j10+k==iii+jjj+kkk)
{ cout<<n<<" "; }
}
}

7、递推问题(猴子吃桃)

猴子第1天摘下N个桃子,当时就吃了一半,还 不过瘾,就又吃了一个。第2天又将剩下的桃子吃掉一半,又多 吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天 再想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?

分析:设x1为某天吃桃前桃子数,设x2为吃桃后桃子数,
则:
day=9: x2=1 x1=(x2+1)*2=4,
day=8: x2=x1 x1=(x2+1)*2=10,
day=7: x2=x1 x1=(x2+1)*2=22,
……
day=1: x2=x1 x1=(x2+1)*2
从第10天可以类推到第1天,是一个循环过程。

#include
using namespace std;
main( )
{
int day,x1,x2;
x2=1;x1=(x2+1)*2;
for(day=8;day>0;day–) 或x2=1; for(day=9;day>0;day–) { x1=(x2+1)*2; x2=x1; }
{
x2=x1;
x1=(x2+1)*2; //第一天的桃子数是第2天桃子数加1后的2倍
}
cout<<“the total is " <<x1<<”\n";
}

8、画矩形

输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。
#include

using namespace std;

int main()
{
int m,n,t,i,j;
char a;
cin>>m>>n>>a>>t;
if(t0)
{
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(i
0||im-1)
cout<<a;
else if(j
0||jn-1)
cout<<a;
else cout<<" ";
}
cout<<endl;
}
}
else if(t
1)
{
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<a;
}
cout<<endl;
}
}
return 0;
}

画菱形
#include

using namespace std;

int main()
{
int n,i,j;
cin>>n;
for(i=1;i<2n;i++)
{
for(j=1;j<2
n;j++)
{
if(i+jn+1||i-jn-1||i-j==-n+1||i+j==3n-1)
cout<<"
"; else cout<<" ";
} cout<<endl;

}
return 0;

}

9、猴子吃桃问题(函数)

分析:设f(m)第m天吃桃前桃子数
f(10)=1;
f(9)=(f(10)+1)*2=4
f(8)=(f(9)+1)*2=10
f(7)=(f(8)+1)*2=22
……
f(1)=(f(2)+1)*2=?
用式子表述:
f(n)=1 (n=10) f(n)=(f(n+1)+1)*2 (n>=1)

#include
using namespace std;
int f(int n)
{
int c;
if (n==10)
c=1;
lse c=(f(n+1)+1)*2;
return c;
}
void main(void)
{
int f(int);
cout<<f(1)<<endl;
}

10、用简单选择法对10个数排序

排序过程:
(1)首先通过n-1次比较,从n个数中找出最小的,将它与第 一个数交换—第一趟选择排序,结果最小的数被安置 在第一个元素位置上
(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小 的记录,将它与第二个数交换—第二趟选择排序
(3)重复上述过程,共经过n-1趟排序后,排序结束。
在这里插入图片描述
在这里插入图片描述

11、冒泡 对n个数排序(由小到大)

排序过程: (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交 换;然后比较第二个数与第三个数;依次类推,直至 第n-1个数和第n个数比较为止——第一趟冒泡排序, 结果最大的数被安置在最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被 安置在第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
在这里插入图片描述
#include
using namespace std; // #define N 10 const
int N=10; void main()
{
int a[N+1],i,j,t;
cout<<“Input “<< N<<” numbers:\n”;
for(i=1;i<N+1;i++)
cin>>a[i];
for(j=1;j<N;j++)
for(i=1;i<N+1-j;i++)
if (a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
cout<<“The sorted numbers:\n”;
for(i=1;i<N+1;i++)
cout<<a[i]<<" ";
}

【程序1】 题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 【程序2】 题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数? 【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 【程序4】 题目:输入某年某月某日,判断这一天是这一年的第几天? 【程序5】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 【程序6】 题目:用*号输出字母C的图案。 【程序8】 题目:输出9*9口诀。 【程序9】 题目:要求输出国际象棋棋盘。 【程序10】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 【程序11】 题目:判断101-200之间有多少个素数,并输出所有素数。 【程序12】 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 【程序13】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【程序14】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,    60分以下的用C表示。 【程序15】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 【程序16】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 【程序17】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时    共有5个数相加),几个数相加有键盘控制。 【程序18】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程    找出1000以内的所有完数。 【程序19】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在    第10次落地时,共经过多少米?第10次反弹多高? 【程序20】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续    判断第二个字母。 【程序21】 题目:求100之内的素数    【程序22】 题目:对10个数进行排序 【程序23】 题目:求一个3*3矩阵对角线元素之和 【程序24】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 【程序25】 题目:将一个数组逆序输出。 【程序26】 题目:取一个整数a从右端开始的4~7位。 【程序27】 题目:打印出杨辉三角形(要求打印出10行)    【程序28】 题目:输入3个数a,b,c,按大小顺序输出。    【程序29】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 【程序30】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出    圈子,问最后留下的是原来第几号的那位。 【程序31】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数    1/1+1/3+...+1/n(利用指针函数) 【程序32】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,    问海滩上原来最少有多少个桃子? 【程序33】 题目:求0—7所能组成的奇数个数。 【程序34】 题目:一个偶数总能表示为两个素数之和
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值