c - 在 for 循环和数组中使用 if 语句时遇到问题

标签 c arrays for-loop

我的一项职能遇到问题。这是代码:

include <stdio.h>
include <math.h>
include <stdlib.h>

int inputAmount(int i);

void inputFahrs(double data[ ], int j);

double fahrToCels (double data[ ], int j);

void  outputFahrs(double data [ ], int numFahrs);

void outputAverage(double data[ ], int numFahrs);

void outputHighLows(double data[ ], int numFahrs);

void outputGrads(double data[ ], int numFahrs);

int main (void)
{
    int i, j, numFahrs;
    double data[i], *ptr=&data[i];
    i=inputAmount(i);
    printf("%d\n\n", i);
    inputFahrs(&data[i], i);
    data[j]=fahrToCels(&data[i], j);
    printf("%.1f", data[j]); 
    return 0;
}

int inputAmount(int i)
{
    printf("Please enter the amount of vaues you would like to use.\n\n");
    scanf("%d", &i);
    while(i<1 || i>25)
    {
        printf("Value is out of range. Please enter another value.\n\n");
        scanf("%d", &i);
    }       
    return i;
}   

void inputFahrs(double data[ ], int i)
{
    int j;
    printf("Please enter temperature values in the range of -175 to 175 degrees F.\n\n");
    for(j=0;j<i;j++)
    {
        scanf("%f", &data[j]);
        if (data[j]< -175 || data[j]>175)
        {
            printf("Temperature value is out of range. Please re-enter");
            scanf("%f", &data[j]);
        }
    }       
}

double fahrToCels (double data[ ], int j)
{
    int i;
    printf("TEST");
    for(j=1;j<=i;j++)
    {
        data[i]=(((data[i])-32)*(5.0/9.0));
    }
    return data[i];
}

基本上,我的代码中的问题是它完全跳过了 if 语句。我希望程序执行 for 循环,如果用户输入的值超出范围,我希望启动 if 语句。 for 循环内但在 if 语句之后的 print 语句工作正常,因此肯定存在问题。我还尝试使用 while 循环代替 if

最佳答案

问题是你正在迭代循环

j

并用下标检查条件

i

使用 j 作为下标即可

scanf("%f",&data[ j ])

if(data[ j ]< -175] | | data[ j ]>175)

应该可以工作。因为 data[i] 不是可能的下标值,因为 i 是数组大小

你为什么使用这条线

data[i]=data[i];

关于c - 在 for 循环和数组中使用 if 语句时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15650982/

相关文章:

c - CUDA代码的数据收集部分意外输出“0”

检查网络掩码是否正确

javascript - jQuery for 循环不运行函数

java - 如何遍历 Java 中函数返回的数组

c - sizeof() 具有零长度数组成员的结构

c - realloc() 的性能影响

c++ - 在不创建任何类型对象的情况下声明 vector 和指针

c - 将两个数组元素合并为一个

JavaScript 将namedNodeMap 转换为字符串

java - 如何循环遍历数组来查找参数是否与数组中的元素匹配?