nobugdebug 2022-12-17 01:09 采纳率: 92.7%
浏览 35
已结题

c语言,查找m~n之间的素数,并求和。 waring了,这种情况是怎么回事?该如何解决呢?

c语言,查找m~n之间的素数,并求和。
warning了,这种情况是怎么回事?该如何解决呢?

img

#include <stdio.h>
int main()
{
    int m,n,sum = 0;
    int flag;
    scanf("&d&d",&m,&n);
    for (int i = m; i <= n; i++)
    {
        flag = 1;
        for(int j = 2;j < i;j++)
        {
            if(i % j == 0)
            {
                flag = 0;
                break;
            }  
        }
        if(flag)
        {
            printf("%d\n",i);
            sum = sum + i;
        }
    }
    printf("sum of prime numbers:%d\n",&sum);
    return 0;
}

之后看了正确答案,发现在定义上有不同,具体为什么上面的不行而下面的答案是可以的呢?这两者的区别体现在哪里?求解答

#include <stdio.h>
int main()
{
    int m, n,i,j,flag,sum=0;
    scanf("%d%d", &m, &n);
    for (i = m; i <= n; i++)
    {
        flag = 1;
        for (j = 2; j < i; j++)
        {
        if (i%j == 0)
        {
            flag = 0;
            break;
        }
        }
        if (flag)
        {
            printf("%d\n", i);
            sum = sum + i;
        }
    }
    printf("sum of prime numbers:%d\n", sum);
    return 0;
} 

  • 写回答

1条回答 默认 最新

  • 碳水小王子 2022-12-17 03:14
    关注

    1.因为正确的语法是printf("%d",sum),不应该存在取地址符号(&),printf("%d",sum)表示输出sum的值,printf("%d",&sum)表示输出sum的地址值,这个如果学习了指针应该会容易理解,所以没有报错,但是有结果
    2.严格的c语言语法中for循环中不可临时定义变量,像你写的for(int i=m,i<=n,i++),但是c++语言可以,我想既然你的编译器可以运行成功,说明你并没有按照严格的创建c语言的.c文件,而是创建了.cpp文件,则默认了c++语法成立,所以你的变量定义和标准答案不同,标准答案是严格的c,所有变量只能在函数开头定义。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 修改了问题 12月17日
  • 修改了问题 12月17日
  • 展开全部

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度