「int 型配列とその要素数を引数に受け取り、配列の要素を逆転させる(配列の中身を書き換える)関数 reverse() を繰り返しで作れ。」というのが条件です。
以下、正解コード。
#include<stdio.h> #define SIZE 10 void printarray(int a[],int n){ for(int i=0;i<n;i++){ printf("%d,",a[i]); } printf("\n"); } void reverse(int a[],int n){ int i,tmp; for(int i=0;i<n/2;i++){ tmp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=tmp; } } int main(void){ int i, score[SIZE]; for(i = 0; i < SIZE; i++){ score[i] = (i*83+11)%101; } printarray(score, SIZE); reverse(score, SIZE); printarray(score, SIZE); return 0; }
void型のreverse節の処理について質問です。
・なぜ、for文の範囲のnを半分にするのか。
tmp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=tmp;
の処理の2行目が紙に書いてみてもピンとこないので何かヒントをいただけるとうれしいです。
宜しくお願いいたします。
とりあえず、初心者マーク付いてるのにタイトルに[初心者]と書く必要はないので消しましょう。
回答5件
あなたの回答
tips
プレビュー