实验7 函 数
姓名:
专业: 计算机科学与技术 同组人:
无
学班
号级
: 1107082106 : 物联网
实验日期: 2011-12-05
【实验目的与要求】
? ? ? ?
掌握函数声明、定义和使用的方法; 掌握函数递归调用的方法;
掌握全局变量、局部变量、静态局部变量的概念和使用方法; 掌握定义头文件的方法,学会建立和调试多文件程序。
【实验内容与步骤】
1. 程序改错题
(1) 输入并运行下面的程序,查看编译时的出错信息,分析出错的原因,然后修改这个程序使其能够正常运行。程序以文件名sy7_1.c存盘。
#include \void main() {
getFloat(9.9); }
float getFloat(float m) {
printf(\ retutn m; }
请给出正确的程序: #include \void main() {
float getFloat(float m); getFloat(9.9); }
float getFloat(float m) {
printf(\ return m; }
//没有输出语句怎么输出?
请给出程序运行测试结果: //没有输出语句怎么输出?
1
(2)下列程序的功能为:求三角形面积,请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy7_2.c存盘。
#include \ #include \
area(float,float,float); void main() {
float a,b,c;
printf(\请输入三角形的三个边长值:\\n\ scanf(\ if(a+b>c&&a+c>b&&b+c>a) printf(\ }
area(float a,float b,float c) {
float s,area_s; s=(a+b+c)/2.0;
area_s=sqrt(s*(s-a)*(s-b)*(s-c)); return(area_s); }
请给出正确的程序: #include \ #include \
float area(float,float,float); void main() {
float a,b,c;
printf(\请输入三角形的三个边长值:\\n\ scanf(\ if(a+b>c&&a+c>b&&b+c>a) printf(\ }
float area(float a,float b,float c) {
float s,area_s; s=(a+b+c)/2.0;
area_s=sqrt(s*(s-a)*(s-b)*(s-c)); return(area_s); }
请给出程序运行测试结果:
2. 程序填空
(1)下列程序的功能为:输出如下图形, 请填写适当的符号或语句,使程序实现其
2
功能,程序以文件名sy7_3.c存盘。
#include \
void print(int i) //根据传入参数i,输出一行由2*i-1个数字i组成的字符 {
int j,k;
for(j=1;j<=30-i;j++) printf(\ //输出空格
for(k=1;k<= ;k++) //控制输出字符个数 printf( ); printf(\}
void main() {
int i;
for(i=1;i<=7;i++) ; //调用函数print(i) for(i=6;i>=1;i--) ; //调用函数print(i) }
请给出正确的程序: #include \
void print(int i) //根据传入参数i,输出一行由2*i-1个数字i组成的字符 {
int j,k;
for(j=1;j<=30-i;j++) printf(\ //输出空格
for(k=1;k<=2*i-1;k++) //控制输出字符个数 printf(\ printf(\}
void main() { int i;
for(i=1;i<=7;i++) print(i) ; //调用函数print(i) for(i=6;i>=1;i--) print(i) ; //调用函数print(i) }
请给出程序运行测试结果:
3
(2) 以下程序的功能是计算s=#include “stdio.h” long fun(int n) {
int i; long m;
m= ; for(i=1; i<=n; i++)
m= ; return m; }
void main() {
long m; int k,n;
scanf(“%d”,&n); m= ;
for(k=0;k<=n;k++)
m=m+ ; printf(“%ld\\n”,m); }
请给出正确的程序: #include \long fun(int n) {
?k!k?0n,补足所缺语句。
4
int i; long m;
m=1 ;
for(i=1; i<=n; i++) m=m*i ; return m; }
void main() {
long m; int k,n;
scanf(\ m=0 ;
for(k=0;k<=n;k++) m=m+fun(n) ; printf(\}
请给出程序运行测试结果:
3. 程序编写
(1).编写一个函数prt(c,n),重复打印n次给定的字符c。在主函数中调用prt(c,n)函数,
打印一个直角三角形。 如:prt(*,6)的结果如下:
【实验提示】函数prt(c,n)完成输出功能,是一个void函数,有两个参数。 请给出程序源码: #include
void prt(char,int); char c; int n;
scanf(\ prt(c,n); }
void prt(char c,int n) {
int i,j;
5