实验三
实验任务1
问题1:将输入的分数整除10,再通过switch函数输出相应的等级,并返回到ans中。形参类型是整型,返回值是字符串。
问题2:由于缺少break,当其中一行满足时,后面的代实验任务2
实验任务2
问题1:将输入的整数n的每一位上的数字相加,并返回到ans中。
问题2:可以。第一种是将整数n先对10取余,,再将n整除10后赋值给n,再将赋值后的n继续取余并将余数相加赋值给ans,直到n整除10后为0。第二种是先判断n是否小于10,如果小于10,则保持n不变,直接将n赋值给ans,否则,将n对10取余,并将n整除10,然后再次判断整除10后的n是否小于10,再重复进行以上操作,并将余数相加,直到n小于10,再将相加后的结果返还给ans。
实验任务3
问题1:计算x的n次方
问题2:是。递归模式:分治。

实验任务4
1 #include <stdio.h> 2 3 int is_prime(int n); 4 5 int main(){ 6 int num, n, i; 7 printf("100以内的孪生素数:\n"); 8 for(int j=1;j<=98;++j){ 9 if(is_prime(j)&&is_prime(j+2)){ 10 printf("%d, %d\n",j,j+2); 11 ++num; 12 } 13 } 14 15 printf("100以内的孪生素数共有%d个", num); 16 17 return 0; 18 } 19 20 int is_prime(int n){ 21 int num,i=2; 22 while (i<n){ 23 if(n % i != 0) 24 ++i; 25 else{ 26 if(i == n) 27 return 1; 28 else if(i!=n) 29 return 0; 30 } 31 } 32 while(i>=n){ 33 if(i == n) 34 return 1; 35 else 36 return 0; 37 } 38 }

实验任务5
1 #include <stdio.h> 2 int func(int n, int m); 3 4 int main(){ 5 int n, m; 6 int ans; 7 8 while(scanf("%d%d", &n, &m) != EOF){ 9 ans = func(n, m); 10 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 11 } 12 return 0; 13 } 14 15 int func(int n, int m){ 16 int ans, num1=1, num2=1,num3=1; 17 if(n>= m){ 18 for(int i=1;i<=n;++i) 19 num1 = num1*i; 20 for(int j=1; j<=m; ++j) 21 num2 = num2*j; 22 for(int x=1; x<=(n-m);++x) 23 num3 = num3*x; 24 ans = num1/(num2*num3); 25 return ans; 26 } 27 else 28 return 0; 29 30 }
1 #include <stdio.h> 2 int func(int n, int m); 3 4 int main(){ 5 int n, m; 6 int ans; 7 8 while(scanf("%d%d", &n, &m) != EOF){ 9 ans = func(n, m); 10 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 11 } 12 return 0; 13 } 14 15 int func(int n, int m){ 16 int ans; 17 if(n == m||m==0) 18 ans = 1; 19 else if(n<m) 20 ans = 0 ; 21 else 22 ans = func(n-1, m) + func(n-1, m-1); 23 return ans; 24 25 }

实验任务6
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 return 0; 13 } 14 15 int gcd(int a, int b, int c){ 16 int ans; 17 while (a%b != 0){ 18 ans = a%b; 19 a = b; 20 b = ans; 21 } 22 while(b%c != 0){ 23 ans = b%c; 24 b = c; 25 c = ans; 26 } 27 return ans; 28 } 29

实验任务7


1 #include <stdio.h> 2 void print_charman(int n); 3 4 int main(){ 5 int n; 6 printf("Enter n:"); 7 scanf("%d", &n); 8 print_charman(n); 9 10 return 0; 11 } 12 13 void print_charman(int n){ 14 for(int j=n;j>=1;--j){ 15 for(int i=0;i<(n-j);++i){ 16 printf("\t"); 17 } 18 for(int i=1;i<=(2*j-1);++i){ 19 printf(" O\t"); 20 } 21 printf("\n"); 22 for(int i=0;i<(n-j);++i){ 23 printf("\t"); 24 } 25 for(int i=1;i<=(2*j-1);++i){ 26 printf("<H>\t"); 27 } 28 printf("\n"); 29 for(int i=0;i<(n-j);++i){ 30 printf("\t"); 31 } 32 for(int i=1;i<=(2*j-1);++i){ 33 printf("I I\t"); 34 } 35 printf("\n"); 36 printf("\n"); 37 } 38 39 40 }
浙公网安备 33010602011771号