1. 程式人生 > >吉林大學967-高階語言程式設計-2013

吉林大學967-高階語言程式設計-2013

2013-1
//已知sinx=x-x^3/3!+x^5/5!-x7/7!...
//編寫程式.求sinx的近似值,要求誤差小於10^-8
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
//階乘	
int factorial(int num)
{
	int result;
	if (num == 0 || num == 1)
		result = 1;
	else
		result = num*factorial(num - 1);
	return result;
}
//乘方
double mulit(double x, int c)
{
	int i;
	double result = 1.0;
	if (c == 0)
		return 1.0;
	else if (c == 1)
		return x;
	else
		for (i = 0; i < c; i++)
			result *= x;
	return result;
}
//計算sinx的泰勒公式
double sin(int x)
{
	double sum = 0, item = 0;
	int i = 1;
	while (fabs(item)>1e-8)
	{
		item = mulit(-1, i)*mulit(x, i) / factorial(i);
		sum += item;
		i += 2;
	}
	return sum;
}
int main()
{

	int i;
	double number;
	scanf("%lf", &number);
	double result = sin(number);
	printf("%lf", result);
	system("pause");
	return 0;
}


2013-2
////10個評委給選手打分,原則為:分值為0到100,去掉一個最高分
////,去掉一個最低分,其餘8個分數相加,再除以8,即為選手的最終
////得分.編寫一個程式,輸入10個評分,輸出選手的最終得分.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 10
typedef int DataType;
void bsort(DataType a[],int n) {
	int i, j;
	int temp;
	for (i = 0; i < n; i++)
		for (j = 0; j < n-i; j++) {
			if (a[j] < a[j + 1]) {
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
}
void output(DataType a[],int n) {
	int i;
	for (i = 0; i < N; i++) {
		printf("%d ",a[i]);
	}
	printf("\n");
}
int main() {
	int i;
	int sum = 0;
	DataType score[N] = { 98,89,60,43,23,56,12,100,13,32};
	output(score, N);
	bsort(score,N);
	output(score, N);
	for (i = 1; i < N - 1; i++) {
		sum += score[i];
	}
	printf("最終成績:%d",sum/N-2);
	system("pause");
	return 0;
}


2013-3
//一個正整數用幾個質數相乘的形式表現出來,叫做分解質因數.
//編寫程式,輸入一個正整數,輸出該正整數分解質因數的形式.
//例如,輸入90,輸出 90=2*3*3*5.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void divprime(int n) {
	int i;
	for (i = 2; i <= n; i++) {
		while (i != n) {
			if (n%i == 0) {
				printf("%d*",i);
				n = n / i;
			}
			else
				break;
		}
	}
	printf("%d",n);
}
int main() {
	int x;
	scanf("%d",&x);
	divprime(x);
	system("pause");
	return 0;
}




2013-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>
#include<stdlib.h>
#include<math.h>
int gcd(int a,int b) {
	if (b == 0)
		return a;
	else
		return gcd(b, a%b);
}
void list(int n) {
	int i;
	for (i = n; i > 0; i--) {
		if (gcd(i, n) == 1) {
			printf("%d/%d  ",i,n);
		}
	}
}
int main() {
	int num,i;
	scanf("%d",&num);
	for (i = num; i > 1; i--) {
		list(i);
	}
	system("pause");
	return 0;
}