函数初步 求助
本帖最后由 minamikotori 于 2020-12-5 12:12 编辑#include <stdio.h>
int max(int a,int b);
int min(int a,int b);
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d\t%d",max(a,b),min(a,b));
}
int max(int a,int b){
int ret,t;
while(b){
t = a % b;
a = b;
b = t;
}
ret = a;
return ret;
}
int min(int a,int b){
int ret;
ret = a * b / max(a,b);
return ret;
}
第二小问该如何实现呢 不用怎么改
把你定义在max和min里的ret放到函数外面,然后把函数返回值去掉,
也就是直接对ret进行修改,在main里打印出来就好了 如果你写的函数对的话,这么改就没问题
#include <stdio.h>
void max1(int a, int b);
void min1(int a, int b);
int ret1, ret2;
int main()
{
int a, b;
scanf("%d %d", &a, &b);
max1(a, b);
min1(a, b);
printf("%d\t%d", ret1, ret2);
}
void max1(int a, int b)
{
intt;
while (b) {
t = a % b;
a = b;
b = t;
}
ret1 = a;
}
void min1(int a, int b)
{
ret2 = a * b / max(a, b);
}
昨非 发表于 2020-12-5 13:12
如果你写的函数对的话,这么改就没问题
编译失败了... minamikotori 发表于 2020-12-5 13:19
编译失败了...
不会啊,我这里好好的 昨非 发表于 2020-12-5 13:12
如果你写的函数对的话,这么改就没问题
30 9 implicit declaration of function 'max' [-Wimplicit-function-declaration]
In function `min1':
30 undefined reference to `max'
D:\c\collect2.exe ld returned 1 exit status
minamikotori 发表于 2020-12-5 13:21
30 9 implicit declaration of function 'max' [-Wimplicit-function-declaration]
...
这样,你把max1和min1改成max和min再试试
我刚刚看它和宏定义重了就改了名字
记得上面改了下面也要改 昨非 发表于 2020-12-5 13:23
这样,你把max1和min1改成max和min再试试
我刚刚看它和宏定义重了就改了名字
记得上面改了下面也要改
30 9 D:\c\test9.c void value not ignored as it ought to be
还有一个错误 minamikotori 发表于 2020-12-5 13:26
30 9 D:\c\test9.c void value not ignored as it ought to be
还有一个错误
你用的啥编译器?
昨非 发表于 2020-12-5 13:28
你用的啥编译器?
gcc 4.9.2ISOc99 #include <stdio.h>
void max(int a, int b);
void min(int a, int b);
int ret1, ret2;
int main()
{
int a, b;
scanf("%d %d", &a, &b);
max(a, b);
min(a, b);
printf("%d\t%d", ret1, ret2);
}
void max(int a, int b)
{
intt;
while (b) {
t = a % b;
a = b;
b = t;
}
ret1 = a;
}
void min(int a, int b)
{
ret2 = a * b / max(a, b);
}
这样的不行 #include <stdio.h>
void max(int a,int b);
void min(int a,int b);
int ret1,ret2;
int main()
{
int a,b;
scanf("%d %d",&a,&b);
max(a,b);
min(a,b);
printf("%d\t%d",ret1,ret2);
}
void max(int a,int b){
int t;
while(b){
t = a % b;
a = b;
b = t;
}
ret1 = a;
}
void min(int a,int b){
ret2 = a * b / ret1;
}
这样就可以了 是为什么呢 minamikotori 发表于 2020-12-5 13:32
因为max没有返回值了
它的返回值被全局变量替换了
我刚发现
min里改成
ret2 = a * b / ret1;
就好了 因为原来ret在max和min函数中是局部变量,所以需要返回值return来相互传递
现在改成全局变量,(各个函数)大家都能用,你修改你的,我修改我的就好了 解决了记得设置最佳答案 不会 我只是来领鱼币的 哈哈哈 谢谢你 1
页:
[1]