Ich arbeite derzeit an Code, der eine Folge von ganzen Zahlen in Form von m1, n1, m2, n2 einliest, bis ich eine Null eingebe und die Summe von m * n ausgibt. Folgendes habe ich bisher:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
int m, n, i, sum = 0;
bool plus = true;
scanf("%d", &m);
scanf("%d", &n);
for(i = m; i <= n; i++)
{
sum = sum + (m * n);
if(!plus)
{
putchar('+');
}
printf("%d*%d", m, n);
plus = false;
}
printf("=%d\n", sum);
return 0;
}
Wenn ich 1, 1, 0 eintippe, wird 1 * 1 = 1 ausgegeben, aber wenn ich 1, 2, 3, 4, 0 eintippe, wird 1*2+1*2=4 ausgegeben. Ich bin nur verwirrt, wie ich 1 * 2 und 3 * 4 berechnen kann.
Ich arbeite derzeit an Code, der eine Folge von ganzen Zahlen in Form von m1, n1, m2, n2 einliest, bis ich eine Null eingebe
Es scheint, dass der Ansatz, den Sie insgesamt verwenden, falsch ist. Sie sollten die Variablen m
und nicht eingeben n
. Zumindest sehe ich nicht, wo 0 eingegeben und in Ihrem Code überprüft wird.
Was du tust, ist Berechnung
sum = sum + (m * n);
n - m + 1
mal in der Schleife. Denn m
und n
entsprechend wurden like eingetragen 1
und 2
man bekam 4
( 1 * 2 + 1 * 2
).
Ich kann folgende Vorgehensweise vorschlagen.
#include <stdio.h>
int main(void)
{
printf( "Enter a sequence of integers (0 - exit): " );
long long int sum = 0;
int value, prev_value;
unsigned int i;
i = 0;
while ( scanf( "%d", &value ) == 1 && value != 0 )
{
if ( i % 2 )
{
if ( i != 1 ) printf( " + " );
printf( " %d * %d ", prev_value, value );
sum += ( long long int )prev_value * value;
}
else
{
prev_value = value;
}
++i;
}
if ( i % 2 )
{
if ( i != 1 ) printf( " + " );
printf( "%d", prev_value );
sum += prev_value;
}
printf( " = %lld\n", sum );
return 0;
}
Die Programmausgabe könnte so aussehen
Enter a sequence of integers (0 - exit): 1 2 3 4 0
1 * 2 + 3 * 4 = 14
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen