没有合适的资源?快使用搜索试试~ 我知道了~
实验 10 函数理解函数和局部变量的概念
需积分: 0 0 下载量 198 浏览量
2023-07-28
00:58:39
上传
评论
收藏 761KB PDF 举报
温馨提示
试读
13页
实验 10 函数 一、实验目的 (1) 掌握定义函数的方法; (2) 掌握函数实参与形参的对应关系以及“值传递”、“地址传递”的方式; (3) 掌握函数的嵌套调用和递归调用的方法; (4) 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。 二、实验内容和步骤 I.基础部分:理解函数和局部变量的概念 (1)给定程序 c10-1-1.c 的功能是:交换变量 m 和 n 的值。运行调试 c10-1-1.c,观察变量 m 和 n 的值是否交换。 /* c10-1-1.c */ #include<stdio.h> int main() { int m,n,t; printf("please input m and n:"); scanf("%d%d",&m,&n); t=m;m=n;n=t; printf("m=%d,n=%d\n",m,n); return 0; } (2)将 c10-1-1.c 中的 m 和 n 交换的功能通过函数实现,程序另存为 c10-1-2.c。 /* c10-1-2.c */ #include<stdio.h> void swap(int m,int n)
资源推荐
资源详情
资源评论
实验 10 函数
一、实验目的
(1) 掌握定义函数的方法;
(2) 掌握函数实参与形参的对应关系以及“值传递”、“地址传递”的方式;
(3) 掌握函数的嵌套调用和递归调用的方法;
(4) 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
二、实验内容和步骤
I.基础部分:理解函数和局部变量的概念
(1)给定程序 c10-1-1.c 的功能是:交换变量 m 和 n 的值。运行调试 c10-1-1.c,观察变量 m
和 n 的值是否交换。
/* c10-1-1.c */
#include<stdio.h>
int main()
{
int m,n,t;
printf("please input m and n:");
scanf("%d%d",&m,&n);
t=m;m=n;n=t;
printf("m=%d,n=%d",m,n);
return 0;
}
(2)将 c10-1-1.c 中的 m 和 n 交换的功能通过函数实现,程序另存为 c10-1-2.c。
/* c10-1-2.c */
#include<stdio.h>
void swap(int m,int n)
{
int t;
t=m;m=n;n=t;
printf("function swap:");
printf("m=%d,n=%d",m,n);
}
int main()
{
int m,n;
printf("please input m and n:");
scanf("%d%d",&m,&n);
swap(m,n); //调用函数 swap()
printf("function main:\n");
printf("m=%d,n=%d\n",m,n);
return 0;
}
程序的运行结果如图 10-1 所示。
图 10-1 程序 c10-1-2.c 的运行结果
分析并回答问题:
①函数 main()和 swap()中都有变量 m,这 2 个 m 是同一个变量吗?同理分析变量 n。
②为什么 swap()函数中变量 m 和 n 的值交换了,而 main()函数中变量 m 和 n 的值没有交换?
(3)修改程序 c10-1-2.c,另存为程序 c10-1-3.c。
/* c10-1-3.c */
#include<stdio.h>
void swap(int *m,int *n)
{
int t;
t=*m;*m=*n;*n=t; /*数据交换*/
printf("function swap:\n");
printf("m=%d,n=%d\n",m,n);
}
int main()
{
int m,n;
printf("please input m and n:");
scanf("%d%d",&m,&n);
swap(&m,&n); //调用函数 swap()
printf("function main:\n");
printf("m=%d,n=%d\n",m,n);
return 0;
}
程序的运行结果如图 10-2 所示。
图 10-2 程序 c10-1-3.c 的运行结果
分析下列问题:
① 为什么函数 swap()中,变量 m、n 的值为 1703724、1703720?
② 为什么 main()函数中,变量 m、n 的值实现了交换?
(4) 修改程序 c10-1-3.c,将语句:
t=*m;*m=*n;*n=t;
改为:
t=m;m=n;n=t;
程序另存为 c10-1-4.c。还能实现数据交换吗?为什么?
/* c10-1-4.c */
#include<stdio.h>
void swap(int *m,int *n)
{
int t;
t=m;m=n;n=t; /*****/
printf("function swap:\n");
printf("m=%d,n=%d\n",m,n);
}
int main()
{
int m,n;
printf("please input m and n:");
scanf("%d%d",&m,&n);
swap(&m,&n); //调用函数 swap()
printf("function main:\n");
printf("m=%d,n=%d\n",m,n);
return 0;
}
(5)将程序改为通过全局变量实现,程序另存为 c10-1-5.c。这个程序可以实现变量 m、n 值的
交换吗?为什么?
/* c10-1-5.c */
#include<stdio.h>
int m,n; //全局变量
void swap()
{
int t;
剩余12页未读,继续阅读
资源评论
橙雨敲代码ing
- 粉丝: 32
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功