Member 14001695 Ответов: 2

Завершите этот вложенный цикл в C.


#include <stdio.h> 
#include <limits.h> 
int main () 
{ 
  /* variable definition: */ 
  char StudentName[100];
  char end;
  float ExamValue, Sum, Avg; 
  int students,exams; 
   // Loop through Students 
  for (students=1; students <INT_MAX ; students++)
  { 
     // reset Sum to 0 
     Sum =0.0;   
     printf("Enter Student Name \n"); 
     scanf("%s", StudentName);    
     // Nested Loop for Exams 
    for (exams=0; exams < 3; exams++)
    { 
        printf ("Enter exam grade: \n"); 
        scanf("%f", &ExamValue); 
        Sum += ExamValue;
    }    
    Avg = Sum/3.0; 
    printf( "Average for %s is %f\n",StudentName,Avg);
	if (StudentName == 'end')
	break;
}
  return 0; 
}


Что я уже пробовал:

Я пробовал разные версии этого, но все равно ничего.

2 Ответов

Рейтинг:
0

Richard MacCutchan

Это даже не будет компилироваться, потому что оператор if в конце неверен.

if (StudentName == 'end')
break;

Вы не можете сравнивать строки таким образом, и вы пытаетесь сравнить символ массив- ни одного персонажа. А также струна конец должно быть, в двойных кавычках. Замените его следующим текстом:
if (strcmp(StudentName, "end") == 0)
break;


Рейтинг:
0

OriginalGriff

Начните с правильного отступа кода, чтобы он не выглядел так, как будто заканчивается ложной закрытой фигурной скобкой:

#include <stdio.h> 
#include <limits.h> 
int main () 
{ 
  /* variable definition: */ 
  char StudentName[100];
  char end;
  float ExamValue, Sum, Avg; 
  int students,exams; 
  // Loop through Students 
  for (students=1; students <INT_MAX ; students++)
  { 
    // reset Sum to 0 
    Sum =0.0;   
    printf("Enter Student Name \n"); 
    scanf("%s", StudentName);    
    // Nested Loop for Exams 
    for (exams=0; exams < 3; exams++)
    { 
      printf ("Enter exam grade: \n"); 
      scanf("%f", &ExamValue); 
      Sum += ExamValue;
    }    
    Avg = Sum/3.0; 
    printf( "Average for %s is %f\n",StudentName,Avg);
    if (StudentName == 'end')
    {
      break;
    }
  }
  return 0; 
}
Теперь то, что я хотел бы посмотреть, - это перемещение "теста выхода" выше в функции, так что это первое, что вы делаете:
#include <stdio.h> 
#include <limits.h> 
int main () 
{ 
  /* variable definition: */ 
  char StudentName[100];
  char end;
  float ExamValue, Sum, Avg; 
  int students,exams; 
  // Loop through Students 
  for (students=1; students <INT_MAX ; students++)
  { 
    printf("Enter Student Name \n"); 
    scanf("%s", StudentName);    
    if (strcmp(StudentName, "end") == 0)
    {
      break;
    }
    Sum =0.0;   
    for (exams=0; exams < 3; exams++)
    { 
      printf ("Enter exam grade: \n"); 
      scanf("%f", &ExamValue); 
      Sum += ExamValue;
    }    
    Avg = Sum/3.0; 
    printf( "Average for %s is %f\n",StudentName,Avg);
  }
  return 0; 
}
Если это не решит вашу проблему, тогда вам нужно объяснить гораздо более подробно, что именно он делает, чего вы не ожидали, или не делает того, что вы сделали. И что вы сделали, чтобы выяснить, почему - включая то, что отладчик показал вам во время выполнения вашего кода.