找几道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<9;i++)/*冒泡法排序*/
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<9;i++)/*冒泡法排序*/
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语言区别在哪