【项目任务】
实现两个数字的交换。通过这样一个例子,学习函数的调用与参数传递的知识。
【设计思路】
编写一个交换两个数字的函数供主函数调用,再回到主函数,查看两个数这是否已经交换。
【程序代码】
#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)时,并没有使x和y发生交换。
2.从功能上讲,swap( )函数是正确的,它可以实现两个变量的数据交换,但却没有真正达到交换数据的目的。其原因在于,x,y变量作为参数传递给函数swap( )时,只是将x,y的值进行复制,赋值给了f1和f2,然后将f1和f2进行交换。完成后,返回主函数(返回时,f1和f2已经不存在了),主函数里的x、y还是原来的数值,没有实现交换。
【项目任务】
将输入的一个字符串按照逆序输出。
【设计思路】
编写一个函数,从主函数获得字符串名作为参数,将该字符串逆序输出。
【程序代码】
#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.字符串数组名字可以作为参数传递给函数。
2.string.h文件中有许多常用的字符串处理函数,如gets(字符串),puts(字符串),strcat(字符数组1,字符数组2),strcpy(字符数组1,字符数组2),strcmp(字符串1,字符串2),strlen(字符串数组)等。