-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。値を返さない..。

編集:

の下位3桁が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 に答える