新人请教一道简单的编程题
这是我们学校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