小白求解答
/*输入一个小于1000的正数,并且要求对其进行检查是否是小于1000的正数,然后求其平方根,若平方根是小数,则显示整数部分*/#include <stdio.h>
#include <math.h>
int main(){
int i,k;
printf("请输入一个小于1000的正数:");
scanf("%d",&i);
if(i>=1000){
printf("请按要求输入!!\n请输入一个小于1000的正数:");
scanf("%d",&i);
}
else if(i<0){
printf("请按要求输入!!\n请输入一个小于1000的正数:");
scanf("%d",&i);
}
k=sqrt((double)i);
printf("%d的平方根是 : %d",i,k);
return 0;
}
今天试着写书上的题目,在这一题的时候出现了一个问题,就是输入1000,还有 1001的时候,控制台显示1000(1001)的平方根是31,请问是我代码哪里不对吗? 我觉得可能是%d的问题,你输出的结果取整了,你试试%f看看行不行。我也是新手,一起加油 啊,好像因为权限问题(还是我不会使用?不知道怎么上传图片),我没办法上传运行错误结果的图片,现在我重新运行了几次,可以成功正常运行了,以上代码没有修改 你应该把中间判断输入是否正确放在一个循环中,当输入值符合要求的时候才执行下面的计算语句。
你的程序没有循环,若两次输入数据都不符合要求,程序也会继续向下执行,计算第二次输入的值的平方根。
#include <stdio.h>
#include <math.h>
int main(){
int i,k;
printf("请输入一个小于1000的正数:");
scanf("%d",&i);
while(1){
if(i>=1000 or i<0){
printf("请按要求输入!!\n请输入一个小于1000的正数:");
scanf("%d",&i);
}
else
break;
}
k=sqrt((double)i);
printf("%d的平方根是 : %d",i,k);
return 0;
} 百分号 发表于 2019-12-27 17:29
我觉得可能是%d的问题,你输出的结果取整了,你试试%f看看行不行。我也是新手,一起加油
好的,加油 本帖最后由 jackz007 于 2019-12-27 17:39 编辑
1000、1001 的平方根确实是 31,有何不妥吗?
30 x 30 = 900
31 x 31 = 961
32 x 32 = 1024 sunrise085 发表于 2019-12-27 17:33
你应该把中间判断输入是否正确放在一个循环中,当输入值符合要求的时候才执行下面的计算语句。
你的程序没 ...
哦哦,好的,我会注意的,谢谢 XDuo 发表于 2019-12-27 17:33
啊,好像因为权限问题(还是我不会使用?不知道怎么上传图片),我没办法上传运行错误结果的图片,现在我重 ...
你的代码是有问题的。
若是第一次输入数据符合要求,可以直接出结果。若第一次输入不符合要求,会进入if…else…进行第二次输入,但是若第二次输入仍然不符合要求,则会按照第二次输入的数据进行计算。应该把中键判断是否输入符合要求的部分放入循环中,知道输入符合要求才能出循环。 sunrise085 发表于 2019-12-27 17:37
你的代码是有问题的。
若是第一次输入数据符合要求,可以直接出结果。若第一次输入不符合要求,会进入if ...
啊,不知道我理解的对不对哈,就是要把中间if...else if...语句放在一个循环里面吗? jackz007 发表于 2019-12-27 17:36
1000、1001 的平方根确实是 31,有何不妥吗?
30 x 30 = 900
31 x 31 = 961
...
emm...没没没,可能是我没有表达清楚,就是我想在输入i值的时候进行判断,如果大于或者等于1000,就要求重新输入,但是开始的运行结果显示 “1000(1001)的平方根是31”,和我想要的结果不一样 XDuo 发表于 2019-12-27 17:43
啊,不知道我理解的对不对哈,就是要把中间if...else if...语句放在一个循环里面吗?
我帮你修改了。程序在上面。你看看吧 sunrise085 发表于 2019-12-27 17:58
我帮你修改了。程序在上面。你看看吧
感谢感谢
页:
[1]