| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:[求助]小弟给两个难题难住了,请高手帮帮忙
只看楼主 加入收藏
hanyang
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-6-24
收藏
 问题点数:0 回复次数:6 
[求助]小弟给两个难题难住了,请高手帮帮忙
小弟给两个难题难住了,请高手帮帮忙,题目是:

 1. main()

     {    void prt();

          prt();

     }

      void prt()

     {    register int i;

          register int j;

          for(i=1;i<=5;i++)

                 for(j=1;j<=i;j++)

                     
printf("*");

          printf("\n");

     }

这道中第二个for语句小弟看不懂,请高手开导开导!





2. /* 求阶乘 */

#include "stdlib.h"

main()

{ long jie_chen();

  void printstar();

  int i;

  printstar();

  printf("Input a number:");

  scanf("%d",&i);

  printf("jie_chen(%d)=%ld\n",jie_chen(i));

  printstar();

}

long jie_chen(int n)

{ long result;

  if(n<0)

  {   printf("Data error!");

      exit(-1);

  }

  else if(n==0)

      result=1;

  else

      result=n*jie_chen(n-1);

  return(result);

}

void printstar()

{ int m;

  for(m=1;m<=20;m++)

  printf("*");

  printf("\n");

}



这道题编辑后,怎么像是有错误,请高手开导开导!







搜索更多相关主题的帖子: 难题 难住 
2005-06-30 21:32
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 

第一题,连续打印15个星号后加一个回车,有什么地方会不明白的? 第二题,将 n<0 这个判断部分放在函数外边先执行好多了,而且这个判断只需要执行一次就够了,否则可能会被执行多次,还有就是 long 能装21亿左右大小的整型数据,但是对于阶乘来说也容易找出n的上限。 这题有一个小错误,如这句:printf("jie_chen(%d)=%ld\n",jie_chen(i)); 字符串中可以看见即将有两个数要被输出的,可是只有一个 printf 函数只有一个输出项。 还有一个错误,就是n被减到 1 的时候就应该退出递归了。 我改了一下: #include "stdlib.h" main() { long jie_chen(); void printstar(); int i; printstar(); printf("Input a number:"); scanf("%d",&i); /* 这里应该对i进行正确性验证,防止运行期的错误 */ printf("jie_chen(%d)=%ld\n", i, jie_chen(i)); /* 这里少了一个输出项 */ printstar(); }

long jie_chen(int n) { if(n==1) /* 当 n 被减到1的时候就应该终止递归并向回推 */ return(1); else return n * jie_chen(n-1); /* 关键是这里: n(当前)阶乘结果 = n-1(下一次)阶乘的结果 * n */ }

void printstar() /* 这个函数显得多此一举 */ { int m; for(m=1;m<=20;m++) printf("*"); printf("\n"); }


欢迎加入 MVC 技术讨论群(新群:90093426)
2005-06-30 22:16
aafg剑心
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-6-12
收藏
得分:0 
              我说我怎么老是找不出错误,原来递归上面有问题。呵呵

世事如舟挂短篷,或移西岸或移东。 几回缺月还圆月,数阵南风又北风。 岁久人无千日好,春深花有几时红。 是非入耳君须忍,半作痴呆半作聋。
2005-07-02 12:02
xiaocong0
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-6-25
收藏
得分:0 
还是不对的

改了之后 怎么还有错啊

再说具体点 错误:

求阶乘.cpp(74) : error C2660: 'jie_chen' : function does not take 1 parameters
2005-07-02 12:16
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
阶乘的结果返回类型为 long,而可能连15!都存储不了,所以说,必须限制n的值。在合法数值范围内,程序在 Visual C++ 6.0 下运行得正确无误。

欢迎加入 MVC 技术讨论群(新群:90093426)
2005-07-03 04:11
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
写阶乘就用数组来么

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2005-07-03 06:43
天籁雨声
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2005-6-28
收藏
得分:0 
用递归法也可以!

游四海,交天下知己!
2005-07-03 21:39
快速回复:[求助]小弟给两个难题难住了,请高手帮帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031675 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved