私は、ユーザーが任意のユーザー定義の長さまでのフィボナッチ数列の偶数項の合計を検出できるようにするプログラムを作成しようとしています。ユーザーが選択した場合に新しい計算を行う機会が得られるように作成しています。ある種のプログラムの再起動を実現するために、ブール論理とwhileループを使用しています。
プログラムは最初は正常に実行されます。ただし、後続のユーザー入力ごとに、前の回答が現在の回答に影響します。whileループの開始時に、変数を初期値(i = 1、j = 2、k = 0、およびsum = 0)に再初期化しようとしましたが、それでも目的の結果が得られません。助けてくれてありがとう。
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
int main()
{
bool stayAlive = true;
long int sum = 0; //The sum of all even Fibonacci numbers
long int i = 1; //initial 1st value of the Fibonacci sequence
long int j = 2; //initial 2nd value of the Fibonacci sequence
long int k = 0; //initial 3rd value of the Fibonacci sequence
int x = 0;
char name[50];
printf("Hello, may I have your name?\n\n");
scanf("%s", &name);
putchar('\n');
while(stayAlive)
{
printf("Hello %s! This program will sum up all of the evenly valued terms from\nthe Fibonacci sequence, up until an upper limit term specified by the user.\n",name);
printf("Set this limit: ");
scanf("%d",&x);
putchar('\n');
char c;
while(k < x)//WHILE the "last term" is LESS than the "max term"
{
i ==1;
j ==2;
k ==0;
sum ==0;
k = i + j;
if(k%2==0)
sum +=k;
i = j;
j = k;
}
printf("The sum of all of the evenly valued terms of the Fibonacci sequence up until\nthe value %d is %d.",x,sum); puts("\n");
printf("Try another calculation? (Y/N) ");
scanf("%s", &c);
if(c == 'y'|| c == 'Y')
continue;
else
printf("\nThanks for using this program, %s!",name);//This name character is not outputting here, even though it outputs earlier
getchar();
break;
}
return 0;
}