我有以下代码来实现pow()math.h 库中的 as 。嗯,我有两个问题:
"power:"为什么 scanf() 语句在从 printf() 函数打印之前获取输入?我如何计算大整数的幂,假设计算出的幂如下:22235645654789787978797797(仅作为示例)。我如何计算并打印它。
#include <stdio.h>
unsigned long long int pow(unsigned long long int n,unsigned long long int d);
int main(){
unsigned long long int a,x,n;
printf("Number:");
scanf("%u\n",&a);
printf("power:");
scanf("%u\n",&n);
x = pow(n,a);
printf("%u\n",x);
}
unsigned long long int pow(unsigned long long int n,unsigned long long int d){
if(n+1==1)
return 1;
return d*pow(n-1,d);
}
Run Code Online (Sandbox Code Playgroud)在图像中,您可以看到变量的输入在从 printf()n打印之前获取输入"power:",因此无论您输入什么输入。
请帮助我理解它。欢迎任何建议和意见。
你的printfs 和scanfs 是按顺序执行的。由于缓冲,输出看起来很混乱。
当"power:"被打印时,它最终会进入缓冲区,直到输入数字为止不会被刷新。添加\n解决了控制台输出的问题。您还可以fflush(STDOUT)显式调用将缓冲的字符串打印到屏幕上。
注意:您没有unsigned long long正确阅读/打印。使用llu,或参阅此问答以了解 64 位无符号整数的正确格式说明符:
unit64_t a, x;
...
scanf("%"SCNu64, &a);
printf("n: %"PRIu64"\n", x);
Run Code Online (Sandbox Code Playgroud)