C语言详解 之 数值列表积

    技术2025-04-22  25

     

    #include <stdio.h>#include <math.h>#define input "list.txt"#define max 5

    int fgetList(FILE*inp, int list[], int max_num);

    int main(){    FILE *inp;    int count;    int x[max],y[max],z[max];    inp = fopen(input, "r");    count = fgetList(inp, x, max); printf("%d/n",count);    count = fgetList(inp, y, max); printf("%d/n",count);    int sum=0;    for(int i=0;i<count;i++)    {       z[i]=x[i]*y[i];       sum += z[i];    }        double result = sqrt(sum);    printf("x/ty/tz/n");    for(i=0;i<count;i++)    {       printf("%d/t%d/t%d/n",x[i],y[i],z[i]);    }    printf("%f", result);     fclose(inp);   return 0;}

    int fgetList(FILE*inp, int list[], int max_num){    int i=0;    int temp;    fscanf(inp,"%d",&temp);    while(-9 != temp && i<max_num)    {      list[i] = temp;      i++;      fscanf(inp,"%d",&temp);    }        if(i == max_num)    {      printf("array size is not enough!!/n");

          do{     fscanf(inp,"%d",&temp);   }while(-9 != temp);   /// 此处这段代码是十分有必要的,因为它会让文件指针正确的指到下一个数组的开头。

         }        return i; }

     

     

    这段代码的有意思的地方在于我的一个错误!

     

    int fgetList(FILE*inp, int list[], int max);

    这时候报出一个编译错误说这行代码有错,一直找不出来。

    最后我将函数拆成不带参数的函数,没有错误,一个、两个都没有错。原来是

    max 出错。

    因为我在程序开始时写了

    #define max 20

    这时候编译认为这两个变量属于重复声明,故而报错!!

    这个错误自己应该谨记!!!!

    最新回复(0)