微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在代码块中未执行1st for循环?

如何解决为什么在代码块中未执行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虚假。

为什么? 因为垃圾值存储在变量rc中。

您正在使用格式说明符 %d ,该说明符用于int。 简短的格式说明符是%hd
只需使用 %hd ,一切都会正常运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。