我知道这个问题可能看起来不太清楚。
基本上我正在尝试编写一个显示基本算术计算的程序(当然是通过控制台),就像孩子们一样。
例如:
5,294
+ 0,706
= etc
所以我将这两个数字放在不同的数组中,按数字分割(所以int数组如:{5,2,9,4})。
我正在努力学习/弄清楚如果他们没有相同的位数,我会如何将两组数字对齐。例如,如果不是0,706我只有706?目前我会有两个阵列,一个像{5,2,9,4},另一个像这样:{7,0,6} - 我需要4个超过6个。
希望这对你们所有人都有意义!
提前致谢!
答案 0 :(得分:1)
我认为这段代码片段可能会生成您正在寻找的那种输出,它可以与普通整数一起使用,因此您无需乱搞数组:
char tmpstr[1];
int total = first + second;
int width = snprintf(tmpstr, 1, "%d", total);
printf(" %*d\n", width, first);
printf("+ %*d\n", width, second);
printf(" %.*s\n", width, "-----------");
printf("= %*d\n", width, total);
答案 1 :(得分:0)
只需查找每个阵列的长度,找到最长的长度。然后为每个不具有该长度的数组创建新数组,并首先使用旧短数组的数字开始填充这些数组,然后对其余值填充零,直到达到索引0.我希望我做到了正确理解您的问题,以便根据我的提案回答您的问题。
如果没有涉及小数点,那当然只有效。如果涉及小数点,则必须找到左侧和右侧的最大位数,然后为不符合此条件的每个旧数组创建新数组,并执行与上述相同的操作。 / p>
编辑:更简单的方法,可以简单地通过颠倒每个数组的顺序,然后进行计算,但将数字带到右边(而不是左边)和结束了结果的顺序。
答案 2 :(得分:0)
您需要有关阵列中小数点的信息。否则你可以使用整数。我会将指数指向10的基数,并将其作为我的第一个或最后一个条目。完成此操作后,您可以使用它来相应地转换格式。
'0,706'将成为'{-3,7,0,6}',第一个数字是指数。然后你像这样对齐你的逗号
//0 -1 -2 -3
,
,
然后只需输入您的号码
//0 -1 -2 -3
0, 7 0 6
,
冲洗并重复。