C语言中return语句怎样返回两个或多个值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中return语句怎样返回两个或多个值相关的知识,希望对你有一定的参考价值。
请高手看看我的程序
输入两个数,输出最大值和 最大值+100。
主函数调用max函数,我想知道max函数怎样返回两个值给主函数,
我这个程序不知有什么错误,运行时我输入123,45 却输出得到Max=123,3
我这程序应怎样改?
#include "stdio.h"
void main()
int max(int x,int y,int z,int h);
int a,b,c,d;
scanf("%d,%d",&a,&b);
c=max(a,b,c,d);
printf("Max is %d,%d",c,d);
int max(int x,int y,int z,int h)
z=x>y? x:y;
return z;
h=z+100;
return h;
不好意思,程序我漏了一句,在第六句c=max(a,b,c,d);后面还有一句d=max(a,b,c,d);
return语句不能直接返回多个值。如果想通过函数内部返回多个值的话,可是使用以下代码:
#include <stdio.h>
//定义一个s
typedef struct _aint a;int b;
A,*PA;//函数返回结构体变量,它里面就可以包含多个值
PA func()PA a = (A*)malloc(sizeof(A));a->a = 2;
a->b = 3;return a;
int main()
PA test = func();
printf("%d %d\\n", test->a, test->b);
delete test;return 0;
扩展资料
#include <stdio.h>
void min_max(int *ptr,int n)
int *temp;
for(int i = 0; i < 5; i++)
if(*(ptr) > *(ptr+i))
*temp = *(ptr);
*(ptr) = *(ptr+i);
*(ptr+i) = *temp;
if(*(ptr + n-1) < *(ptr + i) )
*temp = *(ptr+n-1);
*(ptr+n-1) = *(ptr+i);
*(ptr+i) = *temp;
int main()
int a[5];
for(int i = 0; i < 5 ; i++)
scanf("%d",&a[i]);
min_max(a,5);
printf("%d %d",a[0], a[4]);
return 0;
参考资料:百度百科 return (C语言语句)
参考技术A 哈哈,return只能返回一个值的,不可能返回两个值!如果要返回多个值,需要通过参数传递的。
你的程序这样修改就对了:
#include <stdio.h>
int max(int x,int y)
return x>y? x:y;
int main()
int a,b,c,d;
scanf("%d,%d",&a,&b);
c=max(a,b);
d=c+100;
printf("Max is %d,%d",c,d);
return 0;
也可以这样修改:
#include <stdio.h>
void max(int x,int y, int *max,int *m100)
int m;
m=x>y? x:y;
*max=m;
*max100=m+100;
int main()
int a,b,c,d;
scanf("%d,%d",&a,&b);
max(a,b,&c,&d);
printf("Max is %d,%d",c,d);
return 0;
它不通过return返回,而是通过参数max和max100返回两个值!
它用到指针,参数采用传递地址的方式。
供参考,你应该会明白的。本回答被提问者采纳 参考技术B
return语句不能直接返回多个值。如果想通过函数内部返回多个值的话,一般有二种方法:
1、返回结构体指针
#include <stdio.h>//定义一个s
typedef struct _a
int a;
int b;
A,*PA;
//函数返回结构体变量,它里面就可以包含多个值
PA func()
PA a = (A*)malloc(sizeof(A));
a->a = 2;
a->b = 3;
return a;
int main()
PA test = func();
printf("%d %d\\n", test->a, test->b);
delete test;
return 0;
2、以类型指针方式传递函数参数
#include <stdio.h>void func(int* a, int* b)
*a = 2;
*b = 3;
int main()
int a = 0;
int b = 0;
func(&a, &b);
printf("%d %d\\n", a, b);
return 0;
参考技术C /*我把楼主的稍微改了一下,一个函数里面只能有一个return语句,因为程序执行到这个return语句的时候就已经返回的,他后面的语句都不会执行。所以搂主你的max函数中虽然有两个return,但是后面一个根本就不会执行。要想让一个函数返回多个值,可以用传地址来实现,下面是这个程序*/
#include "stdio.h"
int max(int x,int y,int* z);//第三个参数传的是地址用来保存最大值加100
void main()
int a,b;
int maxLi = 0;//保存最大值加100
int maxNum= 0;//保存最大值
scanf("%d,%d",&a,&b);
maxNum=max(a,b,&maxLi);
/*函数的返回值本身就是最大值,所以可以用一个整形变量来存储他,而由于第三个参数传的是maxLi的地值,用来存放最大值加100,他与函数里面的改变是同步的,所以可以保存而不丢失,这样两个数值都得到了*/
printf("Max is %d,%d",maxNum,maxLi);
int max(int x,int y,int* z)
int tmp = 0;
tmp=x>y? x:y;
*z=tmp+100; //将tmp+100存到z里面地值(就是maxLi的地质)所表示的内存
return tmp;
参考技术D 如果不是传回地址的方法,return 一次只能传回一个值,
但你若一定想传回不同值在不同的调用,可以加一if语句。
用地址当参数传入函数
int max(int x,int y,int *z,int *h)
*z=x>y? x:y;
*h=*z+100;
调用时这样就行.
max(a,b,&c,&d);
int max(int x,int y,int z,int h)
if(z<x&&z<y)
z=x>y? x:y;
return z;
else
h=z+100;
return h;
这样当你第一次调用函数后z值为两面数中的大者,第二次调用时条件if(z<x&&z<y)不成立,就调用
else
h=z+100;
return h;
传回h
在c语言中,return的作用和用法
一般return语句用于函数返回值,当外界调用该函数需要知道函数执行情况的时候,就需要用返回值来告诉调用者。而当调用者不需要知道执行情况,只需要去执行该函数的时候,那就不需要返回值。
return的作用1:表示返回,这个程序可以结束了,可以不带参数。
如果你的成员运行到这里,你就不往后运行了,可以加一个return语句,就不会再执行了。
作用2:返回指定类型的值,在定义函数的时候不是有
int
af();int
这里是返回值。return
后面接的就是这个返回值,
这个函数执行后就可以给别的变量赋值了,他的值就是return
后面的值。 参考技术A 一般return语句用于函数返回值,当外界调用该函数需要知道函数执行情况的时候,就需要用返回值来告诉调用者。
而当调用者不需要知道执行情况,只需要去执行该函数的时候,那就不需要返回值。
return的作用1:表示返回,这个程序可以结束了,可以不带参数。
如果你的成员运行到这里,你就不往后运行了,可以加一个return语句,就不会再执行了。
作用2:返回指定类型的值,在定义函数的时候不是有
int
af();int
这里是返回值。return
后面接的就是这个返回值,
这个函数执行后就可以给别的变量赋值了,他的值就是return
后面的值。 参考技术B 如果函数类型是void的话,那么return相当与结束该函数,并不返回值。
不管有没有返回值,遇到return该函数就结束了。
例如我们经常用到
if(flag==0)
return
1;
else
return
0;
其实else完全可以省略的,只是这么看程序更清晰一些。 参考技术C 如果函数类型是void的话,那么return相当与结束该函数,并不返回值。
不管有没有返回值,遇到return该函数就结束了。
例如我们经常用到
if(flag==0)
return
1;
else
return
0;
其实else完全可以省略的,只是这么看程序更清晰一些。
以上是关于C语言中return语句怎样返回两个或多个值的主要内容,如果未能解决你的问题,请参考以下文章