您的当前位置:首页正文

C++常见程序

来源:我们爱旅游
类型一:求和

1、求和:S= 1+ 1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+50) #include using namespace std; int main() {

float s=1; int i,item=1;

for (i=2;i<=50;i++) {

item+=i;

s+=1.0/item; }

cout<<\"S= 1+ 1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+50)= \"<return 0; }

2、用公式 e=1+1/1!+1/2!+1/3!+…,求e的近似值,直到最后一项的绝对值小于10-7为止。

#include using namespace std; int main() {

float e=1;

int i=1,item=1; for (;item>1e-7;) {

e+=1.0/item; i++;

item*=i; }

cout<<\"e=1+1/1!+1/2!+1/3!+…= \"<3、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如

2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

#include using namespace std; int main() {

int s=0, i,n,a,item=0;

cout<<\"输入数字a(1~9之间): \"; cin>>a;

cout<<\"输入加法项数 n(>=1): \"; cin>>n;

cout<<\"s=a+aa+aaa+aaaa+aa...a= \"; for (i=1;i<=n;i++) {

item=item*10+a; s+=item; if (i>1)

cout<<\"+\"; cout<cout<<\" = \"<4、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

#include using namespace std; int main() {

int fib[45]={1,1},i,n;

cout<<\"输入月份 n ( 3=>n;

for (i=2;ifib[i]=fib[i-2]+fib[i-1]; }

for (i=0;icout<<\"第 \"<return 0; }

类型二:图形

1、输出9*9乘法口诀。 #include using namespace std; int main() {

int i,j;

cout<<\"九九乘法表\"<{

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

cout<}

return 0; }

2、输出以下图案。 * *** ***** ******* #include using namespace std; int main() {

int i,j;

for (i=1;i<=4;i++) {

for( j=1;j<=4-i;j++) cout<<\" \";

for( j=1;j<=2*i-1;j++ )

cout<<\"*\"; cout<return 0; }

类型三:数组

1、求一维数组中最大元素(共100个元素)的下标。 #include using namespace std; int main() {

int a[100] int i,maxID=0;

cout<<\"输入数组的数据:\"<>a[i];

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

if (a[i]>a[maxID]) maxID=i;

cout<<\"数组中最大元素的数据是:\"<return 0;

}

2、一班有50名学生,现统计该班某科课程成绩的最高分,最低分,平均分,不及格人数.

#include using namespace std; int main() {

float a[50]; int i,number=0;

float max,min,average=0;

cout<<\"输入学生成绩:\"<>a[i]; max=min=a[0];

for (i=1;i<50;i++) {

average+=a[i];

if (a[i]> max) max=a[i]; if (a[i]< min) min =a[i]; if (a[i]< 60 ) number++; }

average/=50;

cout<<\"最高成绩是:\"<cout<<\"平均成绩是:\"<3、有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

#include using namespace std; int main() {

int a[11]={1,3,5,7,8,12,55,56,59,80};

int x,i,j,sort=0; // sort 排序规律,默认

为0(升序)

int z=0; // 插入位置 cout<<\"输出原数组:\"; for(i=0;i<10;i++) cout<cout<<\"输入要插入的数据:\"; cin>>x;

// 判断排序规律, 0 升序,1 降序 for (i=0;i<9;i++)

if (a[i]>a[i+1])

{ sort=1; bereak; }

// 寻找插入数据位置(下标) z

for (i=0;i<10;i++) {

if ( sort )

if (x>a[i])

{ z=i;

break;

}

else

if (x{ z=i;

break;

} }

if ( i== 10) z=i;

// 移动z位置及其之后的数据(向后一位) for(i=9;i>z;i--) a[i+1]=a[i]; a[z]=x;

cout<<\"输出新数组:\"; for(i=0;i<=10;i++) cout<4、用冒泡排序方法,将10个成绩按从大到下的顺序排序。(本题略,参见教材)

5、从键盘输入10个数,用插入法排序对它们按从小到大的次序排序。 #include using namespace std;

void InsertSort(int x, int n , int * p); int main() {

int a[11];

int x,i,j;

int z=0; // 插入位置 cout<<\"输入任意10个整数构建数组:\"; for(i=0;i<10;i++) cin>>a[i]; cout<for(i=1;i<10;i++)

InsertSort(a[i],i,a); cout<<\"输出新数组:\"; for(i=0;i<=10;i++) cout<void InsertSort(int x , int n, int * p ) // x-数据,n-数组当前长度,p-指针

{

int i , z=0 ; // 默认为数组头 // 寻找插入数据位置(下标) z

for (i=0;i<10;i++) {

if (x{ z=i;

break;

} }

if ( i==n ) z=i ;

// 移动z位置及其之后的数据(向后一位) for(i=n-1;i>z;i--) p[i+1]=p[i]; p[z]=x; }

6、求二维数组中最大元素的值及在数组中的位置。 #include using namespace std; int main() {

int a[5][5];

int max,i,j,row,col;

cout<<\"输入任意25个整数构建数组:\"; for(i=0;i<5;i++)

for(j=0;j<5;j++) cin>>a[i][j]; cout<col=0;

max=a[row][col]; //假设最大数是第一个数 for(i=0;i<5;i++)

for(j=0;j<5;j++)

if (a[i][j])>max )

{ row=i; col=j;

max=a[i][j]; }

cout<<\"数组中最大数据是:\"<return 0; }

7、给定一个二维五五数组,求主对角元素的和。

#include using namespace std; int main() {

int a[5][5];

int sum=0,i,j;

cout<<\"输入任意25个整数构建数组:\"; for(i=0;i<5;i++)

for(j=0;j<5;j++) cin>>a[i][j]; cout<for(i=0;i<5;i++)

sum+=a[i][i]+a[4-i][i]; sum=sum-a[5/2][5/2];

cout<<\"数组对角线的和是:\"<

因篇幅问题不能全部显示,请点此查看更多更全内容