实验3
实验任务1
#include <stdio.h> char score_to_grade(int score); int main() { int score; char grade; while(scanf("%d", &score) != EOF) { grade = score_to_grade(score); printf("分数: %d, 等级: %c\n\n", score, grade); } return 0; } char score_to_grade(int score) { char ans; switch(score/10) { case 10: case 9: ans = 'A'; break; case 8: ans = 'B'; break; case 7: ans = 'C'; break; case 6: ans = 'D'; break; default: ans = 'E'; } return ans; }

问题1功能是给分数打等级 形式参数int整形 返回值char字符串型
问题2存在问题无论输入什么输出值均为E
实验任务2
#include <stdio.h> int sum_digits(int n); int main() { int n; int ans; while(printf("Enter n: "), scanf("%d", &n) != EOF) { ans = sum_digits(n); printf("n = %d, ans = %d\n\n", n, ans); } return 0; } int sum_digits(int n) { int ans = 0; while(n != 0) { ans += n % 10; n /= 10; } return ans; }

问题1作用将输入的数字各个数字之和
问题2能 前者是迭代 后者是递归
实验任务3
}#include<stdio.h> int power(int x,int n); int main() { int x,n; int ans; while(printf("Enter x and n :"),scanf("%d%d",&x,&n)!=EOF) { ans=power(x,n); printf("n=%d,ans=%d\n\n",n,ans); } return 0; } int power(int x,int n) { int t; if(n==0) return 1; else if(n%2) return x*power(x,n-1); else { t=power(x,n/2); return t*t; } }

问题1 功能求N次方
问题2 是

实验任务4
#include<stdio.h> #include<stdlib.h> int prime(int x); int main() { int cnt=0,n=1; printf("100以内的孪生素数:\n"); while(n<=100) { if(prime(n)&&prime(n+2)) { cnt+=1; printf("%d %d\n",n,n+2); } n++; } printf("100以内的孪生素数共有%d个",cnt); system("pause"); return 0; } int prime(int x) { int i,flag=0; for(i=2;i<=x/2;++i) { if(x%i==0) { flag=1; break; } } if(x<=1) { flag=1; } if(flag==0) return x; else return 0; }

实验任务5
#include <stdio.h> int func(int n, int m); int main() { int n, m; int ans; while(scanf("%d%d", &n, &m) != EOF) { ans = func(n, m); printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); } return 0; } int func(int n, int m){ int a=1,b=1,c,i,j; for(i=n-m+1;i<=n;i++){ a*=i; } for(j=1;j<=m;j++){ b*=j; } c=a/b; return c; }

#include <stdio.h> int func(int n, int m); int main() { int n, m; int ans; while(scanf("%d%d", &n, &m) != EOF) { ans = func(n, m); printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); } return 0; } int func(int n, int m){ if(m>n||m<0) return 0; else if(m==0) return 1; else { return func(n-1,m)+func(n-1,m-1); } }

实验任务6
#include<stdio.h> int gcd(int z,int x,int c); int main() { int a,b,c; int ans; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { ans=gcd(a,b,c); printf(" 最大公约数:%d\n\n",ans); } return 0; } int gcd(int x,int y,int z) { int t,i,min=0; min=(x<y)?x:y; min=(min<z)?min:z; for(i=1;i<=min;++i) { if(x%i==0&&y%i==0&&z%i==0) t=i; } return t; }

实验任务7
#include<stdio.h> #include<stdlib.h> void print_charman(int x); int main() { int n; printf("Enter n:"); scanf("%d",&n); print_charman(n); return 0; } void print_charman(int x) { int i,j,k; for(i=2*x-1;i>=1;i=i-2) { int a=(2*x-1-i)/2; for(j=0;j<a;j++) { printf("\t"); } for(k=0;k<i;k++) { printf(" O \t"); } printf("\n"); for(j=0;j<a;j++) { printf("\t"); } for(k=0;k<i;k++) { printf("<H>\t"); } printf("\n"); for(j=0;j<a;j++) { printf("\t"); } for(k=0;k<i;k++) { printf("I I\t"); } printf("\n\n"); } }

浙公网安备 33010602011771号