C语言——没有错误、没有结果、求改正。
答案:3 悬赏:10 手机版
解决时间 2021-03-12 17:42
- 提问者网友:做自己de王妃
- 2021-03-12 10:54
C语言——没有错误、没有结果、求改正。
最佳答案
- 五星知识达人网友:低音帝王
- 2021-03-12 11:46
第一个:if(a第二个:我看你这个函数每次都有三个输出,为什么?因为当条件不满足时他还会执行下一条语句(顺序执行的),所以你在if的条件内好加个括号,之后再加个else语句。这是你原来的
if(d>0)
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%d/tx2=%d/n",x1,x2);
应改为:
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%d/tx2=%d/n",x1,x2);
}else
{
return 0; //有返回值表示函数结束,当然,在这里你也可以改用break
}
下面判断的也要这样改,三个都要改!
第三个:在int prime(int a)这个函数中不需要scanf("%d",&a);这一句,因为你在主函数已经给他输入了,这句要删了;还有求素数要从2开始,你从1开始,所有数对1求余都为0,所以这里i的初值要改为i=2;还有
if(temp=0)
printf("%d是非素数",a);
break;
这个一定要改为
if(temp=0)
{
printf("%d是非素数",a);
break;
}
记住,如果if的作用范围内有两条或两条以上的语句都必须加大括号,一句的加不加都一样,但为了编程规范,可读性好,最好以后都加上吧。
if(d>0)
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%d/tx2=%d/n",x1,x2);
应改为:
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%d/tx2=%d/n",x1,x2);
}else
{
return 0; //有返回值表示函数结束,当然,在这里你也可以改用break
}
下面判断的也要这样改,三个都要改!
第三个:在int prime(int a)这个函数中不需要scanf("%d",&a);这一句,因为你在主函数已经给他输入了,这句要删了;还有求素数要从2开始,你从1开始,所有数对1求余都为0,所以这里i的初值要改为i=2;还有
if(temp=0)
printf("%d是非素数",a);
break;
这个一定要改为
if(temp=0)
{
printf("%d是非素数",a);
break;
}
记住,如果if的作用范围内有两条或两条以上的语句都必须加大括号,一句的加不加都一样,但为了编程规范,可读性好,最好以后都加上吧。
全部回答
- 1楼网友:一把行者刀
- 2021-03-12 14:24
#include
int cdiv(int a,int b)
{
int r,z;
//scanf("%d%d",&a,&b);
if(a//z=a,a=b,b=z;
{
z=a;
a=b;
b=z;
}
while(a%b>1)
{r=a%b;a=b;b=r;}
return b;
}
int cmul(int a,int b)
{
int cdiv(int a,int b);
int z,x;
//scanf("%d%d",&a,&b);
x=cdiv(a,b);
z=a*b/x;
return z;
}
int main()
{
int a=0;
int b=0;
int adiv,mul;
scanf("%d%d",&a,&b);
adiv=cdiv(a,b);
mul=cmul(a,b);
printf("the div is %d, and the mul is %d.",adiv,mul);
return 0;
}
//首先你这个算法有问题,考虑的不全面
//其次你的调用有错误
//这个是把你的改正后的,能输出了但是只是一种情况
这个是质数的
你所有的 程序都犯了传参 的错误,在分函数中不需要scanf,像第一个我给你改的那样,只需要在main函数中scanf一次就可以
#include
int foo(int num)
{
int i = 0;
int flag = 1;
if( num ==2 || num==3)
{
flag = 1;
}
else
{
for( i=2;i<=num/2;i++ )
{
if( ( num % i ) == 0)
{
flag = 0;
break;
}
}
}
return flag;
}
int main()
{
int num = 0;
int flag = 0;
while(1)
{
printf("Please input a num:\n");
scanf("%d",&num);
if(num<=1)
{
printf("请输入>1的数字\n");
continue;
}
flag = foo(num);
if ( flag == 1 )
printf("The num is 质数\n");
else
printf("The num is 非质数\n");
}
return 0;
}追问可是一执行它就停止工作了也。。。追答你这个在main里套一个while(1),就一直工作了!!!追问谢谢!
int cdiv(int a,int b)
{
int r,z;
//scanf("%d%d",&a,&b);
if(a//z=a,a=b,b=z;
{
z=a;
a=b;
b=z;
}
while(a%b>1)
{r=a%b;a=b;b=r;}
return b;
}
int cmul(int a,int b)
{
int cdiv(int a,int b);
int z,x;
//scanf("%d%d",&a,&b);
x=cdiv(a,b);
z=a*b/x;
return z;
}
int main()
{
int a=0;
int b=0;
int adiv,mul;
scanf("%d%d",&a,&b);
adiv=cdiv(a,b);
mul=cmul(a,b);
printf("the div is %d, and the mul is %d.",adiv,mul);
return 0;
}
//首先你这个算法有问题,考虑的不全面
//其次你的调用有错误
//这个是把你的改正后的,能输出了但是只是一种情况
这个是质数的
你所有的 程序都犯了传参 的错误,在分函数中不需要scanf,像第一个我给你改的那样,只需要在main函数中scanf一次就可以
#include
int foo(int num)
{
int i = 0;
int flag = 1;
if( num ==2 || num==3)
{
flag = 1;
}
else
{
for( i=2;i<=num/2;i++ )
{
if( ( num % i ) == 0)
{
flag = 0;
break;
}
}
}
return flag;
}
int main()
{
int num = 0;
int flag = 0;
while(1)
{
printf("Please input a num:\n");
scanf("%d",&num);
if(num<=1)
{
printf("请输入>1的数字\n");
continue;
}
flag = foo(num);
if ( flag == 1 )
printf("The num is 质数\n");
else
printf("The num is 非质数\n");
}
return 0;
}追问可是一执行它就停止工作了也。。。追答你这个在main里套一个while(1),就一直工作了!!!追问谢谢!
- 2楼网友:玩家
- 2021-03-12 13:18
1,不要在计算函数里执行输入输出操作,把scanf语句挪到main函数里来。
2,第2个题,if语句后面应该用大括号把相关语句括起来。delta2函数里那个if语句应该是if(d==0)
3,第3个题if判断语句应该是if(temp==0)
2,第2个题,if语句后面应该用大括号把相关语句括起来。delta2函数里那个if语句应该是if(d==0)
3,第3个题if判断语句应该是if(temp==0)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯