C语言根据函数y=x^2-8x+sinx计算x=1,2,3,……,10时的函数值y,并计算和输出这些y值中的最小值(保留两位小数)及对应的x取值

C语言根据函数y=x^2-8x+sinx计算x=1,2,3,……,10时的函数值y,并计算和输出这些y值中的最小值(保留两位小数)及对应的x取值

我是小白,如有错误还行见谅。
#include <stdio.h>
#include <math.h>
int fun(int n)
{
int i;
double sum,a[10];
sum=nn-8n+sin(n);
return sum;
}
int main()
{
int x,i,j;
double y,a[10];

for(i=1;i<=10;i++)
{
a[i-1]=fun(i);
printf("%.2f\n",a[i-1]);
}
double t;
double b[10];
for(i=1;i<=10;i++)
{
    b[i-1]=fun(i);
    printf("%.2f\n",b[i-1]);
}

for(i=0;i<9;i++)
{
    for(j=0;j<9-i;j++)
    {
    if(a[j]>a[j+1])
    {
        t=a[j+1];
        a[j+1]=a[j];
        a[j]=t;
    }
}}
    printf("%.2f\n",a[0]);
    for(i=0;i<10;i++)
    {
        if(b[i]==a[0])
        printf("%d\n",i+1);
    }

return 0;

}

一个实现,供参考:


#include <stdio.h>
#include <math.h>
int main(void){
    
    int x,minX;
    double minY=(double)1*1-(double)8*1+sin(1); //把y的最小值设置为x=1时的值,以便比较 
    double y;
    
//    printf("sin1=%lf\n",sin(1));
    for(x=1;x<=10;x++){
        y=(double)x*x-(double)8*x+sin(x);  //计算x在1到10之间每个y的值 
        if(minY>y){  //计算y的最小值,同时记录对应x的值 
            minY=y;
            minX=x;
        }
        printf("x=%d,y=%lf\n",x,y);
    }
    
    printf("最小的y的值是%.2lf,x=%d\n",minY,minX);//打印结果 
} 

img