1.已知编写程序求sinx的近似值,要求误差小于
#include <stdio.h>
#include <math.h>
int fun(int n) {
int result=1;
for(int i=n; i>0; i--)
result*=i;
return result;
}
float fn(int x) {
float result=0;
float f = 1;
float flag = x;
for(int i=1; flag>1e-8; i+=2) {
flag=pow(x,i)/fun(i);
result+=f*flag;
f=-f;
}
return result;
}
int main() {
float result = fn(1);
printf("%10.8f",result);
return 0;
}
2.10个评委给选手打分,原则为:分值为0到100,去掉一个最高分,去掉一个最低分,其余8个分数相加,再除以8,即为选手的最终得分。编一个程序,输入10个评分,输出选手的最终得分。
#include <stdio.h>
int main(){
int n=10,max=0,min=999;
int score,sum=0;
while(n!=0){
scanf("%d",&score);
if(score>max)
max=score;
if(score<min)
min=score;
sum+=score;
n--;
}
sum=sum-max-min;
printf("%lf%%",1.0*sum/8*100);
}
3.一个正整数用几个质数相乘的形式表示出来,叫做分解质因数。编写程序,输入一个正整数,输出该正整数分解质因数的形式。例如,输入90,输出90=2*3*3*5.
#include <stdio.h>
void func(int n) {
if(n==1)
return;
for(int i=2; i<=n; i++)
if(n%i==0) {
printf("%d ",i);
func(n/i);
return;
}
}
4.给定一个正整数N,由所有分母小于或等于N的最简真分数按从小到大组成一个序列,例如,N=5,
1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5
编一个程序,输入一个正整数,输出上述序列。
#include <stdio.h>
struct struct_result {
int up;
int down;
float result;
};
int gcd(int a,int b) {
if(a<b) {
int temp=a;
a=b;
b=temp;
}
while(b!=0) {
int temp=a%b;
a=b;
b=temp;
}
return a;
}
void sort(struct struct_result *arr,int count) {
for(int i=0; i<count-1; i++)
for(int j=0; j<count-i-1; j++)
if(arr[j].result>arr[j+1].result) {
struct struct_result res = arr[j];
arr[j]=arr[j+1];
arr[j+1] = res;
}
}
int main() {
int n,count=0;
struct struct_result arr[100];
scanf("%d",&n);
for(int i=2; i<=n; i++)
for(int j=1; j<i; j++)
if(gcd(i,j)==1) {
struct struct_result res;
res.up=j;
res.down=i;
res.result=1.0f*j/i;
arr[count++]=res;
}
sort(arr,count);
for(int i=0; i<count; i++)
printf("%d/%d\t",arr[i].up,arr[i].down);
return 0;
}