gpt4 book ai didi

c - 当我运行程序时,它会永远打印。数组错误?

转载 作者:行者123 更新时间:2023-11-30 18:39:44 24 4
gpt4 key购买 nike

目标:

问题1

程序应从名为“prob1 input.dat”的文件中读取数字,该文件具有以下格式:

(条目数)(条目1)(条目2)...

这意味着文件的第一行包含文件提供的条目数。以下几行定义了条目,其中每一行包含一个条目。在我们的例子中,每个条目都是一个正整数。程序应该读入所有条目并将它们存储在数组中。然后程序应该检查数组中的每个值是否是素数,并将结果打印到名为“prob1 output.dat”的文件中。该文件的行数应与文件“prob1 input.dat”提供的行数一样多。在输出文件的每一行中,程序应该打印数字,然后“是素数”或“不是素数”。

顺便说一句,文件中的所有数字都大于 25

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

int main()
{
FILE *fptr;
char prob1_input[] = "prob1_input.dat";
int terms,i;
int x[]={};

fptr = fopen(prob1_input, "r");

if (fptr == NULL)
printf("Error in opening file %s",prob1_input);

terms = x[0];

for(i=0;i<terms;i++)
{
fscanf(fptr,"%d",&x[i]);
terms = x[0];

for(i=1;x[i]!=2;i++)
{
if(x[i]%2 == 0 || x[i]%3 == 0 || x[i]%5 == 0 || x[i]%7 == 0)
{
printf("%d is not a prime number\n",x[i]);
break;
}
else if (x[i] == 2 || x[i] == 3 || x[i] == 5 || x[i] == 7)
{
printf("%d is a prime number\n",x[i]);
break;
}
else
{
printf("%d is not a prime number\n",x[i]);
break;
}
}
}


return 0;

}

最佳答案

为此使用分步方法(示例代码假定完全支持 C99):

  1. 定义一个变量来保存即将到来的值的数量。

    size_t terms = 0; 
  2. 从文件中读取要放入您在 1 下定义的变量中的值的数量。

    fscanf(fptr, "%zu", &terms);
  3. 要保存要读取的其余值,请定义一个数组,其读取的元素数量低于 2。

    x[1 + terms];
    x[0] = terms;
  4. 将 2. 中读取的值的数量读取到 3. 中定义的数组中。

关于c - 当我运行程序时,它会永远打印。数组错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com