实验报告3
task1
代码:
#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:对成绩进行判级 整形 字符
回答2:1.字符用“”
2.case10后没加break
task2
代码:
1 #include <stdio.h> 2 3 int sum_digits(int n); // 函数声明 4 5 int main() { 6 int n; 7 int ans; 8 9 while(printf("Enter n: "), scanf("%d", &n) != EOF) { 10 ans = sum_digits(n); // 函数调用 11 printf("n = %d, ans = %d\n\n", n, ans); 12 } 13 return 0; 14 } 15 16 // 函数定义 17 int sum_digits(int n) { 18 int ans = 0; 19 20 while(n != 0) { 21 ans += n % 10; 22 n /= 10; 23 } 24 25 return ans; 26 }
回答1:将所有位数加在一起
回答2:一个是循环一个是递归
task3
代码:
1 #include <stdio.h> 2 3 int power(int x, int n); // 函数声明 4 int main() { 5 int x, n; 6 int ans; 7 while(printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF) { 8 ans = power(x, n); // 函数调用 9 printf("n = %d, ans = %d\n\n", n, ans); 10 } 11 return 0; 12 } 13 // 函数定义 14 int power(int x, int n) { 15 int t; 16 if(n == 0) 17 return 1; 18 else if(n % 2) 19 return x * power(x, n-1); 20 t = power(x, n/2); 21 return t*t; 22 } 23 } 24 25
回答1:计算x的n次方
回答2:
task4
代码:
1 #include <stdio.h> 2 int classify_triangle(int a, int b, int c){ 3 if(a+b>c && a+c>b && b+c>a){ 4 if(a==b && b==c) return 2; 5 else if(a==b || a==c || b==c) return 3; 6 else if(a*a+b*b==c*c || c*c+b*b==a*a || a*a+c*c==b*b) return 4; 7 else return 1; 8 } 9 else return 0; 10 } 11 int main() 12 { 13 int a, b, c; 14 while(scanf("%d%d%d", &a, &b, &c) != EOF){ 15 if(classify_triangle(a,b,c)==0) printf("不能构成三角形\n"); 16 if(classify_triangle(a,b,c)==1) printf("普通三角形\n"); 17 if(classify_triangle(a,b,c)==2) printf("等边三角形\n"); 18 if(classify_triangle(a,b,c)==3) printf("等腰三角形\n"); 19 if(classify_triangle(a,b,c)==4) printf("直角三角形\n"); 20 } 21 return 0; 22 }
截图:

task5
迭代代码:
1 #include <stdio.h> 2 3 int func(int n, int m); 4 5 int main() { 6 int n, m; 7 int ans; 8 9 while (scanf("%d%d", &n, &m) != EOF) { 10 ans = func(n, m); 11 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 12 } 13 14 return 0; 15 } 16 17 int func(int n, int m) { 18 if (m < 0 || m > n) return 0; 19 if (m == 0 || m == n) return 1; 20 if (m > n - m) m = n - m; 21 int result = 1; 22 for (int i = 1; i <= m; i++) { 23 result = result * (n - m + i) / i; 24 } 25 return result; 26 }
递归代码:
1 #include <stdio.h> 2 int func(int n, int m); 3 int main() { 4 int n,m; 5 int ans; 6 while(scanf("%d%d",&n,&m)!=EOF) { 7 ans=func(n,m); 8 printf("n=%d,m=%d,ans=%d\n\n",n,m,ans); 9 } 10 return 0; 11 } 12 int func(int n, int m) { 13 if(m<0||m>n) return 0; 14 if(m==0||m==n) return 1; 15 return func(n-1,m)+func(n-1,m-1); 16 }
截图:

task6
代码:
1 #include <stdio.h> 2 int gcd(int a, int b, int c); 3 4 int main() { 5 int a, b, c; 6 int ans; 7 8 while (scanf("%d%d%d", &a, &b, &c) != EOF) { 9 ans = gcd(a, b, c); 10 printf("最大公约数: %d\n\n", ans); 11 } 12 13 return 0; 14 } 15 int gcd(int a,int b,int c){ 16 int min=a,i; 17 if(b<min) min=b; 18 if(c<min) min=c; 19 for (i=min;i>=1;i--) 20 if (a%i==0&&b%i==0&&c%i==0) 21 return i; 22 return 1; 23 }
截图:

task7
代码:
1 #include <stdio.h> 2 3 void print_charman(int n); 4 5 int main() 6 { 7 int n; 8 printf("Enter n: "); 9 scanf("%d", &n); 10 print_charman(n); 11 return 0; 12 } 13 void print_charman(int n) 14 { 15 int i,j,k; 16 for(i=0;i<n;i++) 17 { 18 for(j=0;j<i;j++) 19 printf("\t"); 20 int count=2*(n-i)-1; 21 for (k=0;k<count;k++) 22 printf(" 0\t"); 23 printf("\n"); 24 for(j=0;j<i;j++) 25 printf("\t"); 26 for(k=0;k<count;k++) 27 printf("<H>\t"); 28 printf("\n"); 29 for(j=0;j<i;j++) 30 printf("\t"); 31 for(k=0;k<count;k++) 32 printf("I I\t"); 33 printf("\n\n"); 34 } 35 }
截图:


浙公网安备 33010602011771号