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;
}