小甲鱼老师上课讲的课后题 猜想下sqrt()函数的原理并尝试编程
#include<stdio.h>void main()
{
int sqrt(int a);
int x,y;
scanf ("%d",&x);
y = sqrt(x);
if(y == b)
{
printf("%d是%d开方得出来的",y,x);
}
if(y == error)
{
printf("error,input anthor number");
}
}
int sqrt(int a)
{
int i,b;
b=a/2;
for(i=1;i<=b;i++)
{
if(i*i==a)
{
b=i;
return b;
}
return error;
}
}
这是我编译的过程,在编译的时候发现两个错误。请教各位老试指出错误的地方,以及如何改正谢谢老师们 本帖最后由 丶忘却的年少o 于 2017-8-20 20:17 编辑
#include<stdio.h>
void main()
{
int sqrt(int a);
int x, y;
printf("please input a num:"); //加个提示语句会觉得舒服点,哈哈
scanf("%d", &x);
y = sqrt(x);
if(y == -1) //返回-1就是没有取到值
{
printf("error,input anthor number!\n");
}
else //否则就是取到了打印就好了
{
printf("%d是%d开方得出来的\n", y, x);
}
}
int sqrt(int a)
{
int i, b;
b = a / 2;
for(i = 1; i <= b; i++)
{
if(i*i == a)
{
b = i;
return b;
}
//return -1这一句不能放这里,判断一次要是i*i != a就返回那还要循环干嘛
}
return -1; //放循环外面,说明迭代到最大值都不满足退出循环并返回
}
//着重要说明一点,你的error和b是sqrt函数里的局部变量,不是全局变量,退出了sqrt就没了。而且你的error都没声明 其实都是些很小的问题,源自于你的不细心,我也初学者,但是问题一眼就看出了,上面两位答案基本到位,希望你采纳 ba21 发表于 2017-8-20 18:35
谢谢 丶忘却的年少o 发表于 2017-8-20 20:15
谢谢{:5_91:},我没看见二楼,下次一定给你点 龍三少 发表于 2017-8-20 21:11
其实都是些很小的问题,源自于你的不细心,我也初学者,但是问题一眼就看出了,上面两位答案基本到位,希望 ...
恩恩
jellye 发表于 2017-8-20 21:28
谢谢,我没看见二楼,下次一定给你点
客气啦,只要你能理解题目就好 嘿嘿
页:
[1]