在這個程式中,我想使用結構獲取學生資訊并列印位置。在測驗部分,只有最好的一個會計入三分。現在,當我運行程式時,它不需要任何輸入。它只是詢問學生的數量,然后終止并且不接受任何其他輸入。有人可以找出我的問題所在。
struct student_profile
{
char name[100];
int ID[100];
int Final;
int mid;
int attendance;
int assignment;
int quiz1;
int quiz2;
int quiz3;
} s[100];
int comparison(int quiz1, int quiz2, int quiz3, int quiz_best)
{
if (quiz1>quiz2 && quiz1>quiz3)
{
printf("Best quiz mark is: \n",quiz1);
quiz_best = quiz1;
}
else if (quiz2>quiz1 && quiz2>quiz3)
{
printf("Best quiz mark is: \n",quiz2);
quiz_best = quiz2;
}
else
printf("Best quiz mark is: \n",quiz3);
quiz_best = quiz3;
return quiz_best;
}
int main()
{
struct student_profile;
int i,n,quiz_best;
printf("Number of the student: \n");
scanf("%d",&n);
for(i=0,i<n; i ;)
{
printf("\nStudent No: %d\n",i);
printf("Name: ");
scanf("%d", &s[i].name);
printf("ID: ");
scanf("%d",&s[i].ID);
printf("Final: ");
scanf("%d",&s[i].Final);
printf("mid: ");
scanf("%d",&s[i].mid);
printf("attendance: ");
scanf("%d",&s[i].attendance);
printf("assignment: ");
scanf("%d",&s[i].assignment);
printf("quiz1: ");
scanf("%d",&s[i].quiz1);
printf("quiz2: ");
scanf("%d",&s[i].quiz2);
printf("quiz3: ");
scanf("%d",&s[i].quiz3);
printf("\n Students Informations \n");
for(i=0,i<n; i ;)
{
printf("\nStudent No: %d\n",i);
printf("\nName: %s\n",s[i].name);
printf("\nID: %d\n",s[i].ID);
printf("\nFinal: %d\n",s[i].Final);
printf("\nmid: %d\n",s[i].mid);
printf("\nattendance: %d\n",s[i].attendance);
printf("\nassignment: %d\n",s[i].assignment);
printf("\nquiz1: %d\n",s[i].quiz1);
printf("\nquiz2: %d\n",s[i].quiz2);
printf("\nquiz3: %d\n",s[i].quiz3);
printf("\nThe best quiz mark is: ",quiz_best);
comparison(s[i].quiz1,s[i].quiz2,s[i].quiz3,quiz_best);
}
}
} ```
uj5u.com熱心網友回復:
你的 if 有問題
for(i=0,i<n; i ;)
應該
for(i=0;i<n; i )
這解決了您的實際問題。
為避免這種麻煩,請使用使編譯器更嚴格的標志進行編譯。使用 gcc/clang,例如有 -Wall -Wextra -Werror
uj5u.com熱心網友回復:
你的代碼有很多問題:
缺少括號:
else printf("Best quiz mark is: \n",quiz3); quiz_best = quiz3;它應該是:
else { printf("Best quiz mark is: \n",quiz3); quiz_best = quiz3; }
該宣告struct student_profile;在main()函式是無用的。
scanf()用于%d代替%s字串值。
您有具有相同索引變數的嵌套回圈:
for(i=0,i<n; i ;)無論如何都是不正確的:它應該是for (i = 0; i < n; i )printf缺少 a%d來列印quiz_best變數。quiz_best在計算之前列印該
comparison函式應回傳quiz_best,更新函式引數對呼叫者的變數沒有影響。
這是一個修改后的版本:
#include <stdio.h>
struct student_profile {
char name[100];
int ID[100];
int Final;
int mid;
int attendance;
int assignment;
int quiz1;
int quiz2;
int quiz3;
} s[100];
int comparison(int quiz1, int quiz2, int quiz3) {
int quiz_best;
if (quiz1 > quiz2 && quiz1 > quiz3) {
printf("Best quiz mark is: \n", quiz1);
quiz_best = quiz1;
} else
if (quiz2 > quiz1 && quiz2 > quiz3) {
printf("Best quiz mark is: \n", quiz2);
quiz_best = quiz2;
} else {
printf("Best quiz mark is: \n", quiz3);
quiz_best = quiz3;
}
return quiz_best;
}
int main() {
int i, n, quiz_best;
printf("Number of students: \n");
scanf("%d", &n);
for (i = 0; i < n; i ) {
printf("\nStudent No: %d\n", i);
printf("Name: ");
scanf("
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/341521.html
