#include<stdio.h>
#include<math.h>
int main(void)
{
long int n;
scanf("%d",&n);
n=pow(10,n);
printf("%ld\n",n);
solve(n);
return 0;
}
答案 0 :(得分:2)
你需要使用double
,而不是long
(因为10 80 不适合64位long
,它可以表示{{1}以下的数字3}})。但请阅读9223372036854775807,因为这是一个非常困难的主题(请注意the floating point guide数字与数学floating point不同。)
您可以尝试:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
int n = 0;
if (scanf("%d",&n)<1) { perror("scanf"); exit(EXIT_FAILURE); };
if (n < -256 || n > 256)
{ fprintf(stderr, "wrong exponent %d\n", n);
exit(EXIT_FAILURE); };
double x = pow(10.0,(double)n);
printf("ten power %d is %g\n", n, x);
return 0;
}
(我删除了您未定义的solve
电话;我测试了scanf
的成功和n
的范围
对于更大的指数,您可能需要使用real numbers bignums。
不要忘记启用所有警告&amp;编译时调试信息。如果您使用gcc -Wall -Wextra -g
编译原始代码,则会多次发出警告(每行几乎警告一次!)。