标题:求解a+aa+aaa........+aaaaaaaa(n个a)。其中a和n是键盘读入的整数。
只看楼主
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
结帖率:85.71%
 问题点数:0 回复次数:13 
求解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
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
得分:0 
我运行完全正确.....这程序不久前我也写过..
#include<stdio.h>
main()
{
    int a,n,i,sum=0,sum2=0;
    scanf("a=%d,n=%d",&a,&n);
    for(i=1;i<=n;i++)
    {
        sum=sum*10+a;
        if(i==n)
            printf("%d",sum);
        else
            printf("%d+",sum);
        sum2=sum+sum2;
    }
    printf("=%d\n",sum2);
}

输入时注意一下要完整输入比如输入2和5要完整输入 a=2,n=5 ..

学习c语言痛苦!!但是要坚持~~
2010-05-22 15:19
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
得分:0 
"如,输入2,5,结果却是t=2451,sum=24520,sum是正确值,但是t的值却出错了,为何?"
说明一下sum的值也是错的 应该是 24690

学习c语言痛苦!!但是要坚持~~
2010-05-22 15:21
qepwqyjwfn
Rank: 2
等 级:论坛游民
帖 子:9
专家分:27
注 册:2010-4-4
得分:0 

程序中没有错啊
不过修改成这样比较直观  
#include<stdio.h>
#include<math.h>
main()
{
  int n,i,a;
  long int t=0,sum=0;
  printf("please input the a and n:\n");
  scanf("%d,%d",&a,&n);
  printf("a=%d,n=%d\n",a,n);

  for(i=0;i<n;i++)
  {
     t=(t*10)+a;
     sum+=t;
  }
  t=(t-a)/10;
  printf("t=%ld,sum=%ld\n",t,sum);
}

TUBRO C 编译通过
2010-05-22 16:12
编程交流者
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-22
得分:0 
不错啊!
2010-05-22 16:14
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
得分:0 
多谢各位指点!不过我下午重新去运行了一下,结果没有上次的错误了,可能是我电脑的问题!

柔术:打败对手的最好方法就是心狠手辣,因为对手不会给你太多机会,如果他够厉害!
2010-05-22 19:15
aiyinsitan
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:183
专家分:177
注 册:2010-4-22
得分:0 
#include "stdio.h"
#include "math.h"
int prime(int ,int );
void main()
{
    int a,n;
    scanf("%d%d",&n,&a);
    printf("%d",prime(a,n));
}
int prime(int a,int n)
{  
    int sum=0,i;
    for(i=0;i<n;i++)
    {
        a=a+10*n;
      sum=sum+a;
    }
    return sum;
}
   
2010-05-23 08:43
qq304983260
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-23 09:45
crshj7758258
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-23 09:50
源本英明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



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




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

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