C語言練習-編制三角函數表/成績處理/村裡發獎金

1.編制三角函數表

#include <stdio.h>
#define pi 3.1415926
void show_sin_table(int min,int max);
double mysin(double x);
double fact(double x);
int main( )
{
	show_sin_table(0, 90);
	show_sin_table(135, 180);
	return 0;
}
//下面定义show_sin_table()函数
void show_sin_table(int min,int max)
{
    double radin;
    double i;
    for(i=min;i<=max;i++)
    {
        radin = i/180*pi;
        printf("******%.5f\n",mysin(radin));
    }
}

double mysin(double x)
{
    double fx=0,item;  // fx清零,否則第二次調用會累加第一次的結果
    double i,n=1,flag=1;
    do
    {
        item=1;
//        printf("*%f,%f,%f\n",flag,n,x);
        for(i=1;i<=n;i++)
            item *= x;
//        printf("**%f,%f,%f\n",flag,n,x);
        item = item/fact(n);
        fx += item*flag;
        n += 2;
        flag = -flag;
//        printf("***%f,%f,%f\n",flag,n,x);
    }while(item>=0.00001);

    return fx;
}
double fact(double x)
{
    double ret;
    if(x==1)
        ret=1;
    else
        ret=x*fact(x-1);
    return ret;
}

2.成績處理 -(讀取文件當做輸入,未完成)

#include<stdio.h>
#include<math.h>

int main()
{
    int score[50],score1[50];
    int num,i,j,temp=0,cnt_max,cnt_min,x;
    float sum=0,sum1;

    printf("the numbers of the students: ");
    scanf("%d", &num);
    printf("Enter the scores of the students : \n");
    for(i=0;i<num;i++)
    {
        printf("Enter the score of student No.%d: ",i);
        scanf("%d",&score[i]);
    }
    printf("\n");
    for(i=0;i<num;i++)
    {
        score1[i] = score[i];
    }

    //冒泡排序,從小到大排列
    for(i=0;i<num;i++)
    {
        for(j=0;j<num-i-1;j++)
        {
            if(score1[j]>score1[j+1])
            {
                temp = score1[j+1];
                score1[j+1] = score1[j];
                score1[j] = temp;
            }
        }
 //       printf("***%d***\n",score1[j]);
    }
    for(i=0;i<num;i++)
    {
//        printf("%d ",score1[i]);
        sum+=score1[i];
    }
    printf("\n");

    printf("the highest score is %d\n",score1[num-1]);
    printf("the lowest score is %d\n",score1[0]);
    printf("the average score is %f\n",sum/num);

    //求出并输出考得最高成绩和最低成绩人数以及学号

    for(i=0;i<num;i++)
    {
        if(score[i]==score1[0])
        {
            cnt_min++;
        }
        if(score[i]==score1[num-1])
        {
            cnt_max++;
        }
    }
    printf("highest score %d total %d, their number are :",score[num-1],cnt_max);
    for(i=0;i<num;i++)
    {
        if(score[i]==score1[num-1])
            printf(" %2d ",i);
    }
    printf("\n");

    printf("lowest score %d total %d, their number are :",score[0],cnt_min);
    for(i=0;i<num;i++)
    {
        if(score[i]==score1[0])
            printf(" %2d ",i);
    }
    printf("\n");


    //求出并输出标准偏差(选做)
    for(i=0;i<num;i++)
    {
        x=score[i]-(sum/num);
        sum1 += x*x;
    }
    printf("the standard_diff is %f\n",sqrt((double)(sum1)/(num-1)));
    return 0;
}

3.過年村裡發獎金

#include<stdio.h>
#include<math.h>
int Ne2Po(int abc);
int main()
{
    int amount,ave,i,sum=0,min_diff=1000,cnt=0;
    int num[128],diff[128];
    printf("How Many People wanna play this game?  ");
    scanf("%d",&amount);
    printf("enter a number 1-1000.\n");
    for(i=0;i<amount;i++)    // input all the numbers
        scanf("%d",&num[i]);

    for(i=0;i<amount;i++)    // calculate the sum and average
        sum += num[i];
    ave = sum/amount;
    printf("the average is %d\n ",ave);
    for(i=0;i<amount;i++)    // store all member's difference in diff[]
        diff[i] = Ne2Po(num[i]-ave);

    for(i=0;i<amount;i++)    //  calculate the min_diff
    {
        if(diff[i]<min_diff)
            min_diff = diff[i];
    }
    printf("the min_diff is %d\n ",min_diff);
    for(i=0;i<amount;i++)    // list all the members to find out who is the winner
    {
        if(diff[i]==min_diff)
        {
            cnt++;
            printf("the winner is %d\n ",i);
        }
    }
    return 0;
}

int Ne2Po(int abc)
{
    int ret;
    if(abc>=0)
        ret = abc;
    else
        ret = -abc;
    return ret;
}

猜你喜欢

转载自blog.csdn.net/weixin_38486169/article/details/86507275