我目前正在开发一个C项目,该项目需要创建,存储和数学使用太大而无法放入普通变量类型的数字。为此,我们被指示将数字表示为存储在整数数组中的数字序列。我使用如下定义的结构:
struct BigInt {
int val[300000];
int size;
};
(我知道我可以动态分配内存,就是这样 最好的,但这是我最舒服的做法,它有 到目前为止工作得非常好,教授指示我们这样做。)
然后我定义成员A:
struct BigInt A={NULL};
我可以生成并存储,然后添加,减去和乘以随机数,它们可以有任意数字,最多300000(远远超过我需要考虑的数字)。例如,如果生成数字1432并将其存储到BigInt A中,则A.size将为4,而A.val [2]将为3。
现在我需要创建一种将用户输入存储到此类型的方法。例如,用户需要能够直接输入50!然后将它存储到我创建的结构数组类型中。我该怎么做呢?
我能想到的唯一方法是将用户输入存储为字符串,然后将该字符串中的数学运算执行多次,每次存储不同的数字,或者直接从标准输出读取数字,但是我不知道其中任何一个是否可能或者能解决我的问题。
答案 0 :(得分:1)
您可以尝试使用字符串,如下所示:
char s[300001];
scanf("%s", s);
A.size = strlen(s);
for(int i = 0; i < A.size; i++){
A.val[i] = s[i] - '0';
}
我认为它会解决你的问题,但这种大整数的实现方式并不高效。
答案 1 :(得分:0)
很抱歉以前的答案,要解决c,你需要使用字符数组来存储每个数字。