关于变数等级的问题~

Home Home
引用 | 编辑 karen7710
2007-06-20 17:37
楼主
推文 x0
题目:
请计算1加到100的结果,累加运 ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 GNUGCC
2007-06-21 00:19
1楼
  
这个好像是要用递回来写...

献花 x0
引用 | 编辑 karen7710
2007-06-21 08:09
2楼
  
可是题目限制不可以使用回圈>"<

献花 x0
引用 | 编辑 海洋天使
2007-06-21 08:31
3楼
  
递回不算是回圈吧XD

献花 x0
引用 | 编辑 karen7710
2007-06-21 19:02
4楼
  
喔喔= =" 表情

献花 x0
引用 | 编辑 a86980
2007-06-22 10:21
5楼
  
不用回圈

那就要用到goto指令

献花 x0
引用 | 编辑 karen7710
2007-06-22 13:08
6楼
  
那大概要怎么用呢? 表情

献花 x0
引用 | 编辑 anemailbox2
2007-06-22 13:34
7楼
  
上底加下底*高/2,
只是这没有用到累加,

用递回蛮不错的,
可以训练递回的跳出控制。

我只会java

public class HelloRecurse {
  int sum=0;

  public void sumXToZ(int x, int z){
    sum = sum+x;
    x++;
    if(x> z){
      System.out.println("total:" + sum);
      return;
    }else{
      sumXToZ(x, z);
    }
  }
}

若是 要回传的话,再改一下吧 ^^

献花 x0
引用 | 编辑 karen7710
2007-06-22 13:49
8楼
  
看不太懂耶= =" 表情

献花 x0
引用 | 编辑 karen7710
2007-06-22 19:17
9楼
  
以下我打的这个程式无法正常的跑,不知道哪出了问题?
还有这个程式有符合题目所要求的吗?
复制程式
#include <stdio.h>
#include <stdlib.h>
void addsum(int);
static int value=0;
 
int main(void)
{
    int i;
    for(i=1;i<=100;i++)
     addsum(i);
    printf("%d\n",value); 
    system("pause");
    return 0;
    }
void addsum(int i);
{       
  value=value+i;} 


献花 x0
引用 | 编辑 GNUGCC
2007-06-22 23:34
10楼
  
void addsum(int i);
{  
value=value+i;
}

函式名称后面不要加分号...
即然函式要求不可用回圈的话虽然回圈改在 main() 函式不过可以用递回试看看...

献花 x0
引用 | 编辑 karen7710
2007-06-24 10:15
11楼
  
那我写的那个就不符合题目所要的啰? 表情

献花 x0
引用 | 编辑 karen7710
2007-06-24 10:23
12楼
  
那这个程式,跟上一个哪个比较符合题目呢?
复制程式
#include <stdio.h>
#include <stdlib.h>
void addsum(void);
 
int main(void)
{
    addsum(); 
    system("pause");
    return 0;
    }
void addsum(void)
{
  int sum;   
  sum=((1+100)*100)/2;
  printf("sum=%d\n",sum);
  }


献花 x0
引用 | 编辑 gamewalk
2007-06-24 13:05
13楼
  
你现在这个 , 没有做到累加的动作 , 反而是代公式 ....应该是不符合 , 至于你的上一个 用到了回圈应该也是不符合 , 我也赞成他们讲的用递回的方式 ...

献花 x0
引用 | 编辑 karen7710
2007-06-24 14:58
14楼
  
递回的方式要怎么用呢? 表情 可以大概讲一下吗?

献花 x0
引用 | 编辑 karen7710
2007-06-24 17:15
15楼
  
递回的方式是这样吗?
这个有符合了吗?
复制程式
#include <stdio.h>
#include <stdlib.h>
int answer(int);

int main(void)
{

printf("sum=%d\n",answer(100));

system("pause");
return 0;
}
int answer(int x)
{
if ( x == 1 )
 return 1;
else 
return x + answer(x - 1);
}   


献花 x0
引用 | 编辑 gamewalk
2007-06-25 02:54
16楼
  
恩...这就是递回...这样应该就可以了吧...不过有一点蛮那闷的你标题为什么写"变数等级的问题"? 你们老师还有开其他条件吗?

献花 x0
引用 | 编辑 karen7710
2007-06-25 19:17
17楼
  
因为这章在讲变数等级~这是这章里的题目!
老师有给个提示:在主程式main中呼叫自定函式100次,然后在main中将结果印出
那我上面那个程式就有符合这个了吗?

献花 x0
引用 | 编辑 gamewalk
2007-06-25 22:50
18楼
  
下面是引用karen7710于2007-06-25 19:17发表的 :
因为这章在讲变数等级~这是这章里的题目!
老师有给个提示:在主程式main中呼叫自定函式100次,然后在main中将结果印出
那我上面那个程式就有符合这个了吗?

那这样的话 , 我又有点搞混了 表情 ... 现在这个又变成虽然有呼叫100次但是 是递回呼叫 只有第一次是在main中呼叫 其他都不能算是在main呼叫 ...

我想如果说是在main中,可以用回圈,在函式中不能用回圈 那应该就是这样了吧...然后再由你老师的提示 在main中呼叫100次...

复制程式
int AddSum(int Num)
{
    static int Sum = 0;
    Sum = Sum + Num;
    return Sum;
}

记住因为Sum是静态变数 所以他的执会一直保留到程式结束为止...所以这样是可以做累加的...

献花 x0
引用 | 编辑 karen7710
2007-06-26 19:06
19楼
  
为什么我打的这个程式出来的答案是5110?
复制程式
#include <stdio.h>
#include <stdlib.h>
int addsum(int);

int main(void)
{
  int i,sum;
  for(i=1;i<=100;i++)
   addsum(i);
  printf("%d\n",addsum(sum)); 
  system("pause");
  return 0;
  
}
int addsum(int i)
{
  static int Sum = 0;
  Sum = Sum + i;
  return Sum;
}


献花 x0
引用 | 编辑 gamewalk
2007-06-27 02:39
20楼
  
下面是引用karen7710于2007-06-26 19:06发表的 :
为什么我打的这个程式出来的答案是5110?
复制程式
#include <stdio.h>
#include <stdlib.h>
int addsum(int);

int main(void)
{
int i,sum; //<---应该是你这没给初值,记住这里的sum跟addsum里的sum不一样
for(i=1;i<=100;i++)
  addsum(i);
printf("%d\n",addsum(sum)); //<-你这里多加了一个sum ,最后你要印出来你就把这里改成addsum(0)
system("pause");
return 0;

}
int addsum(int i)
{
static int Sum = 0;
Sum = Sum + i;
return Sum;
}

printf("%d\n",addsum(sum)); 改成 printf("%d\n",addsum(0));
应该是这样吧...

献花 x1
引用 | 编辑 karen7710
2007-06-27 18:59
21楼
  
嗯嗯,原来如此,谢谢大大的解答^^ 表情

献花 x0
引用 | 编辑 kioko
2009-09-15 15:14
22楼
  
复制程式
#include <stdio.h>
#include <iostream> 
#include <stdlib.h> 
#include <conio.h>
#include <string>
using namespace std ; 
int addsum(int x, int y){ 
       static int sum; 
       static int count;
       if(x<=y){
              sum=sum+x; 
              count++; 
              addsum(count,y); 
       }
       else{
              printf("加总为: %d",sum);
       }       
} 
main (){
       addsum(1,100);
       getch();       
}

用递回的方式解
不知道是不是正解 >"<

献花 x0