标题:求解a+aa+aaa........+aaaaaaaa(n个a)。其中a和n是键盘读入的整数。
取消只看楼主
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
结帖率:85.71%
 问题点数:0 回复次数:4 
求解a+aa+aaa........+aaaaaaaa(n个a)。其中a和n是键盘读入的整数。
#include<stdio.h>
#include<math.h>
main()
{
  int n,i,a;
  long int t,sum=0;
  printf("please input the a and n:\n");
  scanf("%d,%d",&a,&n);
  printf("a=%d,n=%d\n",a,n);
  t=a;
  for(i=0;i<n;i++)
  {
  sum+=t;t=t*10+a;}
  t=(t-a)/10;
  printf("t=%ld,sum=%ld\n",t,sum);
}
这个程序明明是对的,在别人的机子上能正确调试,但是换了一个机器,为什么会出现错误,如,输入2,5,结果却是t=2451,sum=24520,sum是正确值,但是t的值却出错了,为何?请各位高手指点一二,谢过!
搜索更多相关主题的帖子: aaa 整数 键盘 求解 
2010-05-22 14:45
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
得分:0 
多谢各位指点!不过我下午重新去运行了一下,结果没有上次的错误了,可能是我电脑的问题!

柔术:打败对手的最好方法就是心狠手辣,因为对手不会给你太多机会,如果他够厉害!
2010-05-22 19:15
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
得分:0 
回复 9楼 crshj7758258
t=(t-a)/10,是让an自减一次的,如果少了这个语句,就会出现错误。8楼的就是犯了这个错误。比如,你输入2,3。你想要的结果应该是2+22+222=266,an=222,但是运行时,an自增了一次,实际输出结果an=2222。阁下可以去试一下!

柔术:打败对手的最好方法就是心狠手辣,因为对手不会给你太多机会,如果他够厉害!
2010-05-23 10:58
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
得分:0 
您的输出结果肯定会让你吃一惊。呵呵

柔术:打败对手的最好方法就是心狠手辣,因为对手不会给你太多机会,如果他够厉害!
2010-05-27 09:22
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
得分:0 
执行的顺序是:
sum=a+sum*10;                  /* sum为该串数中的最大值 */
   m=m+sum;                       /* m为和 */
所以最后一次是执行m+=sum;所以m的值肯定比sum还要大!不过,还是谢谢你的指点!

柔术:打败对手的最好方法就是心狠手辣,因为对手不会给你太多机会,如果他够厉害!
2010-05-27 09:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-307722-1-1.html




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

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