首页 > 试题广场 >

把数组中数组按行输出到屏幕

[问答题]

编写完整程序,其功能是:声明一个10 × 10二维数组,把包括1和100在内的1到100之间的所有整数,按照下图所示的形式存储在该数组中。存储完毕之后,把数组中数组按行输出到屏幕。编程约束:不允许使用数组初始化语句,各种数据初始化及赋值语句的个数不允许超过15个。

1

3

6

10

15

21

28

36

45

55

2

5

9

14

20

27

35

44

54

64

4

8

13

19

26

34

43

53

63

72

7

12

18

25

33

42

52

62

71

79

11

17

24

32

41

51

61

70

78

85

16

23

31

40

50

60

69

77

84

90

22

30

39

49

59

68

76

83

89

94

29

38

48

58

67

75

82

88

93

97

37

47

57

66

74

81

87

92

96

99

46

56

65

73

80

86

91

95

98

100

//只要找到赋值规律就好了
#include<stdio.h>
int main(){
int A[10][10],n=1,i,j,k;
//为副对角线上三角赋值
for(i=0;i<10;i++)
    for(j=0,k=i;j<=i;j++)
        A[k-j][j]=n++;
//为副对角线下三角赋值
for(j=1;j<10;j++)
    for(i=9,k=j;i>=j;i--,k++)
        A[i][k]=n++;
//输出矩阵
for(i=0;i<10;i++){
    for(j=0;j<10;j++)
        printf("%3d",A[i][j]);
    printf("\n");
}
return 0;
} 


编辑于 2020-04-03 17:51:13 回复(0)
#include <stdio.h>

#define N 10
int mat[N][N];

int main(int argc, char const *argv[])
{
	int i, j, row, col, k;
	row = 0, col = 0;	//开始位置的行和列
	k = 1;
	while (row < N && col < N) {
		i = row;
		j = col;
		while (i >= 0 && j < N) {//每条斜线从左下往右上填充
			mat[i][j] = k++;
			i--;	//行下标减少
			j++;	//列下标增加
		}
		if (row < N - 1) {//行数未到底时增加行下标
			row++;
		} else if (row == N - 1) {//行到底后开始增加列
			col++;
		}
	}
	//打印矩阵
	for (i = 0; i < N; ++i) {
		for (j = 0; j < N; ++j) {
			printf("%3d", mat[i][j]);
			if (j < N - 1)printf(" ");
		}
		printf("\n");
	}
	return 0;
}

发表于 2017-08-14 13:37:51 回复(0)