初心者です。お手柔らかにお願い致します。
C言語です。
実行環境
WSL,Ubuntu
本題
10 人分の点数を入力し(input_score関数、 input_multiple_scores関数により動作確認済みです。)、その10 人の中に 60 点未満の人が何人いるか(問題)を数えて表示するプログラムを作っています。
問題点
以下のようにコードを書いたのですが、何故かm=0のときだけ「60 点未満の人が何人いるか」を表す変数ninzuuがカウント(+1)されたりされなかったりして適切に実行できず(最下部に実行結果画像を添付していますのでご覧ください。)非常に困っています。
拙いコードで申し訳ありませんが、どなたかご教授お願いただきたいです。
※線形探索のための関数 searchは、引数に int 型の配列と要素数、返却値は 60 点未満の人数にしなければならないという制限があります。
#include <stdio.h> int input_score(void); int input_multiple_scores(int prescore[],int n); int search(int b[],int n); int main(void){ int score[10]; int snum; for(int i=0;i<10;i++){ score[i]=input_multiple_scores(score,10); } //10 人分の点数を入力し、配列scoreに格納しました。 snum = search(score,10); //ここからが本題です。 printf("\n60 点未満の人は %d 名です。\n",snum); return 0; } int input_score(void){ int a; printf("値を入力してください:"); do{ scanf("%d",&a); if(a<0||a>100){ printf("0~100で再度入力してください。:"); } }while(a<0||a>100); return a; } //↑10 人分の点数入力(動作確認済)に用います。 int input_multiple_scores(int prescore[],int n){ for(int k=0;k<n;k++){ prescore[k]= input_score(); return prescore[k]; } } //↑10 人分の点数入力(動作確認済)に用います。 int search(int b[],int n){ int ninzuu=0; //その10 人の中に 60 点未満の人が「ninzuu」人いる、ということです。 for(int m=0;m<n;m++){ if(b[m]<60){ ninzuu += 1; //60 点未満であれば+1カウントします。 printf("m=%dでninnzuu1増えた\n ",m); //問題が解決次第、この1文は消します。 } } return ninzuu; }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/08 03:29