| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 707 人关注过本帖
标题:我服了,到底错哪了?高手帮忙!
只看楼主 加入收藏
shinobifc
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2008-7-31
结帖率:100%
收藏
 问题点数:0 回复次数:7 
我服了,到底错哪了?高手帮忙!
程序的目的是实现:a+aa+aaa+... ...+aaa..aaa(n个a)的和,如n=3,a=2,则为:2+22+222。我的代码如下:
#include <math.h>
main ()
{
    long int a, temp=0, add=0, sum=0;
    int n, i;
    printf("Please input positive integers 'a' and 'n':\n");
    scanf("%ld %d", &a, &n);
    while (a<=0 || n<=0)
    {
        printf("Sorry! 'a' or 'n' doesn't fit. Please input 'a' & 'n' again:\n");
        scanf("%ld %d", &a, &n);
    }
    while (a>=10)
    {
        printf("Sorry! 'a' can not be larger than 9. Please input 'a' & 'n' again:\n");
        scanf("%ld %d", &a, &n);
    }
    for (i=n; i>0; i--)
    {
        temp=temp+a*pow(10,i-1);
    }
    add=(int)(temp);
    sum=add;
    while (add>9)
    {
        add=(int)(add/10);
        sum=sum+add;
    }
    printf("%d+%d%d+...+%d=%d.\n",a,a,a,(int)(temp),sum);
}
编译通过,测试:a=2, n=6,结果完全不对,a甚至还等于0了。我郁闷了,到底错哪了?怎么也调不出来!谢谢了!
搜索更多相关主题的帖子: long positive include 
2010-02-08 17:53
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
程序代码:
#include <math.h>
main ()
{
    long int a, temp=0, add=0, sum=0;
    int n, i;
    printf("Please input positive integers 'a' and 'n':\n");
    scanf("%ld %d", &a, &n);
    while (a<=0 || n<=0)
    {
        printf("Sorry! 'a' or 'n' doesn't fit. Please input 'a' & 'n' again:\n");
        scanf("%ld %d", &a, &n);
    }
    while (a>=10)
    {
        printf("Sorry! 'a' can not be larger than 9. Please input 'a' & 'n' again:\n");
        scanf("%ld %d", &a, &n);
    }
    for (i=n; i>0; i--)
    {
        temp=temp+a*pow(10,i-1);//将double转换成int时发生了错误,如30000000.00000转换成了29999999
    }
    add=(int)(temp);
    sum=add;
    while (add>9)
    {
        add=(int)(add/10);
        sum=sum+add;
    }
    printf("%d+%d%d+...+%d=%d.\n",a,a,a,(int)(temp),sum);
}
收到的鲜花
  • shinobifc2010-02-08 21:21 送鲜花  1朵   附言:我很赞同
2010-02-08 18:21
wuzhenzhou
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2010-2-8
收藏
得分:0 
程序代码:
#include <stdio.h>

int main (void)
{
    char a,n;
    long  temp=0, sum=0;
    int i;

    printf("Please input positive integers 'a' and 'n':\n");
    scanf("%c %c", &a, &n);
    while (a<'1'  || n<'1' || a > '9' || n > '9')
    {
        printf("Sorry! 'a' or 'n' doesn't fit. Please input 'a' & 'n' again:\n");
        scanf("%c %c", &a, &n);
    }

    a-=48;
    n-=48;

    for (i=0; i<n; i++)
    {
        temp = temp*10 + a;
        sum += temp;
    }

    if (n == 1)
    {
        printf("%d=%d.\n",a,a);
    }
    else if (n == 2)
    {
        printf("%d+%ld=%ld.\n",a, temp ,sum);
    }
    else if (n == 3)
    {
        printf("%d+%d%d+%ld=%ld.\n",a, a,a, temp, sum);
    }
    else if (n > 3)
    {

        printf("%d+%d%d+...+%ld=%ld.\n",a,a,a,temp,sum);
    }

    return 0;
}
收到的鲜花
  • shinobifc2010-02-08 21:21 送鲜花  1朵   附言:原创内容
2010-02-08 19:15
shinobifc
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2008-7-31
收藏
得分:0 
回复 2楼 heartnheart
那该如何解决呢?
2010-02-08 20:32
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:0 
实际上是不需要幂函数的,你考虑一下前后项的关系。
#include <stdio.h>
main ()
{
    long int temp=0, sum=0;
    int a, n, i;

    printf("Please input positive integers 'a' and 'n':\n");
    scanf("%d%d", &a, &n);

    while (a<=0||a>=10 || n<=0)
    {
        printf("Sorry! 'a' or 'n' doesn't fit. Please input 'a' & 'n' again:\n");
        scanf("%d%d", &a, &n);
    }

    for (i=0; i<n; i++)
    {
        temp=temp*10+a;
        sum+=temp;
    }

    printf("%d+%d%d+...+%ld=%ld.\n",a,a,a,temp,sum);
}
2010-02-08 21:00
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
回复 4楼 shinobifc
方法有很多,最简单的就是你自己写一个pow函数,返回值为long
如long myPow(int k) {
int i = 0;
long temp = 1;

for(i = 0; i < k; i++);
    temp *= 10;
}
2010-02-08 21:01
杨维
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-2-9
收藏
得分:0 
我稍微改了下能运行(我认为要注意while 与 if 的区别)
#include <math.h>
#include<stdio.h>
main ()
{
    long int a, temp=0, add=0, sum=0;
    int n, i;
    printf("Please input positive integers 'a' and 'n':\n");
    scanf("%ld%d",&a,&n);
    if(a<=0 || n<=0 || a>=10)
    {
        printf("Sorry! 'a' or 'n' doesn't fit. Please input 'a' & 'n' again:\n");
        scanf("%ld%d",&a,&n);
    }
    for (i=n;i>0; i--)
    {
        temp=temp+a*pow(10,i-1);
    }
    add=(int)(temp);
    sum=add;
    while (add>9)
    {
        add=(int)(add/10);
        sum=sum+add;
    }
    printf("%d+%d%d+...+%d=%d.\n",a,a,a,(int)(temp),sum);
}
2010-02-09 18:12
不曾遗忘
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-2-9
收藏
得分:0 
#include <math.h>
#include<stdio.h>
main () {
    long int a, j=1, add=0;
    int i,n;
    printf("Please input positive integers 'a' and 'n':\n");
    scanf("%ld%d",&a,&n);
    for (i=n; i>0; i--) {
       add+=a*Mypow(i)*j;
       j++;
    }
    printf("%ld\n",add);
    getch();

}
int Mypow(int n) {
    int i,k=1;
    for (i=1; i<n; i++)
        k*=10;
    return (k);
}

tc下写的,  没有加判断a n 的语句  只有简单的算法!!
2010-02-10 12:16
快速回复:我服了,到底错哪了?高手帮忙!
数据加载中...
 
   



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

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