我的程序计算出值n的Phi Totient。在第一次运行后,我询问用户是否想再次运行该程序。当输入n时它可以工作但是当按下y时却没有,实际上程序似乎再次运行但是与前一次运行中的n值相同。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n=0, t, c;
char buffer[13], y[4];
y[0]='y';
while(y[0]=='y' || y[0]=='Y')
{
while(n==0)
{
printf("Enter an positive integer for n: \n");
fgets(buffer, sizeof(buffer), stdin);
if(strlen(buffer) > 13)
{
while((c = getchar()) != '\n' && c != EOF);
}
n = strtol(buffer, (char **)NULL,10);
if(n<0){n=0;}
}
if(t == 1)
{
t=isPrime(n);
printf("Phi of %d = %d \n", n, n-1);
}
else
{
t=factorization(n);
}
y[0]='x';
while((y[0]!='y') && (y[0]!='Y') && (y[0]!='n') && (y[0]!='N'))
{
printf("Would you like to run again? (y/n) ");
fgets(y, sizeof(y), stdin);
if(y[1] != '\n' && y[2] != '\0')
{
while((c = getchar()) != '\n' && c != EOF);
}
}
}
return 0;
}