实验3
task1:
Q1:将分数转为等第;整型;字符型
Q2:没有break,输出等第后将自动向下运行;字符型变量用单引号
task2:
Q1:将输入中各个数字之和算出
Q2:这种算法使用迭代思想,原算法使用自然语言
task3:
Q1:计算x的n次方
Q2:是;
if(n == 0)
return 1;
else if(n % 2)
return x * power(x, n-1);
else {
t = power(x, n/2);
return t*t;
t^2=t*t
task4:
1 #include<stdio.h> 2 #include<math.h> 3 int is_prime(int n){ 4 int i; 5 for(i=2;i<n;i++){ 6 if(n%i==0){ 7 return 0; 8 break;} 9 } 10 return 1; 11 } 12 int main(){ 13 int i=0; 14 int n=1; 15 printf("100以内的孪生素数:\n"); 16 for(n=2;n<100;n++){ 17 if(is_prime(n)==1&&is_prime(n+2)==1){ 18 19 printf("%d %d\n",n,n+2); 20 i++;} 21 } 22 printf("100以内的孪生素数共有%d个",i); 23 return 0; 24 }
task5:
1 #include<stdio.h> 2 int i=0; 3 void hanoi(int n,char from,char temp,char to){ 4 extern int i; 5 if(n==1){ 6 printf("%d:%c-->%c\n",n,from,to); 7 i+=1;} 8 else{ 9 hanoi(n-1,from,to,temp); 10 printf("%d:%c-->%c\n",n,from,to); 11 i+=1; 12 hanoi(n-1,temp,from,to); 13 } 14 15 } 16 int main(){ 17 int n; 18 while(scanf("%d",&n)!=EOF){ 19 extern int i; 20 hanoi(n,'a','b','c'); 21 22 printf("一共移动了%d次\n",i); 23 i=0; 24 } 25 return 0; 26 }
task6:
6.1迭代
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 13 return 0; 14 } 15 16 // 函数定义 17 // 迭代 18 int func(int n, int m){ 19 20 21 if(m==0||n==m) 22 return 1; 23 24 else if(n<m) 25 return 0; 26 27 else { 28 29 int i,j,k; 30 int down1=1,down2=1,up=1; 31 32 for(i=1;i<=m;i++){ 33 down1=i*down1;} 34 35 for(j=1;j<=n-m;j++){ 36 down2=j*down2;} 37 38 for(k=1;k<=n;k++){ 39 up=k*up;} 40 41 return (up/down1/down2); 42 }
6.2递归
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 13 return 0; 14 } 15 16 // 函数定义 17 // 递归 18 int func(int n, int m){ 19 if(m==0||n==m) 20 return 1; 21 else if(n<m) 22 return 0; 23 else{ 24 return func(n-1,m)+func(n-1,m-1); 25 } 26 }
task7:
1 #include<stdio.h> 2 #include<stdlib.h> 3 void print_charman(int n); 4 void head(int x); 5 void body(int x); 6 void leg(int x); 7 int main() 8 { 9 int n; 10 printf("Enter n:"); 11 scanf("%d", &n); 12 print_charman(n); 13 system("pause"); 14 return 0; 15 } 16 int j, cnt = 0; 17 void print_charman(int n) { 18 int i; 19 for (i = n; i >= 1; i--) { 20 int x = (2 * i)- 1; 21 head(x); 22 body(x); 23 leg(x); 24 cnt++; 25 } 26 27 } 28 29 void head(int x) { 30 int i; 31 for (j = 1; j <= cnt; j++) { 32 printf("\t"); 33 } 34 35 for (i = 1; i <= x; i++) { 36 printf(" O \t"); 37 } 38 printf("\n"); 39 } 40 void body(int x) { 41 int i; 42 for (j = 1; j <= cnt; j++) { 43 printf("\t"); 44 } 45 46 for (i = 1; i <= x; i++) { 47 printf("<H>\t"); 48 } 49 printf("\n"); 50 51 } 52 void leg(int x) { 53 int i; 54 for (j = 1; j <= cnt; j++) { 55 printf("\t"); 56 } 57 58 for (i = 1; i <= x; i++) { 59 printf("I I\t"); 60 } 61 printf("\n"); 62 }