正文
c语言递归函数猜年龄 c语言递归函数详解
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
C语言 用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,
#includestdio.h
#define N 10
int age(int x)
{
if(x==1) return N;
return age(x-1)+2;
}
int main()
{
printf("%d\n",age(5));
return 0;
}
年龄计算,解释一下例子里的C语言函数
这是递归运算,当运行到age(n-1)时,会将n-1的值传递到age函数中再执行此函数,此时age(int n)中的n就等于n-1;下面的依次循环,直到n==1,执行顺序如下:
n=5时,运行到age(4)+2,此时调用age(4),
n=4,运行到age(3)+2,此时调用age(3),
n=3,运行到age(2)+2,此时调用age(2),
n=2,运行到age(1)+2,此时调用age(1),
n=1时,c=10,return c 即返回10.现在将10返回到调用age(2)时的age(1)+2,即c=age(1)+2
c=12,再return 12,返回到调用age(3)时的age(2)+1,c=age(2)+2,此时c=14,····这样一直返回到n=5的情况,此时c=18
}
用C语言编写一个计算自己年龄的函数。
struct Date{
int year;
int month;
int day;
};
Date * fun(Date *date){
Date today;
today.year = 2013;
today.month = 7;
today.day = 1;
Date age;
age.year = today.year - date-year;
age.month = today.month - date-month;
age.day = today.day - date-day;
return age;
}
int main(){
Date me;
me.year = 1980;
me.month = 6;
me.day = 12;
Date * age = fun(me);
printf("%d%d%d",age-year,age-month,age-day);
return 0;
}
c语言编程题 题目标题: 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就
c语言追求的是程序执行时间效率,题目给出立方之后是四位数,可以人为确定年龄范围在10-21岁,至于为什么不确定六位数再精确一点,个人觉得没什么必要。这个编程的核心在于如何分辨这10个数字不同,我定义了一个函数,用数组加循环判断。以下是具体代码。
#include stdio.h
#includestdlib.h
#includemath.h
int same(int a[10]);//判断10个数是否相等,相互不相等返回1
int many(int a);//判断一个整型数是几位数
main()
{
int a[10] ,i ,j ,s ,l; //a储存10个数字的数组,i年龄循环变量,j将数字存入数组,s储存四位数,l储存六位数
for(i=10;i22;i++){
s=pow((double)i,3);
l=pow((double)i,4);
if(many(l)!=6)
continue;//如果不是六位数则退出当次循环
for(j=0;j4;j++){
a[j]=s%10;
s=s/10;
}//存入四位数
for(j=4;j10;j++){
a[j]=l%10;
l=l/10;
}//存入六位数
if(same(a))
printf("age=%d\n",i);//输出
}
system("pause");
}
int many(int a){
int i=0;
while(a0){
a=a/10;
i++;
}
return i;
}
int same(int a[10]){
int i,j,flag=1;
for(i=0;i10;i++){
for(j=i+1;j10;j++){
if(a[i]==a[j])
flag=0;
}
}
return flag;
}
c语言递归函数猜年龄的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言递归函数详解、c语言递归函数猜年龄的信息别忘了在本站进行查找喔。