【发布时间】:2018-06-20 19:25:40
【问题描述】:
鉴于我的程序用于图像中的问题。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int N,R,A[100],B[100],i,flag=0;
double sol;
scanf("%d%d",&N,&R);
for(i=0;i<N;i++)
{
scanf("%d",&A[i]);
}
for(i=0;i<N;i++)
{
scanf("%d",&B[i]);
}
for(i=0;i<N;i++)
{
if(R>=A[i]&&R<=A[i+1])
{
sol=(double)R-(R*B[i])/100;
flag++;
}
}
if(flag==0)
{
sol=(double)R;
}
printf("%.2f",sol);
}
这个程序通过了三个测试用例。但失败了五次。并显示预期输出 3176.5,实际输出为 3177.0。如何清除所有案件。
【问题讨论】:
-
注意
A[i+1]可能在最后一次循环迭代中越界,但您尚未检查任何内容。严谨一点,检查scanf(那是什么)的返回值和实际的输入值。 -
(R*B[i])/100是整数计算。一个操作数需要转换为double。 -
抱歉,我没听懂。 A[i+1] 可以为此做什么......以及使用 scanf 值检查什么。
-
那么请阅读
scanf手册页以了解其返回值的含义。 -
只有第一个词,见@dbush 回答。