如何将已计算的数字输入数组并将其输入? 例如,如果我有这些功能:
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 :(得分: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;
}