我的某個函數有問題。下面是代碼:在if語句中使用for循環和數組時遇到問題
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
語句之後的打印語句正常工作,所以肯定有問題。我也嘗試了while
循環代替if
。
小對象 - 在這個代碼怎麼回事。 – 2013-03-27 02:44:07
條件本身似乎沒問題,但你確實需要檢查指標。還有一點是,你不需要在if語句中獲得新的輸入,遞減'j'應該足夠了。 – Motasim 2013-03-27 02:58:28
'我'不是初始化順便說一句。 [這段代碼導致了我的無限循環](http://liveworkspace.org/code/2gWpzh$20)。 – 2013-03-27 04:09:52