nodust 发表于 2017-11-5 12:28:02

求问这段代码有什么问题 感觉进入未知领域了

/*本程序为辗转相除法的运算*/

#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;

闪电猫网络 发表于 2017-11-5 12:35:32

int change(int a,int b)
{
      int temp;
      temp=a;
    a=b;
    b=temp;
      return 0;
这个并没有改变实参的值啊。

nodust 发表于 2017-11-5 12:43:04

闪电猫网络 发表于 2017-11-5 12:35
int change(int a,int b)
{
      int temp;


全局变量这里不会跟着变吗

丶忘却的年少o 发表于 2017-11-5 13:20:57

本帖最后由 丶忘却的年少o 于 2017-11-5 13:23 编辑

你指的未知领域是什么?好像除了代码有点缺陷和错误运行起来没发现什么不对。
1. if判断后面加了“;”,相当于这个语句就废了!!!!
2.change函数返回的0根本没作用,所以直接定义void类型就好了,不要返回了。
3.全局变量的d一开始就是0呀,而且你没给它赋值,那么while( d != 0 )这个循环肯定不会进去!
4.while语句后面也加了“;”所以,这句也废了!没有循环条件的判断就直接进去执行内部的操作了

nodust 发表于 2017-11-5 13:25:54

丶忘却的年少o 发表于 2017-11-5 13:20
你指的未知领域是什么?好像除了代码有点缺陷和错误运行起来没发现什么不对。
1. if判断后面加了“;”, ...

{:10_316:}好久没写c程序 出了一堆语法错误 谢谢指点

丶忘却的年少o 发表于 2017-11-5 13:30:38

nodust 发表于 2017-11-5 13:25
好久没写c程序 出了一堆语法错误 谢谢指点

客气客气

闪电猫网络 发表于 2017-11-5 14:08:05

nodust 发表于 2017-11-5 12:43
全局变量这里不会跟着变吗

不会的,传指针或者直接使用引用才能更改。
页: [1]
查看完整版本: 求问这段代码有什么问题 感觉进入未知领域了