我需要得到一个99位的整数。 这实际上是我需要得到一个 99 位整数来解决的问题: https://quera.org/problemset/9774/
这是我解决这个问题的代码,但它应该能够得到更大的数字:
#include <stdlib.h>
int main(){
long long int n;
scanf("%lld",&n);
long long int x=n;
int i=1;
while(x>=10){
x=x/10;
i++;
}
long long int ar[i];
x=i-1;
while(x>=0){
ar[x]=n%10;
n=n/10;
x--;
}
x=0;
int z=1;
while(x<=i-1){
printf("%d: ",ar[x]);
while(z<=ar[x]){
printf("%d",ar[x]);
z++;
}
z=1;
x++;
printf("\n");
}
return 0;
}
没有可以容纳 99 位整数的 inter 类型,因此你不能
scanf
它。
最大的数字
gcc
(但它不是标准C)可以处理整数是128位长。但是你可以存储的最大数量是170141183460469231731687303715884105727
,这太短了。
所以答案是:你不能用
scanf
来扫描99位长整数
唯一的方法是作为字符串读取,然后使用像 GMP
这样的库谢谢大家的帮助,解决了:) 我使用字符串和 strlen 函数而不是整数。 这个新代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char n[99];
scanf("%s",&n);
int i =strlen(n);
int x=0;
int z=1;
while(x<=i-1){
int a=n[x]-48;
printf("%d: ",a);
while(z<=a){
printf("%d",a);
z++;
}
z=1;
x++;
printf("\n");
}
return 0;
}
• 我们不得不使用 `scanf(" ")` 和 `scanf("%*c")`
• c 中的 fscanf 如何使用 %lf 只保留两位小数?我试过 %.2lf 但它不起作用
• 我需要一个使用两个七段的计数器 0 - 99,以及一个将计数器增加一个的按钮
• 每当我在 char 数据类型中使用 scanf 函数时输出错误
• 如何在C语言中通过查看行中的一个属性对文件的行进行排序?
• 如何最有效地将包含 32 个无符号 8 位整数的 __m256i 向量转换为四个 32 位浮点数的 __m256 向量?
• 如何使用 AutoMapper 创建从开放泛型到简单泛型的自定义类型转换器?
• 如何将一个 64 位整数存储在两个 32 位整数中并再次转换回来