使用循环外部的变量,值在循环内发生变化

时间:2017-06-08 18:01:31

标签: c loops variables

我对编程比较陌生,在尝试编写一个利用循环的函数时遇到了一个问题。该功能应该如下:

数组数据由一组51X2双精度组成,它们都通过初始for循环,a变量和b变量在程序中使用。 X和Y变量都设置为数组的最小值。

以a和X变量为例,将X值与a进行比较并递增,直到超过a。循环迭代的次数由c变量跟踪。然后在Graph数组中使用该c变量。 b和Y变量的过程相同。对S的每个值重复此过程以分析来自Data数组的所有数据点。

我遇到的问题是cd变量相对于循环内部的变化没有变化。变量不会从其初始值更改。我希望找到一个解决方案,允许cd变量相对于for循环的迭代次数发生变化。

相关的功能代码如下所示:

void Data_Plot(double Data[51][2], char Graph[44][56])
{
    int N = 50;
    int S,q,r;
    int c = 0;
    int d = 0;
    double a = Data[S][0];
    double b = Data[S][1];
    double X = Data[0][0];
    double Y = Data[0][1];
    for (S=0;S<N;S++)
    {   
        for(X;X<a;X+=0.1428571429)
        {
            c++;
        }
        for(Y;Y<b;Y+=2)
        {
            d++;
        }

        Graph[c][d] = '*'; 
    }

我知道我的代码非常不优化和混乱,但我可以在完成这个问题之后解决这些问题。

编辑:我想请注意,我尝试将此cd设置为其他值,并保留为NULL。无论变量初始化如何,都会出现相同的结果。

1 个答案:

答案 0 :(得分:2)

由于ab取决于您在S循环期间更改的for,因此您需要在循环内移动这些变量。

void Data_Plot(double Data[51][2], char Graph[44][56])
{
    int N = 50;
    int S,q,r;
    int c = 0;
    int d = 0;
    double X = Data[0][0];
    double Y = Data[0][1];
    for (S=0;S<N;S++)
    {   
        double a = Data[S][0];
        for(X;X<a;X+=0.1428571429)
        {
            c++;
        }

        double b = Data[S][1];
        for(Y;Y<b;Y+=2)
        {
            d++;
        }

        Graph[c][d] = '*'; 
    }