(4) in main: x=2,y=5
将形参a,b对应改为x,y 结果:
(1) in main: x=2,y=5
(2) in swap: x=2,y=5
(3) in swap: x=5,y=2
(4) in main: x=2,y=5
结论:无论实参、形参是否同名,交换的只是子函数(swap)中两个变量的值。主函数中的x,y的值没有变。
2.若输入2、3,求以下程序的运行结果,分析函数嵌套调用的执行过程。
#include <stdio.h>
long sum(int a,int b);
long factorial(int n);
main( )
{
int n1,n2;
long a;
scanf("%d,%d",&n1,&n2);
a=sum(n1,n2);
printf("a=%ld",a);
}
long sum(int a,int b)
{
long c1,c2;
c1=factorial(a);
c2=factorial(b);
return(c1+c2);
}
long factorial(int n)
{
long rtn=1;
int i;
for(i=1;i<=n;i++)
rtn*=i;
return(rtn);
}
(结果为:a=8。程序功能:求n1!+n2! 即:2!+3!)
3.运行下面程序,写出运行结果。
#include "stdio.h"
main( )
{
int i=5;
void palin(int n);
printf("please input 5 characters: ");
palin(i);
printf("\n");
}
void palin(int n)
{
char next;
if(n<=1)
{
next=getchar( );
printf("\n\0: ");