【问题标题】:Writing Number Outputs to Array将数字输出写入数组
【发布时间】:2013-03-18 03:41:32
【问题描述】:

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

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?

【问题讨论】:

  • 奇偶总数为18array_1array_2之和怎么能分别是18
  • @jrd1 也许他想把18的数字分成1和8?
  • @Patashu,我不知道!
  • 我这样做是因为如果最后一位不是零,我需要取最后一位并从中减去 10。

标签: c arrays output


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢 我会研究一下并试一试。
  • @JimBalter 很抱歉我的粗心。
【解决方案2】:

现在说偶数和奇数的总和 (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;
}

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

【讨论】:

  • 它是学校项目的一部分。如果总和的最后一位不是零,我需要从中减去 10。它适用于某些条形码或 UPC 代码。但有时可能有 3 位数。我认为它可以达到的最高值是 108。我该怎么做 array_2[2]?
  • 再次感谢,您真的很有帮助。
【解决方案3】:
#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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2014-04-26
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多