黑马程序员技术交流社区
标题: 帮忙解决一下这道写,并写上注释 [打印本页]
作者: 楠瓜果 时间: 2014-7-12 23:25
标题: 帮忙解决一下这道写,并写上注释
有5个人坐在一起,问第5个人多少岁?他说比第4个人大两岁,问第4个人岁数,他说比第3个人大两岁,问第3个人岁数,他又说比第2个人大两岁,问第2个人岁数,他说比第1个人大两岁,最后问第1个人他说10岁。编写程序,当输入第几个人时求出其对应的年龄。
作者: rocki 时间: 2014-7-13 09:11
- #include <stdio.h>
- int main()
- {
- //声明求年龄函数
- int age(int n);
- //i变量存贮第几个人
- int i;
-
- printf("请输入第几个人:\n");
- //接收数据
- scanf("%d",&i);
- //调用函数并打印年龄
- printf("年龄为%d\n",age(i));
- return 0;
- }
- int age(int n)//求年龄函数
- {
- int c;//用于接收返回值
- if (n==1)
- {
- c=10;
- }
- else
- {
- c=age(n-1)+2;//递归调用
- }
- return c;
- }
复制代码
函数递归调用。挺简单的题
作者: 云霄之上 时间: 2014-7-13 09:57
#include <stdio>
int main()
{int i;
int age=10; //定义第一个人的年龄
for(i=1;i<6;i++)
{if(i!=1) //把第一个人的年龄去除
age=age + 2;
printf("第%d个人的年龄是%d,i,age);
}
return 0
}
作者: ★Joean_Zhou 时间: 2014-7-13 10:28
/*
有5个人坐在一起,问第5个人多少岁?他说比第4个人大两岁,问第4个人岁数,他说比第3个人大两岁,问第3个人岁数,他又说比第2个人大两岁,问第2个人岁数,他说比第1个人大两岁,最后问第1个人他说10岁。编写程序,当输入第几个人时求出其对应的年龄。
*/
#include<stdio.h>
int main()
{
//使之进入while循环
int n = -1;
//保证输入的数为1-5
while( n < 1 || n > 5)
{
printf("请输入是第几个人:");
scanf("%d",&n);
}
switch (n)
{
case 1:
printf("10岁");
break;
case 2:
printf("12岁");
break;
case 3:
printf("14岁");
break;
case 4:
printf("16岁");
break;
case 5:
printf("18岁");
break;
default:
break;
}
}
作者: 邱蚓 时间: 2014-7-13 12:50
递归就解决了,主要是自己要把数学的逻辑模型想出来
作者: Medwyn 时间: 2014-7-13 13:23
经典的约瑟夫环问题。
作者: HPU--spring87 时间: 2014-7-13 17:04
直接挨个+2。。不用递归吧:lol
作者: 丶白菜你个小番 时间: 2014-7-13 20:58
这是考的递归
f(n)=f(n-1)+2;
..
f(1)=10;
根据规律你就可以写出以下代码- int age(int n)
- {
- if (n==1) {
- return 10;
- }
- return age(n-1)+2;
- }
- int main(int argc, const char * argv[])
- {
- int result=0;
- printf("请输入询问第几个人的年龄:\n");
- scanf("%d",&result);
- int k=age(result);
- printf("第%d个人的年龄是%d\n",result,k);
- return 0;
- }
复制代码
作者: zxdanshui 时间: 2014-7-13 21:13
看看
作者: 楠瓜果 时间: 2014-7-14 11:28
你这个方法有点笨方法吧,这是先用口算计算出这个人多少岁,如果人多了,规律不一样呢,就没法计算了
作者: yingzhuo1314 时间: 2014-7-14 14:09
- int age(int n) //定义一个计算年龄的函数
- {
- int age1; //定义一个int类型变量
- if(n==1) //如果只有一个人,则返回这个人的年龄
- return 10;
- else //否则执行下面的语句
- {
- age1=2+age(n-1); //递归
- return age1; //返回年龄
- }
- }
- #include <stdio.h>
- void main()
- {
- int i,n; //定义两个int类型的变量,i存储人数,n存储年龄
- printf("请输入人数:"); //输出
- scanf("%d",&i); //输入人数
- n=age(i); //调用age函数,并将结果赋值给n
- printf("第%d个人的年龄为:%d岁\n",i,n); //输出结果
- }
复制代码
作者: 楠瓜果 时间: 2014-7-14 14:13
我刚看了下递归的视频,明白了,想的方法也和这个差不多,谢谢你啊
作者: yingzhuo1314 时间: 2014-7-14 14:19
没事呢 相互学习哈 :)
作者: 小乖乖灬浩歌 时间: 2014-7-14 17:58
楼主 没说用设么语言写
作者: 小海 时间: 2014-7-14 22:05
很多方法 都可以,无疑递归是最简单的
作者: 这个夏天的芬芳 时间: 2014-7-17 23:05
美女好厉害的样子~~~是正式学员吗
作者: yingzhuo1314 时间: 2014-7-19 11:28
不是呢,还是菜鸟一枚~~
作者: 这个夏天的芬芳 时间: 2014-7-20 20:57
纳尼~~那你现在在哪里学习啊
作者: 这个夏天的芬芳 时间: 2014-7-20 21:07
{:2_32:}{:2_32:}{:2_32:}{:2_32:}{:2_32:}{:2_32:}
作者: yingzhuo1314 时间: 2014-7-20 22:17
边工作边自学中~~
作者: 这个夏天的芬芳 时间: 2014-7-23 22:49
挺累的啊那
作者: 阳光地带 时间: 2014-7-23 23:11
本帖最后由 阳光地带 于 2014-7-23 23:13 编辑
- #include <stdio.h>
- int age(num)
- {
- if(num == 1)
- return 10;
- return age(num-1)+2;
- }
- int main()
- {
- print("%d", age(5));
- return 0;
- }
复制代码
递归解法
作者: yingzhuo1314 时间: 2014-7-24 16:36
还好~~··
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |