鱼C论坛

 找回密码
 立即注册
查看: 1900|回复: 3

[已解决]为什么这个加号不起作用?

[复制链接]
发表于 2018-3-5 17:23:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <math.h>
main()
{
        int i,j,m;
        long sum=0;
        printf("请输入a值及项数(s=a+aa+aaa+aaaa+aa...a):");
        scanf("%d,%d",&i,&j);
        getchar();
        for(m=0;m<j;m++)
        {
                sum+=i*pow(10,m);          //为什么这个加号没有起作用???
        }
        printf("%ld",sum);
}
输入2,5之后,显示出的sum为最后一项22222,而不是2+22+222+2222+22222的值
最佳答案
2018-3-5 17:56:36
我不知道你为什么说没有起作用,我们先来梳理一下运行过程
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5.         int i,j,m;
  6.         long sum=0;
  7.         printf("请输入a值及项数(s=a+aa+aaa+aaaa+aa...a):");
  8.         scanf("%d,%d",&i,&j);
  9.         //getchar();
  10.         printf ("i = %d j = %d\n",i,j);
  11.         for(m=0;m<j;m++)
  12.         {
  13.                 sum += i * pow(10,m);
  14.                 //运行结果:
  15.                 //1. sum = 0 + 2 * 1  sum == 2
  16.                 //2. sum = 2 + 2 * 10 sum == 22
  17.                 //3. sum = 22 + 2 * 100 sum == 222
  18.                 //4. sum = 222 + 2 * 1000 sum == 2222
  19.                 //5. sum = 2222 + 2 * 10000 sum == 22222
  20.                 printf ("第%d次的时候sum = %d\n",m+1,sum);
  21.         }
  22.         printf("%ld",sum);
  23. }
复制代码

按照我的理解~你要让他们相加~ 那你还需要一个变量来存放~ 或许你可以这样写~
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5.         int i,j,m;
  6.         long sum=0;
  7.         long sum_1 = 0;
  8.         printf("请输入a值及项数(s=a+aa+aaa+aaaa+aa...a):");
  9.         scanf("%d,%d",&i,&j);
  10.         //getchar();
  11.         printf ("i = %d j = %d\n",i,j);
  12.         for(m=0;m<j;m++)
  13.         {
  14.                 sum += i * pow(10,m);
  15.                 sum_1 = sum_1 + sum;
  16.         }
  17.         printf("%ld",sum_1);
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-5 17:52:42 | 显示全部楼层
本帖最后由 必填的用户名 于 2018-3-5 17:54 编辑

我很抱歉,原来是自己代码敲错了,这个代码算的是a+a0+a00+……+a00…0000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-5 17:56:36 | 显示全部楼层    本楼为最佳答案   
我不知道你为什么说没有起作用,我们先来梳理一下运行过程
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5.         int i,j,m;
  6.         long sum=0;
  7.         printf("请输入a值及项数(s=a+aa+aaa+aaaa+aa...a):");
  8.         scanf("%d,%d",&i,&j);
  9.         //getchar();
  10.         printf ("i = %d j = %d\n",i,j);
  11.         for(m=0;m<j;m++)
  12.         {
  13.                 sum += i * pow(10,m);
  14.                 //运行结果:
  15.                 //1. sum = 0 + 2 * 1  sum == 2
  16.                 //2. sum = 2 + 2 * 10 sum == 22
  17.                 //3. sum = 22 + 2 * 100 sum == 222
  18.                 //4. sum = 222 + 2 * 1000 sum == 2222
  19.                 //5. sum = 2222 + 2 * 10000 sum == 22222
  20.                 printf ("第%d次的时候sum = %d\n",m+1,sum);
  21.         }
  22.         printf("%ld",sum);
  23. }
复制代码

按照我的理解~你要让他们相加~ 那你还需要一个变量来存放~ 或许你可以这样写~
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5.         int i,j,m;
  6.         long sum=0;
  7.         long sum_1 = 0;
  8.         printf("请输入a值及项数(s=a+aa+aaa+aaaa+aa...a):");
  9.         scanf("%d,%d",&i,&j);
  10.         //getchar();
  11.         printf ("i = %d j = %d\n",i,j);
  12.         for(m=0;m<j;m++)
  13.         {
  14.                 sum += i * pow(10,m);
  15.                 sum_1 = sum_1 + sum;
  16.         }
  17.         printf("%ld",sum_1);
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-5 21:04:53 | 显示全部楼层
#include <stdio.h>
#include <math.h>
main()
{
         int i,j,m;
         long sum=0,sum1=0;
         printf("请输入a值及项数(s=a+aa+aaa+aaaa+aa...a):");
         scanf("%d%d",&i,&j);
         getchar();
         for(m=0;m<j;m++)
         {
                 sum+=i*pow(10,m);         
                 sum1+=sum;
                                 printf("%d\n",sum);
        }
         printf("%ld",sum1);
}
//首先 sum+=i*pow(10,m);         并不是表示s=a+aa+aaa+aaaa+aa...a  而是表示 a,aa,aaa,aaaa......每一次的值
//所以定义一个变量sum1来储存和的值:sum1+=sum; 这样就可以了
//不推荐scanf()中添加 , 来分隔可以用空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 00:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表