누구든지 내 코드를 변경하여 주 함수에서 수행되는 대신 테이블의 각 행을 평균화하는 함수를 어떻게 포함시킬 수 있는지 알고 있습니까? process_student 함수로 코드를 실행할 때마다 테이블을 전혀 인쇄하지 않습니다. 내 "작동하지 않는"코드를 먼저 포함하고 process_student 함수가 포함 된 실패한 코드를 포함했습니다. 미리 감사드립니다!C 프로그램 내에서 함수를 어떻게 중첩시킬 수 있습니까?
또한 리디렉션 된 입력 .txt 파일을 사용하고 있습니다.
#include <stdio.h>
int main(void)
{
int month = 0;
int date = 0;
int year = 0;
int x = 0;
int id = 0;
int min_user = 0;
int ms = 0;
int realTest = 0;
float min = 10000000;
float t1 = 0;
float t2 = 0;
float t3 = 0;
float t4 = 0;
float avg_trial = 0;
scanf("%d %d %d", &month, &date, &year);
printf("\nStudy Date: %02d/%02d/%02d\n", month, date, year);
printf("Student Trial-1 Trial-2 Trial-3 Trial-4 Average\n");
while (x < 10) {
realTest = 0;
scanf("%d %f %f %f %f", &id, &t1, &t2, &t3, &t4);
if (t1>0)
realTest += 1;
if (t2>0)
realTest += 1;
if (t3>0)
realTest += 1;
if (t4>0)
realTest += 1;
avg_trial = (t1+t2+t3+t4)/realTest;
if (realTest == 0)
avg_trial = 0.000;
if (id<1000) {
printf(" %d %.3f %.3f %.3f %.3f %.3f\n", id, t1, t2, t3, t4, avg_trial);
x++;
}
else {
printf(" %d %.3f %.3f %.3f %.3f %.3f\n", id, t1, t2, t3, t4, avg_trial);
x++;
}
if (avg_trial < min && avg_trial > 0) {
min = avg_trial;
min_user = id;
}
}
ms = min * 1000;
printf("\nStudent %d had the lowest average of %.3f seconds (%d milliseconds)\n", min_user, min, ms);
return 0;
}
이것은 process_student 기능이 포함되어 내 실패 코드 : 사용법 #include
int main(void)
{
int month = 0;
int date = 0;
int year = 0;
int x = 0;
int id = 0;
int min_user = 0;
int ms = 0;
float min = 10000000;
float t1 = 0;
float t2 = 0;
float t3 = 0;
float t4 = 0;
float avg_trial = 0;
scanf("%d %d %d", &month, &date, &year);
printf("\nStudy Date: %02d/%02d/%02d\n", month, date, year);
printf("Student Trial-1 Trial-2 Trial-3 Trial-4 Average\n");
ms = process_student(min) * 1000;
printf("\nStudent %d had the lowest average of %.3f seconds (%d milliseconds)\n", min_user, min, ms);
int process_student(void) {
float t1, t2, t3, t4, avg_trial, min;
int min_user;
int realTest = 0;
while (x < 10) {
scanf("%d %f %f %f %f", &id, &t1, &t2, &t3, &t4);
if (t1>0)
realTest += 1;
if (t2>0)
realTest += 1;
if (t3>0)
realTest += 1;
if (t4>0)
realTest += 1;
avg_trial = (t1+t2+t3+t4)/realTest;
if (realTest == 0)
avg_trial = 0.000;
if (id<1000) {
printf(" %d %.3f %.3f %.3f %.3f %.3f\n", id, t1, t2, t3, t4, avg_trial);
x++;
}
else {
printf(" %d %.3f %.3f %.3f %.3f %.3f\n", id, t1, t2, t3, t4, avg_trial);
x++;
}
if (avg_trial < min && avg_trial > 0) {
min = avg_trial;
min_user = id;
}
}
return min;
return min_user;
}
return 0;
}
... 왜? 이 기능이 존재하지 않는다는 것 외에도, 왜이 프로그램은 중첩 된 함수를 필요로합니까? – Leushenko
기본적으로 이것은 C 코드에서 잘못된 것입니다. 중첩 된 함수는 C에서 허용되지 않습니다. 함수를 main에서 꺼내면 괜찮을 것입니다. – shuttle87
귀하의 게시물은 적절한 코드 형식으로 인해 많은 이점을 얻습니다. 그것은 두 배의'return' 문장을 사용하는 것을 피할 수 있습니다! – ChiefTwoPencils