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

这是我们学校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;

}

回答:

#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;

}

以上是 新人请教一道简单的编程题 的全部内容, 来源链接: utcz.com/p/195647.html

回到顶部