当前位置:编程学习 > C/C++ >>

找几道C语言小题做

我是新手,一定要简单一点
答案:

小程序举例

1,  打印杨辉三角(要求打印十行)。

 

1

 

 

 

 

1

1

 

 

 

1

2

1

 

 

1

3

3

1

 

1

4

6

4

1

算法:左面这一列全是1,右面最后一个数也是1.其它元素(a[i][j]表示)可用表达式a[i][j]=a[i-1][j-1]+a[i-1][j]计算得到。编程序时,可以先设一个二维数组,并按杨辉三角的特点为数据赋值,然后输出数组中主对角线的左边部分即可。

#include<stdio.h>

 void main()

{int a[10][10]={{1},{1,1}},i,j;

 for(i=2;i<10;i++)

{ a[i][0]=a[i][i]=1;

for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];

}

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

{ printf(“\n”);

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

printf(“%-6d”,a[i][j]);

}

}

 

 

 

 

 

 

 

 

 


2,        10个数80,55,96,4,32,21,7,42,18按降序排序。

算法:冒泡法排序,数组。

#include<stdio.h>

void main()

{int a[10]={80,55,96,4,32,21,7,42,18},i,j,t

for(i=0;i<9i++)/*冒泡法排序*/

for(j=0;j<9-i;j++)

if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}

for(i=0;i<9;i++)

printf(%4d”,a[i]);

}

 

 

 

 

 

 

 

小程序举例

1,  打印杨辉三角(要求打印十行)。

 

1

 

 

 

 

1

1

 

 

 

1

2

1

 

 

1

3

3

1

 

1

4

6

4

1

算法:左面这一列全是1,右面最后一个数也是1.其它元素(a[i][j]表示)可用表达式a[i][j]=a[i-1][j-1]+a[i-1][j]计算得到。编程序时,可以先设一个二维数组,并按杨辉三角的特点为数据赋值,然后输出数组中主对角线的左边部分即可。

#include<stdio.h>

 void main()

{int a[10][10]={{1},{1,1}},i,j;

 for(i=2;i<10;i++)

{ a[i][0]=a[i][i]=1;

for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];

}

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

{ printf(“\n”);

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

printf(“%-6d”,a[i][j]);

}

}

 

 

 

 

 

 

 

 

 


2,        10个数80,55,96,4,32,21,7,42,18按降序排序。

算法:冒泡法排序,数组。

#include<stdio.h>

void main()

{int a[10]={80,55,96,4,32,21,7,42,18},i,j,t

for(i=0;i<9i++)/*冒泡法排序*/

for(j=0;j<9-i;j++)

if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}

for(i=0;i<9;i++)

printf(%4d”,a[i]);

}

 

 

 

 

 

 

 

冒泡法排序

冒泡法又叫起泡法或流动漂浮法。下面举一个例子来讲一下它的应用。按升序对数组a中的5个数排序,如a数组原来为7,5,4,8,1,排序后应为1,4,5,7,8.

 将每对相邻的数做比较,如满足大于关系,则两数交换。用这种方法排序,5个数要排序4轮。第一轮,依次a[0]a[1],a[1]a[2],a[2]a[3]a[3]a[4]4对数做比较,每对数比较时,若满足大于关系将两数交换位置,这4对数比较完成后,最大的数已经放在最后。第2轮;依次将a[0]a[1],a[1]a[2]a[2]a[3],比较。比较完成后,第二大的数已放到倒数第二的位置。第3轮:将a[0]a[1]a[1]a[2]比较。第4轮;a[0]a[1]比较。

排序过程如下:

原顺序: 7    5    4    8     1

1轮: 5    7    4    8     1

         5    4    7    8     1

         5    4    7    8     1

         5    4&nbs

上一个:到底学C语言有啥用?
下一个:JAVA与C语言区别在哪

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,