新人请教一道简单的编程题

新手上路,请多包涵

这是我们学校OJ上的一道题目,看起来挺简单的,可是做了好多次都没有成功,错误为Wrong Answer,想向各位高手请教一下,我的方法错在哪个地方。我目前是大一学生,对于c语言还不是很懂,所以可能会犯一些低级错误,希望高手不要介意。

这是这道编程题的要求:
图片描述

这是我最后提交的代码:

#include<stdio.h>
#include<math.h>
int main()
{
    int m,n,sum,i;
    sum=0;

    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
    {
        if(i%3==0&&fabs(i%10)==6) sum=sum+i;
    }
    printf("%d",sum);

    return 0;
}
阅读 2.7k
3 个回答
#include<stdio.h>
#include<math.h>
int main()
{
    long m,n,sum,i;
    sum=0;

    scanf("%d,%d",&m,&n);
    for(i=m; i<=n; i++)
    {
        if(i%3==0 && abs(i%10)==6){
            sum += i;
        }
    }
    printf("sum:%d",sum);

    return 0;
}

一个小修改的地方是不使用返回浮点型fabs而是整型的abs函数, 理由是浮点型由于精度问题不可能总是取得相等, 对整型数使用整型的绝对值更加可靠.

#include "stdio.h"
#include "math.h"

int main() {  // 左括号在末尾, K&R风格
  int m, n;  // int类型范围为–2,147,483,648 到 2,147,483,647, 满足示例要求
  int sum  = 0;
  int i;  // 循环变量

  // 单测试用例, 无需循环扫入
  scanf("%d %d", &m, &n);  // 扫描的输入字符串请严格按照示例的格式编写!
  for (i = m; i <= n; i += 1) {
    if (i % 3 == 0 && abs(i % 10) == 6) {  // 因为i可能为负数, 所以取绝对值判断尾数
      sum += i;
    }
  }

  printf("%d\n", sum);  // 一般在每行样例输出后换行

  return 0;  // 程序结束, 返回0给调用环境
}
if(i%3==0&&fabs(i%10)==6) sum=sum+i;

这里不需要浮点数绝对值函数fabs或整形绝对值函数abs,i已经可以确定是int类型,i%10的结果范围为0-9整型

#include<stdio.h>

int main()
{
    int m,n,sum = 0,i;
    
    printf("输入m,n的值:");
    scanf("%d%d",&m,&n);
    
    if(m > n)
    {
        printf("m>n,pause\n");
        return 0;
    }
    
    for(i = m;i <= n;i++)
    {
        if((i % 3) == 0 && (i % 10) == 6)
        {
            sum += i;
        }
    }
    printf("sum=%d\n",sum);
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进