在C编程中,调用函数可以用一个循环返回多个值吗?
来源:百度知道 编辑:UC知道 时间:2024/06/02 01:34:52
#include<stdio.h>
#include"stdlib.h"
#define MaxStackSize 100
typedef int DataType;//定义int为DataType抽象数据类型
#include"SeqStack.h"//包括"SeqStack.h"头文件
int input(int a[]);
void main()
{
DataType b[100],j;
SeqStack myStack;//将myStack定义为SeqStack的类型,即DataType
StackInitiate(&myStack);// 初始化
if(StackPush(&myStack,input(b))==0)//压栈
{
printf("错误!\n");
return;
}
while(StackNotEmpty(myStack))//依次出栈数据元素序列
{
StackPop(&myStack,&j);
printf("%d\n",j);
}
}
int input(int a[])//此函数主要是求出转换二进制的倒序列
{int c,b,n,d,i;
printf("请输入转换的十进制数:");
scanf("%d",&c);
i=0;
while( c !=0)
{
d=c;
c=c/2;
b=d%2;
printf("%d",b);
a[i]=b;
i++;
}
printf("\n");
for(n=0;n<i;n++)//问题就是这里,可
#include"stdlib.h"
#define MaxStackSize 100
typedef int DataType;//定义int为DataType抽象数据类型
#include"SeqStack.h"//包括"SeqStack.h"头文件
int input(int a[]);
void main()
{
DataType b[100],j;
SeqStack myStack;//将myStack定义为SeqStack的类型,即DataType
StackInitiate(&myStack);// 初始化
if(StackPush(&myStack,input(b))==0)//压栈
{
printf("错误!\n");
return;
}
while(StackNotEmpty(myStack))//依次出栈数据元素序列
{
StackPop(&myStack,&j);
printf("%d\n",j);
}
}
int input(int a[])//此函数主要是求出转换二进制的倒序列
{int c,b,n,d,i;
printf("请输入转换的十进制数:");
scanf("%d",&c);
i=0;
while( c !=0)
{
d=c;
c=c/2;
b=d%2;
printf("%d",b);
a[i]=b;
i++;
}
printf("\n");
for(n=0;n<i;n++)//问题就是这里,可
想返回多个值的话
可以考虑用指针阿
int* fun(){
int *a=new int[10];
xxx
xxx
return a;
}
即返回一个指向int型数组的指针
用完记得delete
当然是可以的, 想想看运行的过程是什么样:
n=0, 并且确认n<i,然后进入运行 return a[i] 然后呢,return的结果当然就是退出这个函数, 返回值就是a[i]
这跟你想像的结果不一样么?因为你没有真的在意语句的含义, 你按自己的意愿来琢磨这个语句, 而不是按照语句的意义来适当的安排它
不论是什么函数 都只能返回一个值 就是一个return有效
要想返回多值 就得用指针来完成
想让函数有多个返回值就得用指针,用一个return不可能返回多个……