实验3_C语言函数应用编程
实验任务1:
问题1:功能是根据输入的分数计算相应的等级,形参形式是int,返回值类型是char。
问题2:代码无法处理case为10的情况,因此100分没有返回值。
实验任务2:
问题1:功能是计算一个整数n的各位数字之和。
问题2:能实现。区别在于原方式是迭代算法,新方式是递归算法。
实验任务3: 问题1:功能是计算一个数x的n次幂。
问题2:是递归函数。power = { 1, n = 0;
{x**(n-1), n为奇数;
{x**(n/2), n为偶数}
实验任务4:
#include<stdio.h> int is_prime(int n); int main() { int n, i; int total = 0; printf("100以内的孪生素数:"); for(i = 3; i <= 100; ++i){ if(is_prime(n) && is_prime(n+2)) printf("%d%d\n",n,n+2); total += 1; } printf("100以内的孪生素数共有%d个\n",total); return 0; } int is_prime(int n){ int i; if(n < 2) return 0; for(i = 2; i <= n; ++i){ if(n % i == 0) return 0; } return 1; }
实验任务5:
#include<stdio.h> #include<stdlib.h> void hanoi(unsigned int n,char from,char temp,char to); int main() { unsigned int n; int count = 0; while(scanf("%u",&n) != EOF){ count = 0; hanoi(n,'A','B','C'); printf("一共移动了%d次.\n",count); } system("pause"); return 0; } int count = 0; void hanoi(unsigned int n,char from,char temp,char to){ if(n > 0){ hanoi(n - 1,from,to,temp); printf("%u:%c-->%c\n",n,from,to); count += 1; hanoi(n - 1,temp,from,to); } }

实验任务6:
#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 fenzi = 1; int fenmu = 1; int i; for(i = 0;i < m;++i){ fenzi *= (n - i); fenmu *= (m - i); } return fenzi/fenmu; }

实验任务7:
#include <stdio.h> // 函数声明 // 待补足.... int gcd(int a,int b,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 a,int b,int c){ int min = a; int i; if(b < min) min = b; if(c < min) min = c; for(i = min;i >= 1;--i){ if(a % i == 0 && b % i == 0 && c % i == 0) return i; } return 1; }


浙公网安备 33010602011771号