gpt4 book ai didi

c - 我在这里做错了什么?程序循环不停

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:51 25 4
gpt4 key购买 nike

这是一个 C 程序,使用 clock() 来计算获得第 n 个斐波那契数所需的时间,并使用迭代斐波那契数列。程序不停地循环。我知道方程式是正确的,因为我能够在没有时钟功能的情况下正确运行程序。感谢您的帮助!

#include<time.h>
#include<sys/file.h>
#include<stdio.h>

int main ( )
{
int j=1, fib, n, i=1, k=0;
int choice;
float x,y,z;

x = clock(); //start clock

printf("input the fib number you want: ");
scanf("$d", &n);

while (k <=n)
{
fib = i + j;
i = j;
j = fib;
++k;

printf( "The fib number is %d\n ", fib);
}

y =clock(); // end clock
z = (y - x) / CLOCKS_PER_SEC;

printf("\n\nThe execution time was: %.15f", z);
return 0;
}

最佳答案

scanf("$d", &n); 需要是 scanf("%d", &n);。很有可能,无论 n 在您的程序启动时获得什么随机值,都会使您的循环条件失败。

正如@dasblinkenlight 在评论中提到的,如果您想要进行有用的测量,您应该在用户输入之后启动时钟。

此外,虽然大多数书籍似乎没有涵盖它,但检查 scanf() 的返回值是个好主意,因为它可以捕捉到像你上面那样的拼写错误(感谢@WilliamPursell)。像下面这样的东西会起作用:

if( scanf( "whatever random and incorrect format string", &n ) != 1 ) {
/* exit with error message */
}

来自 cplusplus.com :

On success, the function returns the number of items of the argument list successfully filled. This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.

If a reading error happens or the end-of-file is reached while reading, the proper indicator is set (feof or ferror). And, if either happens before any data could be successfully read, EOF is returned.

If an encoding error happens interpreting wide characters, the function sets errno to EILSEQ.

关于c - 我在这里做错了什么?程序循环不停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15149600/

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