#include <stdio.h>
void hikaku_irekae(int a, int b, int c);
int main(void){
int i, data[3];
for (i=0; i<3; i++){
printf("Please input an integer\n");
scanf("%d", &data[i]);}
printf("[before]x=%d, y=%d, z=%d\n",data[0], data[1], data[2]);
hikaku_irekae(data[0], data[1], data[2]);
printf("[mid]%d\n",data[1]);
return 0;}
void hikaku_irekae(int a, int b, int c){
int i, j, tmp, data[3];
data[0]= a;data[1]= b;data[2]= c;
for (i=0; i<3; i++){
for (j=i+1; j<3; j++){
if (data[i]<data[j]){
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}}}
data[1]=-999;
}
キーボードから入力される3つの整数について,その中央値を出力することを意図して作成された.しかし,正しく動作しない.
  (1)正しく動作しない理由を分かりやすく説明しなさい。(図を用いるなど、説明方法は自由)
  (2)関数部分をint型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
  (3)関数部分をvoid型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
  (4)(関数部分をvoid型とした)同様のプログラムで、ソート(並べ替え)プログラムを作成しなさい。ソートの方法は特に指定しない

どうか今日中にお願い致します。