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]<<" ";
}

猜你喜欢

转载自blog.csdn.net/lyr2018212717/article/details/84918867
今日推荐