永发信息网

问我写的代码为什么提交上去第三个测试点会错误?请说明原因,初学者还不太懂,有什么逻辑错误吗

答案:2  悬赏:80  手机版
解决时间 2021-11-20 11:36
  • 提问者网友:未信
  • 2021-11-19 22:35
问我写的代码为什么提交上去第三个测试点会错误?请说明原因,初学者还不太懂,有什么逻辑错误吗
最佳答案
  • 五星知识达人网友:佘樂
  • 2021-11-19 23:01
错误分析:
1、scanf函数调用格式串有误,这是输入格式(你输入半径和高时,是用空格相隔的)和代码使用的格式不一致引起的。使用scanf函数时,输入的格式一定要和它参数中的格式一一对应,否则会错误。如“%d,%d”,则输入时是“6,8”,两数用半角逗号相隔;又如“%d %d”,则输入时是"6 8",两数用空格相隔。多项数据同时输入时,各项数据格式间要有分隔符(空格、半角逗号等,这要根据你的需要),有分隔符,scanf函数在内部才能区分出数据,并解析,否则无法区分数据项,从而引起错误。
2、printf函数调用格式串有误,这是输出格式和数据类型不一致(本题中,小的数不会有错,但大的数就会有错了,因为float和double表示的数的范围是不一样的)。float型使用%f;double型使用%lf。
修正方法:
1、请将(第2个)“scanf("%lf%lf",&r,&h);”修改为“scanf("%lf %lf",&r,&h);”,即在两个“%lf”之间加个空格“ ”。
2、请将两个“printf("%.2f\n");”都修改为“printf("%.2lf\n");”。追问改了还是错的为什么不在吗为什么不理我了
全部回答
  • 1楼网友:逐風
  • 2021-11-19 23:28
你的这种当n=2或n=3时,让程序多做了一次判断。而下面的这种,就只判断一次N=2或N=3.
if (n==1)
{ printf("\n Please enter the radius: ");
scanf("%lf",&r);
v=r*r*r*PI*4.0/3;
printf(" v= %.2f",v);
}
else if (n==2)
{ printf("\n Please enter the radius and the height: ");
scanf("%lf%lf",&r,&h);
v=r*r*h*PI;
printf(" v= %.2f",v);
}
else if (n==3)
{ printf("\n Please enter the radius and the height: ");
scanf("%lf%lf",&r,&h);
v=r*r*h*PI*1.0/3;
printf(" v= %.2f",v);
}
else
break;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯