gpt4 book ai didi

c - while 循环(和 for 循环)上的 scanf 错误,永远扫描

转载 作者:行者123 更新时间:2023-12-04 08:46:03 26 4
gpt4 key购买 nike

我是 C 编程和编写代码的新手,以确定 M 测试用例的质因数分解。如果我一次只扫描一次,该功能本身就可以工作,但是当我尝试执行 M 次时却惨遭失败。
我不知道为什么 scanf() 循环有问题。

int main(void) {
int n, j = 0, m, print = 0;
int i = 2, counter = 0;

scanf("%d", & m);

while (j < m) {
scanf("%d", & n); //This scan is buggy and only works for the first time
while (n != 1) {
if (n % i == 0) {
while (n % i == 0) {
n = n / i;
counter++;
}
printf("%i ^ %i, ", i, counter);
}
counter = 0;
i++;
}
printf("\n");
j++;
}
return 0;
}

最佳答案

与其说是你的 scanf行是“错误的”,而是您没有重置 i 的值在每个外部 while 的开头环形。因此,在第一次运行该循环时,i2 的值开始但是,在后续运行中,它将从上次运行结束后剩余的值开始。
要解决此问题,只需添加行 i = 2;在您的 scanf("%d", &n); 之前(或之后)线。

关于c - while 循环(和 for 循环)上的 scanf 错误,永远扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64314278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com