广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 4623 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
karen7710
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][求助] 利用内部静态变数,累加输入数字直到0结束
题目:
利用内部静态变数,可以持续累加使用者从键盘输入的数字,直到输入0结束。
在main()读入键盘输入的数字,并在另一函式中做累加。
以下的程式跑起来怪怪的,麻烦大大帮我解决, ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:欧洲 | Posted:2007-06-24 21:20 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

第一个你用gets来抓数字 , 这应该是有问题的 , 除非你还要再将字串转数字 , 还有我觉得题目的意思应该是要你把 static int sum 宣告在 addsum 里面 ,因为他被宣告成静态后他的生命周期是到这个程式结束时才结束 , 也就是你后来再进来值还会保留着, 也不会被宣告的初值重设 , 一直到你程式结束为止 ...


[ 此文章被gamewalk在2007-06-25 04:06重新编辑 ]


献花 x0 回到顶端 [1 楼] From:台湾永大数位动力公司 | Posted:2007-06-25 03:21 |
karen7710
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你的意思是改成这样吗?
改成这样后程式输出的总和都是0,应该要怎么更改呢?
复制程式
#include <stdio.h>
#include <stdlib.h> 
void addsum(int);
int main(void)
{
 int a;
 printf("输入数字开始计算,输入0为结束\n");
 scanf("%d",&a);
 addsum(a);
 system("pause");
 return 0; 
} 
void addsum(int b)
{
  static int a;   
  int sum=0;   
  while (1)
 {
  sum=sum+a;
  if (a==0)
   break;
  }
printf("总数为%d\n",sum); 
} 


献花 x0 回到顶端 [2 楼] From:欧洲 | Posted:2007-06-25 19:24 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感觉你可能还不太了解静态变数 , 我再你另一篇文章有PO静态变数累加的程式码 ,

不过我看我还是再贴一次好了...

复制程式
int AddSumStatic(int Num) //可做累加
{
    static int Sum = 0;
    Sum = Sum + Num;
    return Sum;
}

int AddSumNotStatic(int Num) //不可做累加
{
    int Sum = 0;
    Sum = Sum + Num;
    return Sum;
}

我写了两种...你可以先试试看他们的差别...这样应该比较好懂

还有你while应该是放在主程式那边,然后while内做scanf 和呼叫 AddSum 这样才能做重复输入

以及累加的动作 , 但是要记住要设 while 输入值不是0 的时候跳出 不然到时候你要结束时只能

直接关闭程式...


献花 x0 回到顶端 [3 楼] From:台湾永大数位动力公司 | Posted:2007-06-25 23:07 |
karen7710
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

跑出来的程式算出来的答案怪怪的,请问大大是哪里出错了?
复制程式
#include <stdio.h>
#include <stdlib.h> 
void addsum(int);
int main(void)
{
 int a;
 printf("输入数字开始计算,输入0为结束\n");
   while (1)
 {
  scanf("%d",&a);
  addsum(a);  
  if (a==0)
   break;
  } 
 system("pause");
 return 0; 
} 
void addsum(int a)
{
  static int sum=0;   
  sum=sum+a;
printf("sum=%d\n",sum); 
} 


献花 x0 回到顶端 [4 楼] From:欧洲 | Posted:2007-06-26 19:25 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你指的怪怪是指什么? 我刚刚试过你的程式OK阿 @@?
你是输入哪些数呢? 给一些输入样本我试试看...


献花 x0 回到顶端 [5 楼] From:台湾永大数位动力公司 | Posted:2007-06-27 02:31 |
karen7710
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

scanf不能输入空白,所以如果我输入1234567890输入到0它不会自动停止算总和,
按enter后出现的sum=1234567890跟输入的一模ㄧ样...


献花 x0 回到顶端 [6 楼] From:欧洲 | Posted:2007-06-27 19:19 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用karen7710于2007-06-27 19:19发表的 :
scanf不能输入空白,所以如果我输入1234567890输入到0它不会自动停止算总和,
按enter后出现的sum=1234567890跟输入的一模ㄧ样...

我以为你是说要输入一次加一次(输入数字按一次enter算一次),输入0(按enter后)的时候再跳出,
也就是你输入1234567890 要变成 1+2+3+4+5+6+7+8+9 吗? 那你输入可能要改成getch()...对了 还有一个问题你是每输入一个字显示一次sum值,还是要最后输入完后才显示sum的值? 我看你给的例子 很像是最后才印出来吧,那应该就是底下这样吧...

复制程式
#include <stdio.h>
#include <stdlib.h> 
int addsum(int);
int main(void)
{
    int a;
    printf("输入数字开始计算,输入0为结束\n");
    do
    {
        a = getch();   //获得的是字元码,所以a里面放的是字元码不是数字
        if( a >= Ɔ' && a <= Ə' ) //这里的比较也是介于0~9的字元 
        {
            printf("%c",a);
            addsum( a - Ɔ' );     //因为数字0~9的字元码是连续的,所以a - Ɔ'就会等于实际数值 
        }
    }while( a != Ɔ' );
    printf("\nsum=%d\n",addsum(0)); 
    system("pause");
    return 0;
}
int addsum(int a)
{
    static int sum=0;
    sum=sum+a;
    return sum;
}


[ 此文章被gamewalk在2007-06-27 23:23重新编辑 ]


献花 x1 回到顶端 [7 楼] From:台湾永大数位动力公司 | Posted:2007-06-27 23:00 |
karen7710
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

谢谢你的解答喔^^ 表情


献花 x0 回到顶端 [8 楼] From:欧洲 | Posted:2007-06-28 09:04 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.095695 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言