繁体   English   中英

如何在C中按索引对齐两个整数数组?

[英]How can I align two integer arrays by index in C?

我知道这个问题似乎不太清楚。

基本上,我正在尝试编写一个程序,以显示与孩子们相同的方式(当然,通过控制台)来显示基本算术运算。

例如:

5,294
+ 0,706

=等

因此,我将两个数字都放在单独的数组中,并按数字进行分割(这样的整数数组是:{5,2,9,4})。

我要学习/弄清楚的是,如果两组数字没有相同的位数,我将如何将它们对齐到右边。 例如,如果我只有706,而不是0,706? 当前,我将有两个数组,一个像{5,2,9,4},另一个像这样:{7,0,6} –我需要4超过6。

希望这对大家都有意义!

提前致谢!

我认为此代码段可能会生成您要查找的某种输出,它可与普通整数一起使用,因此您无需弄乱数组:

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);

只需查找每个单个数组的长度并找到最长的长度即可。 然后为每个没有该长度的数组创建新数组,并开始用旧的短数组的数字填充这些数组,然后为其余的值填充零,直到达到索引0。我希望我做了正确理解您的问题,以我的建议回答您的问题。

当然,只有在不涉及小数点的情况下才有效。 如果涉及到小数点,则必须在该数字的左侧和右侧找到最大位数,然后为每个不满足此条件的旧数组创建新数组,并执行与上述相同的操作。

编辑:一种更简单的方法,可以简单地通过反转每个数组的顺序,然后进行计算,但是将数字带到右边(而不是左边),最后反转结果的顺序。

您需要有关数组中小数点的信息。 否则,您可以只使用整数。 我会将指数设为10的底数,然后将其作为我的第一个或最后一个输入。 一旦有了它,就可以使用它来相应地改变格式。

“ 0,706”将成为“ {-3,7,0,6}”,第一个数字是指数。 然后像这样对齐逗号

//0 -1 -2 -3
   ,  
   ,

然后输入您的电话号码

//0 -1 -2 -3
  0, 7  0  6
   ,

冲洗并重复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM