主题:[讨论]数组在C程序中的完美体现
数组,是C的精髓,利用数组可以将无规律可循的问题转化为有规律可循,从而解决问题。可以说,这是数组在C中的一个完美体现了。下面用两个例子来说明:
一、用C程序排列出1,2,3所有的三位数排列组合(可重复),如:111,112,113……源程序如下:
#include<stdio.h>
void main()
{
int i,j,k;
for(i=1;i<4;i++)
for(j=1;j<4;j++)
for(k=1;k<4;k++)
printf("%d%d%d ",i,j,k);
}
要求排列的数是相当有规律的(递增),故我们可以用嵌套循环就可以解决这个问题。但是,如果,是没有规律的一组数呢,我们又该如何做呢?请看:
二、用C程序排列出1,3,4,5,7所有的三位数排列组合(可重复),如:113,114,115……源程序如下:
#include<stdio.h>
void main()
{
int a[5]={1,3,4,5,7};
int i,j,k;
for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
for(k=0;k<=4;k++)
printf("%d%d%d ",a[i],a[j],a[k]);
}
这一组本来的规律性不强,但我们仍然可以用数组将其转化为规律性强的问题,转化后的问题就和上面的问题没有多大区别了,这个算法的实质是将数组将所要排列的数进行编号,通过编号(数组下标)来控制它们的输出。
望各位高手赐教,如有不对之处,请指正!
一、用C程序排列出1,2,3所有的三位数排列组合(可重复),如:111,112,113……源程序如下:
#include<stdio.h>
void main()
{
int i,j,k;
for(i=1;i<4;i++)
for(j=1;j<4;j++)
for(k=1;k<4;k++)
printf("%d%d%d ",i,j,k);
}
要求排列的数是相当有规律的(递增),故我们可以用嵌套循环就可以解决这个问题。但是,如果,是没有规律的一组数呢,我们又该如何做呢?请看:
二、用C程序排列出1,3,4,5,7所有的三位数排列组合(可重复),如:113,114,115……源程序如下:
#include<stdio.h>
void main()
{
int a[5]={1,3,4,5,7};
int i,j,k;
for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
for(k=0;k<=4;k++)
printf("%d%d%d ",a[i],a[j],a[k]);
}
这一组本来的规律性不强,但我们仍然可以用数组将其转化为规律性强的问题,转化后的问题就和上面的问题没有多大区别了,这个算法的实质是将数组将所要排列的数进行编号,通过编号(数组下标)来控制它们的输出。
望各位高手赐教,如有不对之处,请指正!