#include <stdio.h> int main() { int row, col, i, j; char ch; printf("Enter the Value of Row or Column: "); scanf("%d", &row); col = row; int mat[row][col]; for (i = 1; i <= row; i++) { for (j = 1; j <= col; j++) { printf("enter the value(%d,%d): ", i, j); scanf("%d", &mat[i][j]); } } printf("Principle Diagonal is: [ "); for (i = 1; i <= row; i++) { for (j = 1; j <= col; j++) { if (i == j) { printf("%d ", mat[i][j]); } } } printf("] \nGeneral Diagonal is: [ "); for (i = 1; i <= row; i++) { for (j = 1; j <= col; j++) { if (i + j == row + 1) { printf("%d ", mat[i][j]); } } } printf("] \n Type 'u' or 'l' for Upper or Lower Triangular Matrix:"); scanf("%c ", &ch); // upper or lower triangular matrix if (ch == 'u') { for (i = 1; i <= row; i++) { for (j = 1; j <= col; j++) { if (i != j && i > j) { mat[i][j] = 0; } } } } else if (ch == 'l') { for (i = 1; i <= row; i++) { for (j = 1; j <= col; j++) { if (i != j && i < j) { mat[i][j] = 0; } } } } // displaying the matrix for (i = 1; i <= row; i++) { for (j = 1; j <= col; j++) { printf("%d ", mat[i][j]); } printf("\n"); } return 0; }
我试图从用户那里获取矩阵的输入...我从用户那里获取字符输入... 他会输入“u”或“l”...... 如果输入是“u”,我将显示上矩阵 如果输入是“l”,我将显示一个较低的矩阵
所以在 if else 语句之间我放置了 for 循环.. 但是这个 for 循环不起作用...... 如果我从 if 语句中拖出 for 循环,它就可以正常工作......
那么,问题出在哪里呢? 我该如何解决这个问题???
粗略地检查您的代码,最突出的事情之一是所使用的数组索引范围。您可能想深入研究一些与数组相关的 C 编程教程,但首先要指出的是,初始数组元素是元素“0”,而不是“1”。
因此,在检查各种 for 循环时,您可能希望将起始数组元素从“1”更改为“0”并更改范围测试。以下是一些快速重构。
来自
for (i = 1; i <= row; i++)
{
for (j = 1; j <= col; j++)
到
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
在重构代码中的各种“for”循环时,以下是一些示例输出数据。
craig@Vera:~/C_Programs/Console/UpperLower/bin/Release$ ./UpperLower
Enter the Value of Row or Column: 3
enter the value(0, 0): 1
enter the value(0, 1): 2
enter the value(0, 2): 3
enter the value(1, 0): 4
enter the value(1, 1): 5
enter the value(1, 2): 6
enter the value(2, 0): 7
enter the value(2, 1): 8
enter the value(2, 2): 9
Principle Diagonal is: [ 1 5 9 ]
General Diagonal is: [ 9 ]
Type 'u' or 'l' for Upper or Lower Triangular Matrix:l
1 2 3
4 5 6
7 8 9
这可能更接近您对输入和输出的期望。
所以要带走的主要东西是:
所以尝试一下,并深入研究一些好的教程文献。