输出n阶矩阵和三角矩阵,就出现了一个新知识print发(“\t”)是自动对齐,不确定的话就随便在内存里面专门命名一个随意改动的任务,看看电脑终端什么样子。
核心思想:自定义函数1 2 3 4 5等等(因为编写代码的原则最好是主体简洁一点,所以相关的复杂运算就放在自定义函数里面)主函数就调用它们。
要求掌握的技能:for循环的嵌套。函数自定义。什么时候换行\n,行与列的对应关系。
/*选择对应矩阵*/
#include <stdio.h>
int one(int n);
int two(int n);
int three(int n);
int four(int n);
int five(int n);
int main() {
int n, num;
printf("[1]顺序矩阵\n[2]逆序矩阵\n[3]正三角顺序矩阵\n[4]倒三角逆序矩阵\n[0]退出");
printf("输入num和n:");
scanf("%d %d", &num, &n);
switch (num) {
case 0:
printf("退出");
break;
case 1:
one(n);
break;
case 2:
two(n);
break;
case 3:
three(n);
break;
case 4:
four(n);
break;
default:
printf("no!");
break;
}
return 0;
}
//所有的i都表示行,而j<=n, j表示这一行输出几个数字
int one(int n) {
int i, j, count = 0;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
count++;
printf("%d \t", count);
}
printf("\n");//注意此语句摆放的位置,是最里面的循环结束后,换行
}
}
int two(int n) {
int i, j, count;
count = n * n;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
printf("%d \t", count--);//count--也可以单独写成一个语句,无所谓
}
printf("\n");
}
}
int three(int n) {
int i, j, count = 1;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
if (i > j) {//因为上三角的样子
printf("\t");
} else {
printf("%d\t", count);
}
count++;
}
printf("\n");
}
}
int four(int n) {
int i, j, n1 = 1, sum = 0, count;
count = five(n);
for (i = 1; i <= n; i++) {
for (j = 1; j <= n1; j++) {//用n1来控制每一行(j)输出的个数
printf("%d\t", count--);
}
n1++;//每次上面的for结束后就n1++
printf("\n");
}
return 0;
}
int five(int n) {//累加,为了求出逆序的下三角最后一个数,数值上是1加到n
int sum = 0, i = 1;
for (i = 1; i <= n; i++) {
sum = sum + i;
}
return sum;
}