とっておきの手土産を教えて

C言語の課題が出たのですが自力でやっても分かりませんでした。

要素数がnであるint型の配列v2の並びを反転したものをint型の配列v1に格納する関数を作成せよ.
• 条件
1. 関数の定義はvoid intary_revcpy(int v1[], const int v2[], int n)とする
2. 要素を反転したいint型の配列は配列x1とする
3. 反転先のint型の配列は配列x2とする
4. 配列x1の要素は,scanf関数によりキーボード入力する
5. オブジェクト形式マクロにより要素数nを5と定義する

一応できるところまでは自力でやったのですがどうも反転が上手く行きません。
実行結果も失敗しているのでどこかダメか指摘をお願いします

#include<stdio.h>
#define NUMBER 5
void intary_revcpy(int v1[], const int v2[], int n)
{
int i ;

for (i = 0; i < n; i++) {
v1[4-i] = v2[i];
printf("x2[%d]:%d\n", i,v1[i]);
}

return;
}

int main(void)
{
int i;
int x1[NUMBER];
int x2[NUMBER];


for (i = 0; i < NUMBER; i++) {
printf("x1[%d]:", i);
scanf("%d", &x1);
}

printf("反転コピーしました\n");

intary_revcpy(x2, x1, NUMBER);


return 0;
}

A 回答 (3件)

もうちょいですね。


貴方のソースにコメントを書いたので、直してください。

#include<stdio.h>
#define NUMBER 5
void intary_revcpy(int v1[], const int v2[], int n)
{
int i ;

for (i = 0; i < n; i++) {
v1[4-i] = v2[i]; // 4-iではダメ
printf("x2[%d]:%d\n", i,v1[i]); // ここでは出力しない
}

return;
}

int main(void)
{
int i;
int x1[NUMBER];
int x2[NUMBER];


for (i = 0; i < NUMBER; i++) {
printf("x1[%d]:", i);
scanf("%d", &x1); // &x1ではダメ
}

printf("反転コピーしました\n");

intary_revcpy(x2, x1, NUMBER);

// ここで結果を出力する

return 0;
}
    • good
    • 0

printf("反転コピーしました\n");



intary_revcpy(x2, x1, NUMBER);

実行してから表示だろ
    • good
    • 0
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報