Kann mir bitte jemand sagen, was mit meinem Programm nicht stimmt? Mein Programm soll den größten Wert in finden int i[]
aber wenn ich es leite, fordert es mich auf, 11 Zahlen einzugeben, und stattdessen wird die größte Anzahl der 11 Zahlen angezeigt.
#include<stdio.h>
void main(void)
{
int i[] =
{
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85, //bus 8
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89, //bus15
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85, //22
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89, //23
};
int j;
int number,largest;
largest=0;
for(j=0;j<11;j++)
{
scanf_s("%d",&number);
if(number>largest)largest=number;
}
printf("Largest=%dn",largest);
}
Wie stelle ich das Programm so ein, dass es den größten Wert in findet int i[]
?.
Antworten:
9 für die Antwort № 1Versuchen Sie es mit std::max_element
von <algorithm>
:
#include <algorithm>
int i[] = { 1, 84, 11, 31 };
// for C++11 and later:
int max = *std::max_element(std::begin(i), std::end(i));
// for C++03 or earlier:
int max2 = *std::max_element(i, i + (sizeof(i) / sizeof(*i)));
oder wenn Ihr Array statisch ist, können Sie einfach eine C ++ 11-Initialisierungsliste verwenden:
auto i = { 1, 84, 11, 31 };
int max = std::max(i);
int max2 = std::max({ 1, 84, 11, 31 });
PS: Ein Live-Beispiel mit diesen Methoden kann gefunden werden Hier.
4 für die Antwort № 2
im <algorithm>
:
std::cout << *std::max_element(std::begin(i), std::end(i)) << std::endl;
oder wenn Sie eine initializer_list verwenden, um Ihre Nummern zu enthalten, die Sie direkt verwenden können std::max
:
auto i =
{
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85,
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89,
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85,
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89,
};
std::cout << std::max(i) << std::endl;
1 für die Antwort № 3
Sie müssen die Nummer und den größten Wert auf 0 initialisieren.
number = 0;
largest = 0;
oder es wird eine Zufallszahl gespeichert in Position im Speicher.
Versuchen
int largerst = 0;
for(int j=0;j < sizeof i;j++) {
if (i[j] > largest) largest = i[j];
}
cout << largest << endl;