将数字输出写入数组

时间:2013-03-18 03:41:32

标签: c arrays output

如何将已计算的数字输入数组并将其输入? 例如,如果我有这些功能:

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?

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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;
}

尝试理解代码,而不仅仅是复制代码,否则以后会陷入困境。

答案 2 :(得分: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;
}