第1关:年龄
任务要求
设计程序,利用递归函数解决问题:有5人排成一队,从最后一人开始,其年龄均比前面的人大2岁,最前面的人年龄是10岁,计算最后一人的年龄。注意:设计的函数具有参数和返回值。
输入要求
无输入
输出要求
输出最后一人的年龄
//根据题目要求完成程序设计
#include <stdio.h>
/*
函数名称:CountAge
函数功能:计算最后一人的年龄
*/
//设计函数CountAge
/*=====Begin=====*/
int CountAge(int n)
{
if (n==1)
return 10;
else
return 2+CountAge(n-1);
}
/*======End======*/
/*
函数名称:solve
函数功能:程序入口
函数返回值:void
*/
//设计函数solve
/*=====Begin=====*/
void solve()
{
printf("%d",CountAge(5));
}
/*======End======*/
第2关:a的b次幂
任务要求
设计程序,利用递归函数求解a的b次幂。注意:设计的函数具有参数和返回值。
输入要求
输入两个正整数a
和b(1<=a<=100,0<=b<=6)
输出要求
输出一个正整数,表示a的b次方。
输入样例1
1 1
输出样例1
1
输入样例2
10 2
输出样例2
100
//根据题目要求完成程序设计
#include <stdio.h>
/*
函数名称:power
函数功能:求a的b次方
*/
//设计函数power
/*=====Begin=====*/
long power(int a, int b)
{
if(b==0)
return 1;
return a*power(a,b-1);
}
/*======End======*/
/*
函数名称:solve
函数功能:程序入口
函数返回值:void
*/
//设计函数solve
/*=====Begin=====*/
void solve()
{
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
power(a,b);
printf("%ld",power(a,b));
}
/*======End======*/
第3关:阶乘求解
任务要求
设计程序,利用静态局部变量完成阶乘求解(注意用函数实现)。说明:主函数部分完成输入数据以及输出阶乘结果的功能。
输入要求
输入一个正整数n(1<=n<=20)
输出要求
输出1~n
各个数值对应的阶乘结果
输入样例
5
输出样例
1!=1
2!=2
3!=6
4!=24
5!=120
//根据题目要求完成程序设计
#include <stdio.h>
/*
函数名称:factorial
函数功能:求n的阶乘
*/
//设计函数power
/*=====Begin=====*/
long factorial(int n)
{
if(n==1)
return 1;
return n*factorial(n-1);
}
/*======End======*/
/*
函数名称:solve
函数功能:程序入口
函数返回值:void
*/
//设计函数solve
/*=====Begin=====*/
void solve()
{
int n = 0;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
printf("%d!=%ld",i, factorial(i));
printf("\n");
}
}
/*======End======*/
第4关:最大公约数
任务要求
设计程序,求两个正整数的最大公约数。注意:设计的函数具有参数和返回值。
输入要求
输入两个正整数a
和b(1<=a,b<=1e8)
输出要求
输出一个结果,表示a
和b
的最大公约数。
提示
求解两个正整数的最大公约数时,用较小数除较大数获得余数,再利用余数(第一余数)除除数获得余数(第二余数),再用出现的余数(第二余数)除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 如:求解32和20的最大公约数。 32 / 20 = 1......12 20 / 12 = 1......8 12 / 8 =1......4 8 / 4 =2......0 4为32和20的最大公约数
输入样例
32 20
输出样例
4
//根据题目要求完成程序设计
#include <stdio.h>
/*
函数名称:GCD
函数功能:计算两个数的最大公约数
*/
//设计函数GCD
/*=====Begin=====*/
int GCD(int a,int b)
{
int c = 0;
while(1)
{
c=a%b;
if(c==0)
break;
a=b;
b=c;
}
return b;
}
/*======End======*/
/*
函数名称:solve
函数功能:程序入口
函数返回值:void
*/
//设计函数solve
/*=====Begin=====*/
void solve()
{
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
printf("%d",GCD(a,b));
}
/*======End======*/