- ベストアンサー
学生番号が正常に出力されていません
この質問と同じ質問が他に1つありますが、何分急いでいますのでご了承下さい。以下のプログラムで実行結果が、入力された得点に対応する学生番号を得点の高い順に並び替えて出力したいのです。得点の方は正常に出力されているのですが学生番号がおかしな出力になっています。しかし、どこをどう直せば良いか分かりません。なので分かりやすく説明お願い致します。 #include<stdio.h> #define M 10 #define N 5 void sort_score(int score_cpy[M]); int linear_search(int score_cpy[M],int key); void exchange_number(int order[M],char number[M][N]); int no; int main(void) { int i,score[M],score_cpy[M],order[M]; char number[M][N]; printf("人数を入力して下さい:"); scanf("%d",&no); ("学生番号と平均点を入力して下さい。"); for(i=0;i<no;i++){ printf("学生番号:"); scanf("%s",&number[i][N]); printf("得点:"); scanf("%d",&score[i]); } for(i=0;i<=M;i++){ score_cpy[i]=score[i]; } sort_score(score_cpy); for(i=0;i<M;i++){ order[i]=linear_search(score_cpy,score[i]); } exchange_number(order,number); printf("\n\n得点の高い順に並び替えて表示します\n\n"); for(i=0;i<no;i++){ printf("学生番号 :%s %d点\n",number[i],score_cpy[i]); } return 0; } void sort_score(int score_cpy[M]) { int i,j,score; for(j=0;j<no-1;j++){ for(i=no-1;i>0;i--){ if(score_cpy[i-1]<score_cpy[i]){ score=score_cpy[i-1]; score_cpy[i-1]=score_cpy[i]; score_cpy[i]=score; } } } } int linear_search(int score_cpy[M],int key) { int i; for(i=0;i<no;i++){ if(score_cpy[i]==key){ return i; } } return -1; } void exchange_number(int order[M],char number[M][N]) { int i,temp[M]; for(i=0;i<M;i++){ if(order[i]==-1)break; temp[i]=number[i][N]; } for(i=0;i<M;i++){ if(order[i]==-1)break; number[order[i]][N]=temp[i]; } } 人数を入力して下さい:10 学生番号:y3051 得点:85 学生番号:y3052 得点:65 学生番号:y3053 得点:75 学生番号:y3054 得点:63 学生番号:y3055 得点:95 学生番号:y3056 得点:68 学生番号:y3057 得点:80 学生番号:y3058 得点:90 学生番号:y3059 得点:83 学生番号:y3060 得点:70 得点の高い順に並び替えて表示します 学生番号 : 95点 学生番号 :y3051y3052y3053y3054y3055y3056y3057y3058y3059y3060 90点 学生番号 :y3052y3053y3054y3055y3056y3057y3058y3059y3060 85点 学生番号 :y3053y3054y3055y3056y3057y3058y3059y3060 83点 学生番号 :y3054y3055y3056y3057y3058y3059y3060 80点 学生番号 :y3055y3056y3057y3058y3059y3060 75点 学生番号 :y3056y3057y3058y3059y3060 70点 学生番号 :y3057y3058y3059y3060 68点 学生番号 :y3058y3059y3060 65点 学生番号 :y3059y3060 63点
- みんなの回答 (3)
- 専門家の回答
お礼
先ほど、実際にプログラムを書きなおし起動させてみると見事に実行結果通りの正常な値が出ました!。本当にありがとうございます。