为什么第一个 for 循环没有在代码块中执行?
Why is 1st for loop isn't getting executed in Code blocks?
这是一个求矩阵范数的程序。我正在使用代码块来编写代码。此代码中用于填充矩阵的第一个 for 循环不会在代码块中执行,而是在在线 c 编译器中执行。为什么会这样?
///求矩阵的范数
#include<stdio.h>
#include<math.h>
void main()
{
short int r,c;
register short int i,j;
//fill matrix
printf("\nENTER MATRIX DIMENSION");
printf("\nROWS: ");
scanf(" %d",&r);
printf("COLUMNS: ");
scanf(" %d",&c);
printf("\ncheck1");
--r; --c;
printf("\ncheck2");
float mat[r][c],sum,norm;
printf("\ncheck3");
//1st for loop:fill array
for(i=0 ;i<= r ;i++)
{
for(j=0 ;j<= c ;j++)
{
printf(" \nELEMENT %d x %d: ",i,j);
scanf(" %f",&mat[i][j]);
}
}
printf("\ncheck4");
//finding norm
sum = 0;
for(i=0;i<=r;i++)
{
for(j=0;j<=c;j++)
{
sum = sum + pow(mat[i][j],2);
}
}
norm = pow(sum,0.5);
printf("\n\nNORM: %f",norm);
}
代码正确但 for 循环未执行,因为条件:
for(i=0;i<=r;i++)
i<=r
越来越假了。
为什么?
因为垃圾值存储在您的变量 r
和 c
.
中
您正在使用用于 int 的格式说明符 %d
。
格式说明符简称为 %hd.
只需使用%hd
,一切都会正常。
这是一个求矩阵范数的程序。我正在使用代码块来编写代码。此代码中用于填充矩阵的第一个 for 循环不会在代码块中执行,而是在在线 c 编译器中执行。为什么会这样?
///求矩阵的范数
#include<stdio.h>
#include<math.h>
void main()
{
short int r,c;
register short int i,j;
//fill matrix
printf("\nENTER MATRIX DIMENSION");
printf("\nROWS: ");
scanf(" %d",&r);
printf("COLUMNS: ");
scanf(" %d",&c);
printf("\ncheck1");
--r; --c;
printf("\ncheck2");
float mat[r][c],sum,norm;
printf("\ncheck3");
//1st for loop:fill array
for(i=0 ;i<= r ;i++)
{
for(j=0 ;j<= c ;j++)
{
printf(" \nELEMENT %d x %d: ",i,j);
scanf(" %f",&mat[i][j]);
}
}
printf("\ncheck4");
//finding norm
sum = 0;
for(i=0;i<=r;i++)
{
for(j=0;j<=c;j++)
{
sum = sum + pow(mat[i][j],2);
}
}
norm = pow(sum,0.5);
printf("\n\nNORM: %f",norm);
}
代码正确但 for 循环未执行,因为条件:
for(i=0;i<=r;i++)
i<=r
越来越假了。
为什么?
因为垃圾值存储在您的变量 r
和 c
.
您正在使用用于 int 的格式说明符 %d
。
格式说明符简称为 %hd.
只需使用%hd
,一切都会正常。