【发布时间】:2014-12-09 14:04:24
【问题描述】:
我无法获取我的程序,该程序旨在将斐波那契数列生成到一个文件中,然后将其读回。我不确定 r=problem 是否出在扫描或打印上,但我总是得到很长的错误数字
#include<stdio.h>
int main(){
//Step 1
int N;
scanf(" %d", &N);
if(N > 2){
printf("You entered argument: %d\n", N);}
else{
printf("That is an illegal argument. N must be greater than 2.");
return 0;}
unsigned long a = 1;
unsigned long b = 1;
unsigned long c;
int count = 2;
FILE *fib;
fib = fopen("Fibonacci", "w+");
if (fib == NULL) {
printf("Open TestFile failed\n");
return -1;}
fprintf(fib, "%lu %lu ",a,b);
printf("%lu %lu ",a,b);
for(count; count < N; count++){
if(count % 4 == 0){
fprintf(fib, "\n");
printf("\n");}
c = a+b;
if(c < a){
printf("integer overflow, ending number generation.");
break;}
fprintf(fib, "%lu ",c);
printf("%lu ",c);
a = b;
b = c;
}
fflush(fib);
printf("\ncount = %d",count);
//Step 2
unsigned long med;
int middle;
unsigned long nums[count];
int j;
if(count % 2 == 1){
middle = (count/2);
for(j = 0; j < count; j++){
fscanf(fib, "%lu", &nums[j]);}
med = nums[middle];
printf("\nmedian = %lu", med);}
unsigned long test1 = nums[0];
unsigned long test2 = nums [1];
unsigned long test3 = nums [2];
printf("\nnums array: %lu %lu %lu",test1, test2, test3);
return 0;
}
如果输入为3,则输出为
You entered argument: 3
1 1 2
count = 3
median = 221891732872
nums array: 140733854067968 221891732872 26447888
【问题讨论】: