【发布时间】:2015-02-27 08:47:09
【问题描述】:
目标:
问题 1
程序应从名为“prob1 input.dat”的文件中读取数字,该文件具有以下格式:
(number_of_entries) (entry1) (entry2)...
这意味着文件的第一行包含文件提供的条目数。以下几行定义了每行包含一个条目的条目。在我们的例子中,每个条目都是一个正整数。程序应该读入所有条目并将它们存储在一个数组中。然后程序应该检查数组中的每个值是否是素数,并将结果打印到名为“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;
}
【问题讨论】:
-
编译时包含所有警告和调试信息 (
gcc -Wall -Wextra -g)。然后学习如何使用调试器 (gdb)。顺便说一句,您应该测试fscanf的结果。 -
你希望这个
int x[]={};做什么? -
我很难找到
int x[]={};的词 -
在内部和外部循环中使用相同的变量是一个非常糟糕的主意。
-
在这个
terms = x[0];分配之后terms可能携带哪个值?
标签: c arrays loops printf scanf