【发布时间】:2016-10-09 12:38:57
【问题描述】:
我想在C中输入非常大的数字。我还想计算它的数字之和。有没有办法输入非常大的数字?
这是我的代码。
#include<stdio.h>
main() {
int sum=0,rem;
int a;
printf("Enter a number:-");
scanf("%d",a);
}
【问题讨论】:
我想在C中输入非常大的数字。我还想计算它的数字之和。有没有办法输入非常大的数字?
这是我的代码。
#include<stdio.h>
main() {
int sum=0,rem;
int a;
printf("Enter a number:-");
scanf("%d",a);
}
【问题讨论】:
您可能不想将所有这 200 位数字加载到内存中。如果您只想计算数字的总和,那么您在程序中所需要的只是一些存储数字总和的累加器变量到目前为止。这个变量的类型可以是int,因为200 * 9 <= INT_MAX在符合C的实现中总是为真。
#include <stdio.h>
int main(void) {
int accumulator = 0;
int read_result;
printf("Enter a number:-");
while (1) {
read_result = fgetc(stdin);
if ('0' <= read_result && read_result <= '9') {
accumulator += read_result - '0';
} else {
break;
}
}
printf("The sum of the digits is %d", accumulator);
return 0;
}
【讨论】:
ANSI C C99 中的最大类型是 int 的 long long int。没有办法在 C 中直接使用 200 位数字,除非您将其视为 char * 并对其进行处理。
抱歉,您显示的基本代码 sn-p 和您想要达到的目标真的非常遥远……如果您再具体一点,您想要什么样的计算可能会给您一只手左右。
【讨论】:
0..9 转换为int,并将它们计算为一个运行总和。更新您的问题和它的标题。
有限制。有些编译器只有一个 64 位的整数,有些是 128 位的。所以你不能使用这些整数类型。
您可以尝试使用GMP library。 GMP 支持使用 2^37 bits 构建 64 位整数。
【讨论】: