首页 > 编程知识 正文

拼题a怎么看答案,c语言拼题a

时间:2023-05-06 17:24:08 阅读:187991 作者:1992

在C语言中,可以将主调函数放在被调函数的后面,省略函数的声明。

在C语言中,一般情况下函数的返回值是通过函数中的return语句来实现的,每调用一次return语句只能从函数中返回一个值。但在实际很多应用中,我们需要从函数中返回多个值,那我们可以用什么方法实现呢?此时我们可以用三种方法来实现。
方法一:设置全局变量
全局变量是在函数外部定义的全局变量,它不属于任何一个函数,其作用域是从变量的定义处开始,到本程序文件的结尾。在此作用域内,全局变量可为各个函数所引用。当我们需要函数返回多个值时,除了函数体中的return语句返回其中一个之外,其它的返回值我们可以通过定义全局变量来处理。因为根据全局变量的特点,在被调用函数中改变了多个全局变量和值,相当于其主调函数全局变量的值也发生了变化,也就相当于返回了多个值。
例如:利用一个函数求出正方形的周长和面积。
#include
double l=0;//定义全局变量l为正方形周长
void f(double a)//定义求面积和周长的函数
{ double s; s=aa;//求面积
l=6a;//求周长,并赋给全局变量l
return s;//仅返回面积的值
}
void main()
{ double a,area;
printf(“请输入边长:");
scanf("%f",&a);
area=f(a);//面积的值通过调用f函数返回值
printf(“面积为:%5.2lf\n”,area);
printf(“周长为:%5.2lf\n”,l);//典雅的水蜜桃为全局变量l在f函数中改变后的值
}

上面的例子即用全局变量实现了函数中返回多值的情况,这种方式易懂。但是全局变量用多了会破坏代码的安全性,结构性,这主要是全局变量在所有函数中都可以使用,从而其值的变化不确定,所以我们要慎用。

wqdds:使用数组名或指针作为函数的形参
数组名或者指针实际为地址,而数组一般都包括多个元素,指针也可以指向一组数据的着地址,把数组名或者指针作为函数形参,实际上相当于主调函数的实参与形参共用地址,所以在函数中的数组元素发生改变即是实参也随之改变。也相当于在调用函数时多个值返回给主调函数。

实例2:编写函数求一维整形数组的最大值与最小值,并把最大值与最小值返回给主调函数。
  方法:以指针方式传递该一维数组的地址,然后把数组的最大值与数组的第一个元素交换,把数组的最小值与最后一个元素交换。函数被调用完毕后,实参数组中的第一元素为数组的最大值,实参数组中最后一个元素为数组的最小值,从而实现返回数组的最大值与最小值的功能。程序参考代码如下:
  #include “stdio.h”
  #include “conio.h”
  void max_min(int *ptr,int n) /定义求数组最大值最小值的函数,传递数组指针/
  {int i,j,k;/j保存最大值所在位置,k保存最小值所在位置/
  int *temp;/用于交换位置/
  *temp=*ptr;
  for(i=0;i  {
  if(ptr<(ptr+i))/最大值与第一个元素进行交换/
  {
  k=i;
  *temp=*ptr;
  ptr=(ptr+k);
  (ptr+k)=temp ;
  }
  if((ptr+n-1)>(ptr+i))/最小值与最后一个元素进行交换/
  {
  j=i;
  temp =(ptr+n-1);
  (ptr+n-1)=(ptr+j);
  *(ptr+j)= *temp ;}
  }
  }
  /调用最大最小值函数/
  main()
  {
  int A[6],i;
  for(i=0;i<6;i++)
   scanf("%d",&A[i]);
  max_min(A,6);
  printf(“max=%d, min=%dn n”,A[0],A[5]);
  getch();
  }
  调试结果如下:
  请输入6个整形数,以空格隔开:
  5 8 9 32 -6 4
  max=32,min=-6

注意:该方法适用于多个返回值的数据类型一致的情况。当返回值数据类型不一致时,不适用该方法。

方法三:使用结构体指针作为函数的形参
  
  编写返回多个值的C语言函数,可以考虑采用结构体的方式去实现。如果返回的数个数值的数据类型不一致,可以通过定义全局变量实现有多个返回值的C语言函数,也可以考虑把要求返回的数个值定义成一个结构体,然后同样以传递结构体指针方式把结构体的指针传递给形参结构体指针,那么函数中对形参结构体的修改即是对实参结构体的修改,函数被调用后获取的实参结构体成员即为函数的多个返回值,下面以实例演示该方法的应用。
  实例3:编写一个用户自定义函数,允许用户录入学生的基本信息(包括学号、姓名、所属班级、总评成绩),并返回这些基本信息给主调函数。
 方法:把学生基本信息定义成一个结构体,在用户自定义函数中传递该结构体的指针,则自定义函数中对结构体成员的录入操作即是对实参结构体成员的录入操作,从而实现多个返回值。参考代码如下:
  #include “stdio.h”
  #include “conio.h”
  struct inf{/定义学生结构体,分别包含成员学号、姓名、班别、总评成绩/
   char xh[12];
   char name[20];
   char class[15];
   int chj;
  };
  main(void)
  {
  struct inf a1; /定义学生结构体类型变量/
  void xxxx(struct inf *ptr);
  printf(“请输入学号,姓名,班别,总评成绩,以空格隔开:n”) ;
  xxxx(&a1);/调用函数,以学生结构体类型变量地址作为实参/
  printf(“学号:%s,姓名: %s,班别:%s,总评成绩:%d”,a1.xh, a1.name,a1.class,a1.chj);
  getch();
  }
  void xxxx(struct inf *ptr)/该函数实现对结构体成员数据的录入操作/
  {
   char xh1[12],name1[20],class1[15];
   int chj1;
  scanf("%s%s%s%d",xh1,name1,class1,&chj1);
   strcpy(ptr->xh,xh1);
  strcpy(ptr->name,name1);
  strcpy(ptr->class,class1);
  ptr->chj=chj1;
   }
  调试结果如下:
  请输入学号,姓名,班别,总评成绩,以空格隔开:
  200102LiLi200185
  学号:200102,姓名: LiLi,班别:2001,总评成绩:85
  注意:当函数要求返回的多个值是相互联系的或者返回的多个值数据类型不一致时可以采用该方法。

在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为int。

若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( D )。

A.函数调用可以作为独立的语句存在
B.函数调用可以作为一个函数的实参
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参

[解析] 本题考查函数的调用。在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式: ①函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。 ②函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数max是表达式的一部分,将其值乘以5后赋给 c。故选项C)正确。 ③函数调用作为一个函数的实参,例如:m=max(a,max(b,c));其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。故选项B)正确。 函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。故选项D)错误

int f(int i) {},不是函数原型,是函数的实现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。