-2

我将如何将已计算的数字放入数组中?例如,如果我有以下功能:

int sum_even ( int p1, int p3, int p5, int p7, int p9, int p11){
even_total = array_1[1] + array_1[3] + array_1[5] + array_1[7] + array_1[9] + array_1[11];
printf("The sum of the even numbers: %d\n", even_total);
return;
}

int sum_odd (int p2, int p4, int p6, int p8, int p10, int p12){
odd_total = array_1[0] + array_1[2] + array_1[4] + array_1[6] + array_1[8] + array_1[10] + array_1[12];
printf( "The sum of the odd numbers: %d\n", odd_total);
return;
}

int total (int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10, p11, p12){
total_all = odd_total + even_total;
printf( "The total of the numbers is: %d\n", total_all);
return;
}

现在说偶数和奇数的总和 (total_all) 是 18。我将如何拆分它们以便 array_2[1] 为 1 而 array_2[2] 为 8?

4

3 回答 3

2

假设您想将整数值拆分为其数字作为字符,请尝试在整数上使用 itoa。

http://www.cplusplus.com/reference/cstdlib/itoa/

"char * itoa ( int value, char * str, int base ); 使用指定的基数将整数值转换为以空字符结尾的字符串,并将结果存储在 str 参数给定的数组中。

于 2013-03-18T03:46:52.947 回答
1

现在说偶数和奇数的总和 (total_all) 是 18。我将如何拆分它们以便 array_2[1] 为 1 而 array_2[2] 为 8?

array_2[1] = total_all / 10;
array_2[2] = total_all % 10;

但要注意 C 数组是 0 索引的,所以你可能想要

array_2[0] = total_all / 10;
array_2[1] = total_all % 10;

你为什么要这样做呢?

请注意,您的代码还有许多其他问题,例如您将奇数求和并将其称为偶数和,将偶数值求和并将其称为奇数和,提供您从未使用过的参数,声明要返回的函数int但不返回值...

编辑:

如果你想要 的三个低位数字total_all,你可以这样做(颠倒数组的顺序):

array_2[0] = total_all % 10; // 1's place
array_2[1] = (total_all / 10) % 10; // 10's place
array_2[2] = (total_all / 100) % 10; // 100's place

如果你想要n数字,你可以这样做:

int temp_tot = total_all;
for (int i = 0; i < n; i++)
{
    array_2[i] = temp_tot % 10;
    temp_tot /= 10;
}

尝试理解代码,而不仅仅是复制它,否则你以后会卡住。

于 2013-03-18T06:04:25.447 回答
0
#include <stdio.h>
#include <math.h>

int nSplit(int a[], int n){
    int p, d, i;
    p = (int)log10((double)n);//  n > 0

    d = n;
    for(i=p;i>=0;--i){
        a[i] = d % 10;
        d /=  10;
    }
    return p+1;
}

int main(void){
    int array[16] ={0};
    int len;
    len=nSplit(array, 18);
    {   //test print
        int i;
        for(i=0;i<len;++i)
            printf("%d\n", array[i]);
    }

    return 0;
}
于 2013-03-18T07:49:15.813 回答