欧几里得算法难以理解。
在课上闲着无聊,翻书的时候看到用欧几里得算法求最大公约数,然后就想到为什么不用暴力穷举?
用了指针,函数,for循环,if,break。
指针其实并没有起多大作用,但因为我在学指针,所以刚好用了。
在写代码的时候,初版有很多问题。

1
2
int i;
for(int i=(a>b)?a:b;a>=1;i--)

i被int了两次!

1
2
#include<stdio.h>
int transii(int a,int b);

没有提前申明函数

1
2
 for(i=(a>b)?a:b;i>=1;i=i-1)
 \\(a>b)?a:b应该改成如下(a<b)?a:b

冗余问题啊。

接下来出示成品

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<stdio.h>

int transii(int a,int b);

int main(void){

    int a=0,b=0,c=0;

    int*pa=&a,*pb=&b;

    printf("输入两个整数:");

    scanf("%d %d",pa,pb);

    c= transii (a,b);

    printf("最大公约数是%d\n",c);

    return 0;

}

int transii(int a,int b){

    int i;

    for(i=(a<b)?a:b;i>=1;i=i-1){

        if(a%i==0&&b%i==0){

            break;

        }

    }

    return i;

}

听说c++可以用一行代码就解决最大公约数问题。
c++毁了c语言