私は完全にこの1つに困惑しています。私は簡単な等級計算機を作成しようとしています。はい、これは学校の割り当てです。しかし、締め切りと呼ばれるものがあり、私の教師は会うことが不可能になるので、私はすでに自分の仕事をしている成績評価プログラムを取り入れました。しかし、私は好奇心が強い人です。私の先生は私の質問に答えることができませんでした。Cでの文字列配列からのフル値を表示
私のプロジェクトでは、すべてがうまくいきます。しかし、自分の出力を印刷するときに、最初の生徒の名前が完全に表示されることはありません。私の人生では、他のすべてのループがどのように問題なく名前を生成するのかを理解し始めても、最初の反復はできません。私は間違って何をしましたか?
私は、私の問題が私の変数宣言のどこかにあるか、これについて述べています。どんな助けもありがたいです。私は他の方法を学ぶことはありません。
for (int m=0; m<numstudents; m++) {
printf("\n\n*****************\n\n***Report card***\n\n*****************");
printf("\nName of student: %s", namestudent[m]);
printf("\nPhysics: %.2f/100", physicsstudent[m]);
printf("\nChemistry: %.2f/100", chemistrystudent[m]);
printf("\nMath: %.2f/100", physicsstudent[m]);
total = physicsstudent[m]+chemistrystudent[m]+mathstudent[m];
realtotal = (total/300)*100;
printf("\nTotal: %.2f/300", total);
if(realtotal > 89) {
printf("\nYour letter grade: A");
} else if(realtotal > 79) {
printf("\nYour letter grade: B");
} else if(realtotal > 69) {
printf("\nYour letter grade: C");
} else if(realtotal > 49) {
printf("\nYour letter grade: D");
} else if((realtotal) < 50) {
printf("\nYour letter grade: F");
}
}
全体コード:
#include <stdio.h>
#include <string.h>
int main() {
char line[100][100], namestudent[20][20];
int numstudents, grade;
float realtotal, total, physicsstudent[100], chemistrystudent[100], mathstudent[100];
printf("\n***Welcome to the grade calculator***\n\n=>Press G to enter grade calculator\n\n=>Press H for help\n\nPlease enter your option: ");
char userinput = getchar();
if (userinput == 'g' || userinput == 'G') {
printf("\nWelcome to the grade calculator\nEnter the total number of students in your class: ");
scanf("%d", &numstudents);
if (numstudents <= 0) {
printf("Terminating program");
return(0);
}
for (int i=0; i<numstudents; i++) {
printf("\nPlease enter the name of student %d: ", i+1);
fgets(namestudent[i], sizeof(namestudent[i]), stdin);
namestudent[strlen(namestudent[i])-1][i] = '\0';
scanf("%s", namestudent[i]);
printf("Please enter %s\'s Physics score (out of 100 points): ", namestudent[i]);
scanf("%f", &physicsstudent[i]);
printf("Please enter %s\'s Chemistry score (out of 100 points): ",namestudent[i]);
scanf("%f", &chemistrystudent[i]);
printf("Please enter %s\'s Math score (out of 100 points): ",namestudent[i]);
scanf("%f", &mathstudent[i]);
}
for (int m=0; m<numstudents; m++) {
printf("\n\n*****************\n\n***Report card***\n\n*****************");
printf("\nName of student: %s", namestudent[m]);
printf("\nPhysics: %.2f/100", physicsstudent[m]);
printf("\nChemistry: %.2f/100", chemistrystudent[m]);
printf("\nMath: %.2f/100", physicsstudent[m]);
total = physicsstudent[m]+chemistrystudent[m]+mathstudent[m];
realtotal = (total/300)*100;
printf("\nTotal: %.2f/300", total);
if(realtotal > 89) {
printf("\nYour letter grade: A");
} else if(realtotal > 79) {
printf("\nYour letter grade: B");
} else if(realtotal > 69) {
printf("\nYour letter grade: C");
} else if(realtotal > 49) {
printf("\nYour letter grade: D");
} else if((realtotal) < 50) {
printf("\nYour letter grade: F");
}
}
} else if (userinput == 'h' || userinput == 'H') {
printf("~~~Help~~~\n\n*After typing G, you will be entering the grade calculator\n\n1.Then, you will be asked to enter the number of students that you are going to enter grades for.\nThis will be an integer value only.\n\n2.If you enter any other character (other thaninteger), you must prompt to the user to enter a valid integer number only.\n\n3.Then the calculator asks you for the names of the students (if you entered 3 in the step 1, the loop will run for 3 times....taking 3 student names).\n\n4.Then the program will start asking for the individual scores (physics, chemistry and math in our case).\n\n5.Finally, it will print a report card with scores and the grade (calculated). I have programmed to give A, B, C and F grades only.You are free to use other grading scales as well.");
} else {
printf("You entered a value that is not accepted. Terminating program");
}
return(0);
}
結果:その下
*****************
***Report card***
*****************
Name of student: a <--- input was 'apple'
Physics: 90.00/100
Chemistry: 90.00/100
Math: 90.00/100
Total: 270.00/300
Your letter grade: A
*****************
***Report card***
*****************
Name of student: orange
Physics: 90.00/100
Chemistry: 90.00/100
Math: 90.00/100
Total: 270.00/300
Your letter grade: A
*****************
***Report card***
*****************
Name of student: banana
Physics: 90.00/100
Chemistry: 90.00/100
Math: 90.00/100
Total: 270.00/300
Your letter grade: A
Process exited with code: 0
今後は、編集をスキップして追いかけます。 – KevinDTimm
問題ありません。私を助ける時間をとってくれてありがとう。 – Chapo