高级语言讲义2013软专(仅高级语言部分)

1.已知sinx=x-x^{3}/3!+x^{5}/5!-x^{7}/7!+...编写程序求sinx的近似值,要求误差小于10^{-8}

#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;
}
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值