Wie kann man mithilfe einer Schleife nur gerade Zahlen ausgeben in C?
Gib eine Zahl ein, das Programm soll dann gucken ob es eine gerade oder ungerade Zahl ist, dann sollen alle geraden Zahlen bis zur eingebenen Zahl ausgegeben werden.
z.B.
Eingabe: 8
Ausgabe: 2,4,6,8
oder
Eingabe: 11
Ausgabe: 2,4,6,8,10
4 Antworten
for(int i = 2; i <= eingabe; i+= 2)
Wieso soll man gucken, ob die Zahl grade oder ungrade ist? ändert doch nichts an der Ausgabe (Ansonsten schau dir mal den Modulo Operator an)
Es gibt verschiedene Lösungsansätze.
#include <stdio.h>
int main() {
int num;
scanf("%d", &num);
printf("Zahl %d\n", num);
int i;
for (i = 2; i <= num; i += 2)
printf("%d ", i);
/* oder */
for (i = 2; i <= num; ++i)
if (i % 2 == 0)
printf("%d ", i);
return 0;
}
Neben der Möglichkeit von hairybear kann man natürlich auch einfach bis floor(n/2) im Einerstepping laufen und dann einfach den Basiswert mit 2 multiplizieren.
Oder einfach ein Single-Bit-Shift durchführen, oder ...
Der Kreativität sind keine Grenzen gesetzt.
Der Modulo Operator sollte dir helfen: % (Division mit Rest)
for(iB=1;iB<iA;iB++);
";" am Ende ist falsch. Außerdem inkrementierst Du nur um 1. Wie wäre es mit iB+=2?
else(iA %2==1);
";" ist ebenfalls falsch.
for(iB=1;iB<iA;iB++)
Auch hier nur ein Inkrement um 1. Wie wäre es mit iB+=2
Die Schleifen müssen in "zweier-Schritten" voranschreiten, Du möchtest doch nur die geraden Zahlen.
int main()
{
int iA;
int iB;
printf("Eingabe iA: \t");
scanf("%d",&iA);
// if((iA %2)==0)
{
for(iB=2;iB<iA;iB+=2)
{
printf("%d",iB);
}
}
return 0;
}
danke so müsste es richtig sein
Kannst den ehemaligen Block "{}" für die auskommentierte Bedingung auch noch entfernen. Dann sieht es auch etwas sauberer aus.
Gruß
Soweit war ich auch schon nur gab er was falsches aus
int iA;
int iB;
printf("Eingabe iA: \t");
scanf("%d",&iA);
if((iA %2)==0)
{
for(iB=1;iB<iA;iB++);
{
printf("%d",iB);
}
}
else(iA %2==1);
{
iA-1;
for(iB=1;iB<iA;iB++)
{
printf("%d",iB);
}
}
return 0;