各配列に格納されている数値を一つずつずらすコード(以下に示してます)を作成したのですがうまく動作しません.
数値入力を3,4,5と入力すると,rotation関数を通した後は0,0,0と表示されます.
また、rotation関数で,for文の条件をj<2 に変更すると,0,0,3と表示されます.
配列と関数とポインタの表記も理解度は微妙です…
void rotation(int *a);
int main(void)
{
int a[3] = { 0 };
int i;
int k;
printf("数値入力\n"); for (i = 0; i < 3; i++) { scanf("%d", &a[i]); } printf("入力は以下です\n"); for (i = 0; i < 3; i++) { printf("%d\n", a[i]); } printf("rotation後は以下です\n"); do { rotation(a); printf("rotationする場合は1、しない場合は0を入力:"); scanf("%d", &k); } while (k == 0); return 0;
}
void rotation(int *a) //値が格納されている配列を一つずつずらす関数
{
int j;
int b[3] = { 0 };
for (j = 0; j < 3; j++); { if (j != 2) { b[j] = a[j+1]; //配列aが1ずつズレて配列bに格納 } else { b[j] = a[0]; // 配列aの先頭は配列bの最後尾 } } for (j = 0; j < 3; j++) { printf("%d\n", b[j]); }
}
ソースコードはそれを書くための記法(```で上下を囲む)があるのでそれを使ってください。インデントが消えてしまいます。
回答2件
あなたの回答
tips
プレビュー