函数的参数及传递方式.docx
《函数的参数及传递方式.docx》由会员分享,可在线阅读,更多相关《函数的参数及传递方式.docx(23页珍藏版)》请在冰豆网上搜索。
![函数的参数及传递方式.docx](https://file1.bdocx.com/fileroot1/2023-2/9/ffd57c72-d266-4b51-b9b5-d44cbc35c11d/ffd57c72-d266-4b51-b9b5-d44cbc35c11d1.gif)
函数的参数及传递方式
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
求100-999之间的水仙花数
说明:
水仙花数是指一个三位数的各位数字的立方和是这个数本身。
例如:
153=1^3+5^3+3^3)。
-------------------------------------------------------*/
#include
intfun(intn)
{inti,j,k,m;
m=n;
/***********SPACE***********/
【?
】;
for(i=1;i<4;i++)
{
/***********SPACE***********/
【?
】;
m=(m-j)/10;
k=k+j*j*j;
}
if(k==n)
/***********SPACE***********/
【?
】;
else
return(0);}
main()
{
inti;
for(i=100;i<1000;i++)
/***********SPACE***********/
if(【?
】==1)
printf("%disok!
\n",i);
}
答案:
======(答案1)======
k=0
======(答案2)======
j=m%10
======(答案3)======
return
(1)
======(答案4)======
fun(i)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
统计一个字符串中的字母、数字、空格和其它字符的个数。
-------------------------------------------------------*/
#include
voidfun(chars[],intb[])
{
inti;
for(i=0;s[i]!
='\0';i++)
if('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')
b[0]++;
/***********SPACE***********/
elseif(【?
】)
b[1]++;
/***********SPACE***********/
elseif(【?
】)
b[2]++;
else
b[3]++;
}
main()
{
chars1[80];inta[4]={0};
intk;
/***********SPACE***********/
【?
】;
gets(s1);
/***********SPACE***********/
【?
】;
puts(s1);
for(k=0;k<4;k++)
printf("%4d",a[k]);
}
答案:
======(答案1)======
'0'<=s[i]★&&★s[i]<='9'
======(答案2)======
s[i]★==★''
======(答案3)======
voidfun(chars[],intb[])
======(答案4)======
fun(s1,a)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值
为整数),然后输出主对角线元素的平方和,并在
fun()函数中输出。
要求:
用for循环实现
------------------------------------------------*/
#include
void
main()
{
inti,j,s,a[3][3];;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
s=fun(a);
printf("Sum=%d\n",s);
}
intfun(inta[3][3])
{
/**********Program**********/
/**********End**********/
}
答案:
----------------------
intsum;
inti;
sum=0;
for(i=0;i<3;i++)
sum=sum+a[i][i]*a[i][i];
returnsum;
----------------------
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
用冒泡法对数组a进行由小到大的排序。
-------------------------------------------------------*/
#include
voidfun(inta[],intn)
{
inti,j,t;
/***********SPACE***********/
for(j=0;【?
】;j++)
/***********SPACE***********/
for(i=0;【?
】;i++)
/***********SPACE***********/
if(【?
】)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
main()
{
inti,a[10]={3,7,5,1,2,8,6,4,10,9};
/***********SPACE***********/
【?
】;
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
答案:
======(答案1)======
j<=n-1
======(答案2)======
i======(答案3)======
a[i]>a[★i★+★1★]
======(答案4)======
fun(a,10)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
数组名作为函数参数,求平均成绩。
-------------------------------------------------------*/
#include
floataver(floata[])/*定义求平均值函数,形参为一浮点型数组名*/
{
inti;
floatav,s=a[0];
for(i=1;i<5;i++)
/***********SPACE***********/
s+=【?
】[i];
av=s/5;
/***********SPACE***********/
return【?
】;
}
voidmain()
{
floatsco[5],av;
inti;
printf("\ninput5scores:
\n");
for(i=0;i<5;i++)
/***********SPACE***********/
scanf("%f",【?
】);
/***********SPACE***********/
av=aver(【?
】);
printf("averagescoreis%5.2f\n",av);
}
答案:
======(答案1)======
a
======(答案2)======
av
======(答案3)======
&sco[i]
======(答案4)======
sco
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun对主程序中用户输入的具有10
个数据的数组a按由大到小排序,并在主程序中输出
排序结果。
要求:
用for循环实现
------------------------------------------------*/
#include
void
intfun(intarray[],intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
inta[10],i;
printf("请输入数组a中的十个数:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
fun(a,10);
printf("由大到小的排序结果是:
\n");
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
}
答案:
----------------------
intk,j,t;
for(k=0;kfor(j=k+1;jif(array[k]{
t=array[k];
array[k]=array[j];
array[j]=t;
}
----------------------
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun将一个数组中的值按逆序存放,并在
main()函数中输出。
例如:
原来存顺序为8,6,5,4,1。
要求改为:
1,4,5,6,8。
要求:
用for循环实现
------------------------------------------------*/
#include
#defineN5
void
voidfun(intarr[],intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
inta[N]={8,6,5,4,1},i;
for(i=0;iprintf("%4d",a[i]);
printf("\n");
fun(a,N);
for(i=0;iprintf("%4d",a[i]);
}
答案:
----------------------
inti,t;
for(i=0;i
{t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
}
----------------------
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
有一个一维数组score,内放10个学生的成绩,用一
个函数来求平均成绩。
例如:
如果10个学生的成绩分别为92,87,68,56,92,84,
70,65,90,60则平均成绩为:
76.400000
要求:
用for循环实现
------------------------------------------------*/
#include
void
floataverage(floatarray[10])
{
/**********Program**********/
/**********End**********/
}
main()
{
floatscore[]={92,87,68,56,92,84,70,65,90,60};
printf("averagescoreis%f\n",average(score));
}
答案:
----------------------
inti;
floataver,sum=array[0];
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
returnaver;
----------------------
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
以下search函数的功能是利用顺序查找法从数组a的10个元
素中对关键字m进行查找。
顺序查找法的思路是:
从第一个
元素开始,从前向后依次与关键字比较,直到找到此元素
或查找到数组尾部时结束。
若找到,返回此元素的下标;
若仍未找到,则返回值-1。
请填空。
-------------------------------------------------------*/
#include
intsearch(inta[10],intm)
{inti;
for(i=0;i<=9;i++)
/***********SPACE***********/
if(【?
】)returni;
return-1;
}
main()
{inta[10],m,no;
...
/***********SPACE***********/
no=search(【?
】);
/***********SPACE***********/
if(【?
】)
printf("\nOKFOUND!
%d",no+1);
else
printf("\nSorryNotFound!
%d");
}
答案:
======(答案1)======
a[i]==m
======(答案2)======
a,m
======(答案3)======
no>=0
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
以下程序中swap函数是交换数组中两个元素的值,main函
数中调用该函数。
请完成程序。
-------------------------------------------------------*/
voidswap(inta[2])
{intt;
t=a[0];
/***********SPACE***********/
【?
】;
/***********SPACE***********/
【?
】;
}
main()
{intm[]={1,2};
printf(″m[0]=%d,m[1]=%d″,m[0],m[1]);
/***********SPACE***********/
【?
】;
printf(″m[0]=%d,m[1]=%d″,m[0],m[1]);
}
答案:
======(答案1)======
a[0]=a[1]
======(答案2)======
a[1]=t
======(答案3)======
swap(m)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
以下程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,
并输出结果。
请填空。
-------------------------------------------------------*/
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
/***********SPACE***********/
f=【?
】;
}
returnm;
}
main()
{
/***********SPACE***********/
printf("m=%d\n",【?
】);
}
答案:
======(答案1)======
-f
======(答案2)======
fun(10)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
下面的程序是多次求两个数之积,请填空。
-------------------------------------------------------*/
main()
{intx,y,z;
scanf("%d%d",&x,&y);
while(x!
=0)
{z=mul(x,y);
printf("%d*%d=%d",x,y,z);
/***********SPACE***********/
【?
】("%d%d",&x,&y);
}
}
intmul(inta,intb)
{
/***********SPACE***********/
【?
】;
c=a*b;
/***********SPACE***********/
【?
】;
}
答案:
======(答案1)======
scanf
======(答案2)======
intc
======(答案3)======
returnc
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
下面rotate函数的功能是:
将n行n列的矩阵进行转置,
即把矩阵的行列的值互换,请填空。
-------------------------------------------------------*/
#defineN4
voidrotate(inta[][N])
{inti,j,t;
for(i=0;i/***********SPACE***********/
for(j=0;【?
】;j++)
{t=a[i][j];
/***********SPACE***********/
【?
】;
a[j][i]=t;
}
}
答案:
======(答案1)======
j<=i
======(答案2)======
a[i][j]=a[j][i]
函数调用时的实参和形参之间的数据是单向的【1】传递.
答案:
======(答案1)======
值
函数调用语句func((e1,e2),(e3,e4,e5))中含有【1】个实参.
答案:
======(答案1)======
2
对fun函数的正确调用为:
fun(a+b,fun(a+b,(a+b)));则fun函数有【1】个形参.
答案:
======(答案1)======
2
下面add函数的功能是求两个参数的和,并将和值返回调用函数.
函数中错误的部分是【1】;改正后为【2】.
voidadd(floata,floatb)
{floatc;
c=a+b;
returnc;
}
答案:
======(答案1)======
voidadd(floata,floatb)
======(答案2)======
floatadd(floata,floatb)
函数调用语句func((f1,f2),(f2,f3,f4),f5)中含有【1】个参数.
答案:
======(答案1)======
3
C语言程序中,当调用函数时().
A)实参和虚参各占一个独立的存储单元
B)实参和虚参可以共用存储单元
C)可以由用户指定是否共用存储单元
D)计算机系统自动确定是否共用存储单元
答案:
A
数组名作为实参数传递给函数时,数组名被处理为().
A)该数组的长度
B)该数组的元素个数
C)该数组的首地址
D)该数组中各元素的值
答案:
C
以下函数调用语句中实参的个数是().
exce((v1,v2),(v3,v4,v5),v6);
A)3
B)4
C)5
D)6
答案:
A
以下函数调用语句中实参的个数是().
func((e1,e2),(e3,e4,e5));
A)2
B)3
C)5
D)语法错误
答案:
A
有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是().
A)3
B)4
C)5
D)有语法错
答案:
A
执行下面程序后,输出结果是().
main()
{inta=45,b=27,c=0;
c=max(a,b);
printf("%d\n",c);
}
intmax(x,y)
intx,y;
{intz;
if(x>y)z=x;
elsez=y;
return(z);
}
A)45
B)27
C)18
D)72
答案:
A
以下程序的输出结果为().
main()
{inta=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
intfunc(intx,inty)
{
return(x+y);
}
A)15
B)13
C)9
D)函数调用出错
答案:
B
求平方根函数的函数名为().
A)cos
B)abs
C)pow
D)sqrt
答案:
D
函数的形式参数隐含的存储类型说明是().
A)extern
B)static
C)register
D)auto
答案:
D
若使用一维数组名作函数实参,则以下正确的说法是().
A)必须在主调函