有人可以告诉我我的代码有什么问题以及为什么它会产生这个输出。
Code:
int main(){
unsigned num;
char response;
do{
printf("Please enter a positive integer greater than 1 and less than 2000: ");
scanf("%d", &num);
if (num > 1 && num < 2000){
printf("All the prime factors of %d are given below: \n", num);
printPrimeFactors(num);
printf("\n\nThe distinct prime factors of %d are given below: \n", num);
printDistinctPrimeFactors(num);
}
else{
printf("\nSorry that number does not fall between 1 and 2000.\n");
}
printf("\n\nDo you want to try another number? Say Y(es) or N(o): ");
getchar();
response = getchar();
}
while(response == 'Y' || response == 'y'); // if response is Y or y then program runs again
printf("Thank you for using my program. Good Bye!\n\n"); //if not Y or y, program terminates
return 0;
}
Output:
Please enter a positive integer greater than 1 and less than 2000: 1600
All the prime factors of 1600 are given below:
2 2 2 2 2 2 5 5
The distinct prime factors of 1600 are given below:
2 5
Do you want to try another number? Say Y(es) or N(o): yes
Please enter a positive integer greater than 1 and less than 2000: All the prime factors of 1600 are given below:
2 2 2 2 2 2 5 5
The distinct prime factors of 1600 are given below:
2 5
Do you want to try another number? Say Y(es) or N(o): Thank you for using my program. Good Bye!
当你问是否要重复时,你只读了y
,留下es
在标准输入中排队。当你去读下一个数字时,scanf
尝试将其解析为数字,失败并返回而不改变num
。当您提示用户时,您需要烧掉整行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)