假设需要打印的数组为int类型,数组名为Array,Dim1为数组的行,Dim2为数组的列。
int i,j//临时变量for(i = 0 i < Dim1 i++)//外层循环遍历行
for(j = 0 j < Dim2 j++)//内层循环遍历列
{
printf("%d ",Array[i][j])//访问数组元素并打印
}
打印数组时(无论几维)都要注意数组下标从0开始,除非刻意放弃下标为0的元素,多存一个元素,此时for循环范围则可从1开始到数组长度。
N个元素中取出M个元素的所有排列#include <stdio.h>#define MAX 10int used[MAX]int result[MAX]int M, Nvoid print() { int i for(i = 0i <Mi++) printf("%d ", result[i])printf("\n")}void Perm(int step) { int iif (step == M) print()elsefor(i = 0i <Ni++)if (!used[i]) {used[i] = 1 result[step] = i + 1 Perm(step + 1) used[i] = 0 }}main() {scanf("%d %d", &M, &N) Perm(0)}
N个元素中取出M个元素的所有组合
#include<stdio.h>#define MAX 20int c[MAX] = {0}int M, Nvoid print() {int i for(i = 0i <Mi++)printf("%d", c[i + 1]) printf("\n")}void Comp(int m) {if (m == M + 1)print() elsefor(c[m] = c[m - 1] + 1c[m] <= N - M + mc[m]++)Comp(m + 1)}void main() {scanf("%d %d", &M, &N) Comp(1)}
#include<stdio.h>
#include
<stdlib.h>
int
main()
{
int
r
int
c
int
**array
int
i,
j
scanf("%d%d",
&r,
&c)
/*分配内存*/
for(i
=
0
i
<
r
i++)
{
array[i]
=
(int*)malloc(c)
}
/*输入数组*/
for(i
=
0
i
<
r
i++)
{
for(j
=
0
j
<
c
j++)
{
scanf("%d",
&array[i][j])
}
}
/*输出数组*/
for(i
=
0
i
<
r
i++)
{
for(j
=
0
j
<
c
j++)
{
printf("%d
",
array[i][j])
}
printf("\n")
}
getchar()
return
0
}