吉林大學967-高階語言程式設計-2013
阿新 • • 發佈:2019-01-10
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; }