GOOGLE ADS

Montag, 11. April 2022

Lesen Sie die Eingabe und zeigen Sie die Ausgabe in Stern an

Ich möchte ein Programm erstellen, das Partituren von Benutzern lesen und die Partiturausgabe in Form von Sternen anzeigen kann. Aber es scheint, dass mein Code immer eine Endlosschleife bekommt. Kann mir jemand sagen, was mit meiner Schleife falsch ist.

#include <stdio.h>
int main()
{

int i, k, j;
int score[5];

for(i = 1; i < 6; i++)
{
printf("\nplease enter the score for %d match: ", i);
scanf("%d", &score[i]);
}
printf("\nstatistics collection points for 5 matches\n\n");

for (k = 1; k < 6; k++){
printf("%d. ", k);
for(j = 1; j <= score[k]; j++){
printf("*");
}
printf("\n");
}
return 0;
}


Lösung des Problems

Array-Indizes basieren auf 0 in C. Für ein Array mit 5 Elementen liegen die Indizes also zwischen 0 und 4 einschließlich. Sie verwenden die Indizes 1-5, was zu einem Pufferüberlauf führt. Unten ist das korrigierte Programm mit den korrigierten forSchleifen, um die richtigen Indizes zu verwenden:

#include <stdio.h>
#define NUM_SCORES 5
int main()
{

int i, k, j;
int score[NUM_SCORES];

for(i = 0; i < NUM_SCORES; i++)
{
printf("\nplease enter the score for %d match: ", i);
scanf("%d", &score[i]);
}
printf("\nstatistics collection points for 5 matches\n\n");

for (k = 0; k < NUM_SCORES; k++){
printf("%d. ", k);
for(j = 1; j <= score[k]; j++){
printf("*");
}
printf("\n");
}
return 0;
}

Sie sollten auch eine Überprüfung hinzufügen, um sicherzustellen scanf, dass jede Eingabe erfolgreich gelesen werden kann.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...