Diese Frage erfordert die Realisierung einer Funktion zur Berechnung der Ordnung des Polynoms f(x)= der Wert am Punkt n
mit dem Koeffizienten von a[0]
....a[n]
x
Definition der Funktionsschnittstelle:
double f( int n, double a[], double x );
Wo n
ist die Ordnung des Polynoms, a[]
wo ist der Koeffizient gespeichert und x
ist der gegebene Punkt. Die Funktion soll f(x)
den Wert des Polynoms zurückgeben.
Beispielhafter Schiedsrichtertestablauf:
#include <stdio.h>
#define MAXN 10
double f( int n, double a[], double x );
int main()
{
int n, i;
double a[MAXN], x;
scanf("%d %lf", &n, &x);
for ( i=0; i<=n; i++ )
scanf("%lf", &a[i]);
printf("%.1f\n", f(n, a, x));
return 0;
}
/* 你的代码将被嵌在这里 */
Eingabebeispiel:
2 1.1
1 2.5 -38.7
Beispielausgabe:
-43.1
antworten:
Aus der Formel in der Abbildung lässt sich Folgendes erkennen:
Die gesamte Summierung kann in zwei Teile unterteilt werden: a[0]+a[1]+...a[n] und Summierung von x von 0 bis n-ter Potenz
Dann schreiben wir den ersten Teil des Codes nach der Idee:
int sum1=0;
for(j=0;j<=n;j++)
{
sum1+=a[j];
}
Der zweite Teil des Codes:
int sum2=0;
for(j=0;j<=n;j++)
{
sum2*=x;
}
Nachdem ich dies geschrieben habe, muss es viele nachdenkliche Freunde geben, die feststellen werden, dass hier ein Problem vorliegt. Wenn j = 0 ist, sollte die 0. Potenz von x 0 sein. Aus der zweiten Schleife sollte sum2 sum2 * = x sein, also sum2 = 0 beim ersten Durchlaufen der Schleife. Und das Ergebnis des Codes hier ist sum2=x, dann müssen wir den Code neu anordnen:
int sum2 = 0;
for (j = 0; j <= n; j++)
{
if (j == 0)
sum2 = 1.0;
else
sum2 *= x;
}
Zusammenfassend sind die beiden Codeteile wie folgt integriert:
double f(int n,double a[],double x)
{
int j=0;
double sum1=1,sum=0;
for(j=0;j<=n;j++)
{
if(j==0)
sum1=1.0;
else
sum1*=x;
sum+=a[j]*sum1;
}
return sum;
}
Dies ist das Ende der heutigen Frage zum Teilen der C-Sprache. Bis zum nächsten Mal ~