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日
  • 展开全部

悬赏问题

  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器