2013-03-18 84 views
-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?

+0

偶數和奇數的總數是'18'。 **'array_1'和'array_2'的總和分別是'1'和'8' ** – jrd1 2013-03-18 03:44:59

+0

@ jrd1也許他想把18的數字分成1和8嗎? – Patashu 2013-03-18 03:45:39

+0

@Patashu,我不知道! – jrd1 2013-03-18 03:46:07

回答

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低位3個數字,你可以這樣做(扭轉排列的順序):

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

試圖理解的代碼,而不是複製它,不然你會以後卡住。

+0

它是學校項目的一部分。如果總和的最後一位數字不是零,我需要從中減去10。它適用於某些條形碼或UPC代碼。 但有時候可能會有3位數字。我認爲最高可以是108.我怎麼做array_2 [2]? – Aaron 2013-03-18 20:46:08

+0

再次感謝你,你真的很有幫助。 – Aaron 2013-03-18 22:46:45

2

假設您想要將整數值分解爲數字作爲字符,請嘗試在整數上使用itoa。

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

「的char * itoa(int值,字符* STR,INT基峯); 使用指定的基本整數值到一個空終止字符串轉換,並將結果存儲在數組中由STR給出參數。」

+0

謝謝你看看,並試試看。 – Aaron 2013-03-18 03:47:49

+0

@JimBalter對於我的粗心大意,我感到抱歉。 – prehistoricpenguin 2013-03-18 06:16:59

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