0

ここに問題があります: http://cps125.scs.ryerson.ca/labs/homework8.gif

これが私の試みです:

#include <stdio.h>

void tenfold(int (*array1)[9], int (*array2)[9])
{
    int i;
    for (i = 0; i < 9; i++) {
        if ((*array1)[i] > 0) {
            (*array2)[i] = 10 * (*array1)[i];
        } else {
            (*array2)[i] = (*array1)[i];
        }
    }
}

int main()
{
    int array1[9] = { 3, 4, 5, 6, 7, -8, -9, 1, 2 }, array2[9], i;

    tenfold(&array1, &array2);

    for (i=0; i < 9; i++) {
        printf("%lf ", array2[i]);
    }
    return 0;
}

出力は次のとおりです。

44100667367791664000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000.000000 441006673677917200000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000.000000 4410066736779177 60000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000.000000 4410066736779183200000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000.000000 44100667367791888000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000.000000 44100691391845304000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000.000000 441006913918452980000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000.000000 4410066736779155 20000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000.000000 4410066736779160800000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000 4410066736779155 20000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000.000000 4410066736779160800000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000.000000000000 4410066736779155 20000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000.000000 4410066736779160800000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000.000000000000 4410066736779160800000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000.000000000000 4410066736779160800000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000.000000

4

3 に答える 3

4

少なくともここに問題があります:

printf("%lf ", array2[i]);

%lf文字通り「ロングフロート」を意味しますが、整数を出力したい場合:

printf("%i\n", array2[i]);

また、printf\nはフラッシュを待機することにも注意してください。

編集: newacct が指摘したように、varargs が に昇格するため、最終的には%f両方%lfです。doublefloatdouble

于 2013-04-01T17:33:43.370 に答える
0

関数内の入力配列の定義にアスタリスクを追加する必要はありませんtenfold

次のように定義するだけです

void tenfold(int array1[9], int array2[9])

および関数*を使用するときはアスタリスクを削除しますarray1array2tenfold

void tenfold(int array1[9], int array2[9])
{
    int i;
    for (i = 0; i < 9; i++) {
        if ((array1)[i] > 0) {
            (array2)[i] = 10 * (array1)[i];
        } else {
            (array2)[i] = (array1)[i];
        }
    }
}

tenfoldで関数を呼び出すと、次のようになりますmain

tenfold(array1, array2);
于 2013-04-01T17:33:43.513 に答える
0

「%lf」は int ではなく float の形式です。

于 2013-04-01T17:35:36.870 に答える