鱼C论坛

 找回密码
 立即注册
查看: 2845|回复: 7

[已解决]求助一下各位大佬们

[复制链接]
发表于 2021-10-15 10:35:21 | 显示全部楼层 |阅读模式

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

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

x
0. 请编写程序,计算出 1000 以内(不包含 1000)的自然数中,属于 3 或 5 的倍数的数字之和。
为什么我这个代码输出的是0啊?qaq

#include<stdio.h>
int main()
{
        int i,j,sum3,sum1,sum2;
       
        sum1=1;
        sum2=1;
       
        for(i=3;i<1000;i=i+3)
        {
                if(i%3==0)
                {
                        sum1=sum1*i;
                }
        }
  
    for(j=5;j<1000;j=j+5)
    {
            if(j%5==0)
            {
                    sum2=sum2*i;
                 }
        }
        sum3=sum2*sum1;
        printf("得数为%d",sum3);
}
最佳答案
2021-10-15 10:54:30
兄弟,你的代码很多错误

你的代码
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,j,sum3,sum1,sum2;
  5.       
  6.         sum1=1;
  7.         sum2=1;
  8.       
  9.         for(i=3;i<1000;i=i+3)
  10.         {
  11.                 if(i%3==0)
  12.                 {
  13.                         sum1=sum1*i; // 这里为什么不是加法?题目要求数字之和啊!
  14.                 }
  15.         }
  16.   printf("\n");
  17.     for(j=5;j<1000;j=j+5) // 为什么分开算 3 和 5 的倍数?假设 15(又可除整 3,也可除整 5)不就重复了?
  18.     {
  19.             if(j%5==0)
  20.             {
  21.                     sum2=sum2*i; // 为什么是 i 不是 j 吗?
  22.                  }
  23.         }
  24.         printf("%d %d\n", sum1, sum2);
  25.         sum3=sum2*sum1; // 为什么又用乘法?题目要求数字之和啊!
  26.         printf("得数为%d",sum3); // 当然是 0,因为你用的是乘积,最后答案无限大,int(整数形态最大只能存放 2147483647,超过自然变成负数)
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-15 10:48:54 | 显示全部楼层
别的先不说, 计算 和 的话,应该是 + 吧
用乘法 会超出  int 的最大范围
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-15 10:53:58 | 显示全部楼层
LuLD 发表于 2021-10-15 10:48
别的先不说, 计算 和 的话,应该是 + 吧
用乘法 会超出  int 的最大范围

#include<stdio.h>
int main()
{
        int i,j;
        long long int sum3,sum1,sum2;
       
        sum1=1;
        sum2=1;
       
        for(i=3;i<1000;i=i+3)
        {
                if(i%3==0)
                {
                        sum1=sum1*i;
                }
        }
  
    for(j=5;j<1000;j=j+5)
    {
            if(j%5==0)
            {
                    sum2=sum2*i;
                 }
        }
        sum3=sum2+sum1;
        printf("得数为%d",sum3);
}
看错了写了*,这样也是0。qaq
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-15 10:54:30 | 显示全部楼层    本楼为最佳答案   
兄弟,你的代码很多错误

你的代码
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,j,sum3,sum1,sum2;
  5.       
  6.         sum1=1;
  7.         sum2=1;
  8.       
  9.         for(i=3;i<1000;i=i+3)
  10.         {
  11.                 if(i%3==0)
  12.                 {
  13.                         sum1=sum1*i; // 这里为什么不是加法?题目要求数字之和啊!
  14.                 }
  15.         }
  16.   printf("\n");
  17.     for(j=5;j<1000;j=j+5) // 为什么分开算 3 和 5 的倍数?假设 15(又可除整 3,也可除整 5)不就重复了?
  18.     {
  19.             if(j%5==0)
  20.             {
  21.                     sum2=sum2*i; // 为什么是 i 不是 j 吗?
  22.                  }
  23.         }
  24.         printf("%d %d\n", sum1, sum2);
  25.         sum3=sum2*sum1; // 为什么又用乘法?题目要求数字之和啊!
  26.         printf("得数为%d",sum3); // 当然是 0,因为你用的是乘积,最后答案无限大,int(整数形态最大只能存放 2147483647,超过自然变成负数)
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-15 10:59:45 | 显示全部楼层
傻眼貓咪 发表于 2021-10-15 10:54
兄弟,你的代码很多错误

你的代码

。我感觉我猛了,没看清楚题目,我再改下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-15 11:03:15 | 显示全部楼层
傻眼貓咪 发表于 2021-10-15 10:54
兄弟,你的代码很多错误

你的代码


算得了233168应该养成多看题目习惯。
谢谢了&#9786;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-15 11:10:29 | 显示全部楼层
本帖最后由 jackz007 于 2021-10-15 11:12 编辑

          不要白费力气了,按照题目的要求
  1. sum1 = 7864404421193770495457012546487234597549449973991023224447237234812102748378870249696474141053675840631514896467743362824103675226185117638801931454171678365562951273382211054152675497190348929675110626850667911634523490432588300211387408823696716316810547669923667301043945289242630103541421839917164564236645739717182232155358539885493239304112803418644333412349734245377364997148862608594689980721760683061506364518960892715965677511795753254289198006570696416286523989604526002461882228716063082096734344310278156970541687408909428699073707165878603198299955533556004956201356159747588615198111441498521861616671354078057606222958709440340387793501132883208225726257113731409152776747316056311004185727905575723946895575688731140388725325082355791037491901148838475333632000000000000000000000000000000000000000000000000000000000000000000000000000000000
复制代码

  1. sum2 = 49078299576164772177659915850974377758845452519856045525375712234283966663309034884259651182520274659432205831646344302189587819766797356217680643636056137213465478967760338435638360322989866467856057088919734404117473366413422846095995475359539870406290241434174942041205339751716474339104934188071638345718383789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
复制代码

  1. sum3 = 385971596171462586963507576425884692431316206531975827352577350570753657653830006863657874694258846517583321232845056350605576178839846991315027748210494108279411714439802887230778942210308857111749798160970612302742412718489781233163981387762342676309645934661596201134479894562164507235443455245101163437150584691579495676369175568631682054176504104080377732390070629378244148737277275845333984914575520168432879864485027726743587731451943596831306766724171646108883797055003787153628204737531279192357347049837202577711678612224507431118241104645672747784274128775412976943340427807938458768015107520350408131775770342544292705318740648542388770374937740931735928622584713646462981595875993256782357889861612519050343295851369944877557395781408607631122908858642782719040123100480247760804693069344156635081283117166973980188692899406348684136099661394713592638216270622414783786669401819112095027505055000326889456279569406376497488349864230006934995315893363407945680461836535170414207829116453302970390342426017674170389823942561890304000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
复制代码

        这么大的数值,int 型的变量能胜任吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-15 11:12:48 | 显示全部楼层
jackz007 发表于 2021-10-15 11:10
不要白费力气了,按照题目的要求

你这个就很过分了 哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 11:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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