您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第七章 函数程序设计 > 【7.2 函数的调用与参数传递案例】

7.2 函数的调用与参数传递案例

 

7.2  函数的调用与参数传递案例

案例7.2  交换两变量的值

【项目任务】

实现两个数字的交换。通过这样一个例子,学习函数的调用与参数传递的知识。

【设计思路】

编写一个交换两个数字的函数供主函数调用,再回到主函数,查看两个数这是否已经交换。

【程序代码】

#include <stdio.h>

void swap(float f1,float f2)

{

    float temp;

 

    temp=f1;

    f1=f2;

    f2=temp;

}

main()

{

    float x,y;

 

    printf("Please enter x and y:\n");

    scanf("%f%f",&x,&y);

    printf("x=%f y=%f\n",x,y);

    swap(x,y);

    printf("Swap:");

    printf("x=%f y=%f\n",x,y);

}

【运行结果】

Please enter x and y:

5.6 7.8

x=5.600000  y=7.800000

Swap:x=5.600000  y=7.800000

【知识拓展】

1.从运行结果可以看出,在调用函数swap(x,y)时,并没有使xy发生交换。

2.从功能上讲,swap( )函数是正确的,它可以实现两个变量的数据交换,但却没有真正达到交换数据的目的。其原因在于,xy变量作为参数传递给函数swap( )时,只是将xy的值进行复制,赋值给了f1f2,然后将f1f2进行交换。完成后,返回主函数(返回时,f1f2已经不存在了),主函数里的xy还是原来的数值,没有实现交换。

案例7.3  逆序输出一个字符串

【项目任务】

将输入的一个字符串按照逆序输出。

【设计思路】

编写一个函数,从主函数获得字符串名作为参数,将该字符串逆序输出。

【程序代码】

#include <string.h>

#include <stdio.h>

void fun(char string[])

{

    int i,n;

   

    n=strlen(string);

    for(i=n-1;i>=0;i--)

        putchar(string[i]);

}  

main()

{

    char string[10];

 

    gets(string);

    fun(string);

}

【运行结果】

Ha ha

ah aH

【知识拓展】

1.字符串数组名字可以作为参数传递给函数。

2string.h文件中有许多常用的字符串处理函数,如gets(字符串)puts(字符串)strcat(符数组1,字符数组2)strcpy(字符数组1,字符数组2)strcmp(字符串1,字符串2)strlen(字符串数组)等。