求问这段代码有什么问题 感觉进入未知领域了
/*本程序为辗转相除法的运算*/#include <stdio.h>
extern int a,b,c,d;
int main()
{
int change(int a,int b);
scanf("%d %d",&a,&b);
if (a<b);
{
change(a,b);
}
while (d!=0);
{
c=a/b;
d=a-b*c;
a=b;
b=d;
}
printf("公约数为%d",b);
}
int change(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
return 0; int change(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
return 0;
这个并没有改变实参的值啊。 闪电猫网络 发表于 2017-11-5 12:35
int change(int a,int b)
{
int temp;
全局变量这里不会跟着变吗 本帖最后由 丶忘却的年少o 于 2017-11-5 13:23 编辑
你指的未知领域是什么?好像除了代码有点缺陷和错误运行起来没发现什么不对。
1. if判断后面加了“;”,相当于这个语句就废了!!!!
2.change函数返回的0根本没作用,所以直接定义void类型就好了,不要返回了。
3.全局变量的d一开始就是0呀,而且你没给它赋值,那么while( d != 0 )这个循环肯定不会进去!
4.while语句后面也加了“;”所以,这句也废了!没有循环条件的判断就直接进去执行内部的操作了 丶忘却的年少o 发表于 2017-11-5 13:20
你指的未知领域是什么?好像除了代码有点缺陷和错误运行起来没发现什么不对。
1. if判断后面加了“;”, ...
{:10_316:}好久没写c程序 出了一堆语法错误 谢谢指点 nodust 发表于 2017-11-5 13:25
好久没写c程序 出了一堆语法错误 谢谢指点
客气客气 nodust 发表于 2017-11-5 12:43
全局变量这里不会跟着变吗
不会的,传指针或者直接使用引用才能更改。
页:
[1]