左边是题目,右边是我写的代码👇
第一个警告,是裁判测试程序里缺少对scanf()函数返回值的处理,而裁判测试程序是不允许修改的。
第二个警告,是int prime()函数缺了 return 语句漏洞。
两个函数修改如下,供参考:
int prime(int p)
{
int i;
if (p <= 1) // 修改
return 0;
if (p < 4) // 修改
return p > 1; // 修改
for (i = 2; i * i <= p; i++) // 修改
if (p % i == 0)
return 0;
return 1; // 修改
}
int PrimeSum(int m, int n)
{
int p, sum;
for (p = m, sum = 0; p <= n; p++)
if (prime(p)) sum += p; // 修改
return sum;
}
int prime(int p)
{
int i ;
if(p==2) return 1;
if (p<=0||p==1) return 0;
for (i=2;i<p;i++)
{
if (p%i==0)
return 0;
}
return 1;
}
没有后面的return 1; 吧。
所说到的每个步骤,笼统一些的说法其实就是所构建的它所要满足的条件,比如对于身份证检验系统来说,不仅要满足年月日,还应该满足最后一位的ISO校验,也就是因为这一系列的问题才会导致很多的朋友难以快速的完成对于程序的需求,因此很难快速的完成对一个程序的补充和完善。
答案是不是17