如何解决为什么在代码块中未执行1st for循环?
这是一个寻找矩阵范数的程序。我正在使用代码块编写代码。该代码中用于填充矩阵的第一个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(i=0;i<=r;i++)
i<=r
虚假。
为什么?
因为垃圾值存储在变量r
和c
中。
您正在使用格式说明符 %d
,该说明符用于int。
简短的格式说明符是%hd 。
只需使用 %hd
,一切都会正常运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。