c - 简单的 c 数组计算器删除第一个数字

标签 c arrays

这是我的任务的一部分。我必须使用数组制作一个计算器。 这是它的附加部分。

它工作正常,但问题是,它丢掉了第一个数字。数组大小例如为 10 。只要加法有余数,它就不会显示第一个数字。

例如,我想添加 5 9 7 5 3 1 0 0 0 0 和 5 0 8 6 4 2 0 0 0 0。真正的答案是 11061730000 但这个程序显示 1061730000(先删除 1)。

我该如何解决这个问题??

代码:

#include <stdio.h>
#define SIZE_MAX 10
#define SIZE_USE SIZE_MAX-1

int main()
{
    int i;

    int inum_firstPTR[SIZE_MAX] = {5, 9, 7, 5, 3, 1, 0, 0, 0, 0};
    int inum_secondPTR[SIZE_MAX] = {5, 0, 8, 6, 4, 2, 0, 0, 0, 0};

    int add_resultPTR[SIZE_MAX] = {0}; //initializing result array

    for (i = SIZE_USE; i >= 0; i--)
    {
        if (add_resultPTR[i] = inum_firstPTR[i] + inum_secondPTR[i] < 10)
        {
            add_resultPTR[i] = inum_firstPTR[i] + inum_secondPTR[i];
        }
        else
        {
            add_resultPTR[i] = inum_firstPTR[i] + inum_secondPTR[i] - 10;
            inum_firstPTR[i - 1] = inum_firstPTR[i - 1] + 1;
        }
    }

    puts("");

    for (i = 0; i < SIZE_MAX; i++)
    {
        printf("%d", add_resultPTR[i]);
    }

    puts("");

    return 0;
}

最佳答案

for (i = SIZE_USE; i >= 0; i--)
{
    if (add_resultPTR[i] = inum_firstPTR[i] + inum_secondPTR[i] < 10)
    {
        add_resultPTR[i] = inum_firstPTR[i] + inum_secondPTR[i];
    }
    else //carry
    {
        if ( i > 0) // normal carry to next element
        {
            add_resultPTR[i] = inum_firstPTR[i] + inum_secondPTR[i] - 10;
            inum_firstPTR[i - 1] = inum_firstPTR[i - 1] + 1;
        }
        else // element [0], no more elements to carry to
        {
            add_resultPTR[i] = inum_firstPTR[i] + inum_secondPTR[i];
        }
    }
}

关于c - 简单的 c 数组计算器删除第一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193434/

相关文章:

c - 如何以不同的方式调用递归?

python - python中数组的就地修改

c++ - 初始化一个 **Array 以及标题中实际需要的内容,以便它通过

c - 二进制文件打印 key 搜索c

c - C 中的预期表达式错误

C 格式化表格

c - 为什么有时只有 `error: jump into statement expression`?

java - 对数组进行排序,但按排序顺序更改其对应数组的列表

c++ - 如何修改/分配矩阵元素值?

c++ - 比较两个整数数组并检查它们是否具有相等的值