| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3569 人关注过本帖
标题:输出结果不对
只看楼主 加入收藏
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
结帖率:96.88%
收藏
已结贴  问题点数:20 回复次数:13 
输出结果不对

#include<stdio.h>
main()
{
    int a,n,i,j;
    int sum=0;
   
    printf("请输入a 和 n 的值:");
    scanf("%d %d",&a,&n);
    printf("a=%d n=%d",a,n);

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=i;j++)
        {
            sum=sum+a;
            a=a*10;
        }
    }
    printf("%d",sum);
     
    return 0;
}

这个程序原来的目的是要实现 给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
实际运行结果是 当我输入5 5
输出 a=5 n=一个很大的数与原输入不符 而且运行结束 没有printf("%d",sum) 这一项

在我去掉下一半的代码 保留
#include<stdio.h>
main()
{
    int a,n,i,j;
    int sum=0;
   
    printf("请输入a 和 n 的值:");
    scanf("%d %d",&a,&n);
    printf("a=%d n=%d",a,n);
}
那么输出正常


[此贴子已经被作者于2016-10-15 17:40编辑过]

搜索更多相关主题的帖子: 编写程序 include return 正整数 
2016-10-15 14:12
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
printf("a=%d n=%d",a,n);改成printf("a=%d n=%d\n",a,n);试试
你把两个数连在一起读了,
2016-10-15 15:03
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
以下是引用炎天在2016-10-15 14:12:19的发言:


#include
main()
{
    int a,n,i,j;
    int sum=0;
   
    printf("请输入a 和 n 的值:");
    scanf("%d %d",&a,&n);
    printf("a=%d n=%d",a,n);

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=i;j++)
        {
            sum=sum+a;   
            a=a*10; //例:a=5,第一次运行到这里,a=5*10=50,第二次运行到这里,a=50*10=500.而这个循环要运行1+2+3+4+5=15次,此时a是多少呢?
        }
    }
    printf("%d",sum);
     
    return 0;
}

这个程序原来的目的是要实现 给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
实际运行结果是 当我输入5 5
输出 a=5 n=一个很大的数与原输入不符 而且运行结束 没有printf("%d",sum) 这一项

在我去掉下一半的代码 保留
#include
main()
{
    int a,n,i,j;
    int sum=0;
   
    printf("请输入a 和 n 的值:");
    scanf("%d %d",&a,&n);
    printf("a=%d n=%d",a,n);
}
那么输出正常

2016-10-15 16:46
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
#include
 main()
 {
     int a,m,n,i,j;
     int sum=0;
     
     printf("请输入a 和 n 的值:");
     scanf("%d %d",&a,&n);
     printf("a=%d n=%d\n",a,n);
     m=a;
     for(i=1;i<=n;i++)
     {
         for(j=1,a=m;j<=i;j++)
         {
             sum=sum+a;
             a=a*10;
         }
     }
     printf("%d",sum);
      
     return 0;
 }
这么改下吧
2016-10-15 17:02
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 3楼 linlulu001
谢谢,以后遇到这样的问题我会注意的

早知做人那么辛苦!  当初不应该下凡
2016-10-15 17:50
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 4楼 ehszt
按照你的方法 的确可以.
那个printf 加\n 我理解了

但是你给我改的第二个地方我还不太懂,
m=a 为什么在下面的for循环中不能直接使用a ,而是要通过m的传递

早知做人那么辛苦!  当初不应该下凡
2016-10-15 17:53
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:6 
回复 6楼 炎天
a每次循环结束,值都发生了改变。改变i后a需重新赋初值。
2016-10-15 18:27
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
for(i=1;i<=n;i++)
      {
          for(j=1,a=m;j<=i;j++)
          {
              sum=sum+a;  
              a=a*10; //在执行完这句代码后, 是从for语句中的j<=i 开始执行么?
          }
      }
上面的代码与下面代码所能达到的目的一样吗?
 for(i=1;i<=n;i++)
      {
          a=m;
          for(j=1;j<=i;j++)
          {
              sum=sum+a;
              a=a*10;
          }

      }

早知做人那么辛苦!  当初不应该下凡
2016-10-15 18:41
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:4 
这个题目这样写是不是复杂了?如下代码是不是简介些?
#include<stdio.h>
void main()
{
    int a,n,i,j,sum;   
    printf("请输入a 和 n 的值:");
    scanf("%d %d",&a,&n);
    printf("a=%d n=%d\n",a,n);
    for(i=0,sum=0,j=a;i<n;i++,j=j*10+a)sum+=j;
    printf("%d\n",sum);
}
2016-10-15 18:52
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 9楼 xzlxzlxzl
for(i=0,sum=0,j=a;i<n;i++,j=j*10+a)sum+=j;
我对这个循环没怎么看懂  设 a=3  n=2
循环开始
1.i=0 sum=0 j=3;...j=3*10+3    sum+=j sum=0+33=33
2.i=1 sum=33 j=3;i<n;... j=3*10+3     sum+=j  sum=33+33=66
不知道我哪里错了

早知做人那么辛苦!  当初不应该下凡
2016-10-15 19:31
快速回复:输出结果不对
数据加载中...
 
   



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

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