Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单c数组计算器删除第一个数字_C_Arrays - Fatal编程技术网

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

简单c数组计算器删除第一个数字,c,arrays,C,Arrays,这是我任务的一部分。我必须用数组做一个计算器。 这是它的附加部分 它工作正常,但问题是,它会降低第一个数字。例如,数组大小为10。当加法有余数时,它不显示第一个数字 例如,我想将597531000与508642000相加。正确答案是11061730000,但该程序显示1061730000(第一个下降1) 如何修复此行为 代码: #包括 #定义最大尺寸为10 #定义大小\使用大小\最大值-1 int main() { int i; int inum_firstPTR[SIZE_MAX]={5,9,

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

它工作正常,但问题是,它会降低第一个数字。例如,数组大小为10。当加法有余数时,它不显示第一个数字

例如,我想将597531000与508642000相加。正确答案是11061730000,但该程序显示1061730000(第一个下降1)

如何修复此行为

代码:

#包括
#定义最大尺寸为10
#定义大小\使用大小\最大值-1
int main()
{
int i;
int inum_firstPTR[SIZE_MAX]={5,9,7,5,3,1,0,0,0};
int inum_secondPTR[SIZE_MAX]={5,0,8,6,4,2,0,0,0};
int add_resultpttr[SIZE_MAX]={0};//初始化结果数组
对于(i=SIZE\u USE;i>=0;i--)
{
如果(添加结果tr[i]=inum_firstPTR[i]+inum_secondPTR[i]<10)
{
添加_resultPTR[i]=inum_firstPTR[i]+inum_secondPTR[i];
}
其他的
{
添加_resultPTR[i]=inum_firstPTR[i]+inum_secondPTR[i]-10;
inum_firstPTR[i-1]=inum_firstPTR[i-1]+1;
}
}
认沽权(“”);
对于(i=0;i
添加5+5+carry1是11,但是
添加结果tr[0]
只能存储1,并且在
[0]
之前没有位置存储carry1,因此它只能从1打印。 此外,11061730000是11位数字,您认为如何将其放入一个大小为_MAX 10的数组中。 将
SIZE\u MAX
定义为11,然后为防止溢出,将
inum\u firstPTR[SIZE\u MAX]
inum\u firstPTR[SIZE\u MAX]
add\u resultPTR[0]
添加到
add\u resultPTR[10]
并反向打印,即如果
add\u resultPTR[10]
为1,则从
[10]
添加到
[0]
否则从
[9]
[0]

用于(i=SIZE\u USE;i>=0;i--)
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];
        }
    }
}
{ 如果(添加结果tr[i]=inum_firstPTR[i]+inum_secondPTR[i]<10) { 添加_resultPTR[i]=inum_firstPTR[i]+inum_secondPTR[i]; } 其他//携带 { if(i>0)//正常进位到下一个元素 { 添加_resultPTR[i]=inum_firstPTR[i]+inum_secondPTR[i]-10; inum_firstPTR[i-1]=inum_firstPTR[i-1]+1; } else//元素[0],没有更多的元素要携带到 { 添加_resultPTR[i]=inum_firstPTR[i]+inum_secondPTR[i]; } } }
答案不会占用可用空间:您有溢出。要么让更多的空间可用,要么像C标准那样说:溢出调用未定义的行为,并在宏中使用括号后快乐地生活<代码>定义大小使用(大小最大值-1)否则像
2*SIZE\u使用
这样的东西会产生非常糟糕的结果(
10*SIZE\u最大值-1
相当于
(10*SIZE\u最大值)-1
)固定代码请。。。。。。
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];
        }
    }
}