C语言实验报告6函数.docx
《C语言实验报告6函数.docx》由会员分享,可在线阅读,更多相关《C语言实验报告6函数.docx(14页珍藏版)》请在冰豆网上搜索。
C语言实验报告6函数
学生实验报告
学号 :
ﻩ日期:
2014-06-22
系别
计算机科学与技术
专业
计算机科学与技术(师)
班级
姓名
课程
名称
程序设计基础
课程
类型
专业课
学时数
2
实验
名称
函数
实验目得:
掌握C语言函数得定义与调用方法;
理解C语言函数得调用过程;
学会编写函数构造程序。
。
实验要求:
实验后写实验报告。
1.实验内容:
1.阅读下列程序并执行,理解程序得功能并记录程序运行结果
#include"stdio、h”
int x,y;
voidnum()
{
ﻩint a=15,b= 10;
x= a—b;
y=a+b;
}
voidmain()
{
inta = 7,b=5;
ﻩx=a+b;
y= a— b;
num();
printf("%d,%d\n”,x,y);
}
运行结果:
2、阅读下面程序并执行,理解程序并记录程序运行结果
#include"stdio。
h"
voidmain()
{
int a=2,i;
for(i=0;i<3;i++)printf(”%4d",f(a));
}
f(int a)
{
intb=0;
intc=3;
b++;
c++;
return(a+b+c);
}
运行结果:
3、调试运行教材146页—156页例7、1-例7、3页程序,理解并掌握程序改进所采用得程序设计技术。
7.1题
#include "stdio、h"
/*函数功能:
用迭代法计算n!
*/
longFact(int n)
{
ﻩinti;
ﻩlongresult=1;
ﻩfor(i=2;i<=n;i++)
ﻩ{
result*=i;
}
return result;
}
intmain()
{
ﻩint m;
ﻩlongret;
printf(”Inputm:
");
ﻩscanf("%d",&m);
ﻩret=Fact(m);
printf("%d!
=%ld\n",m,ret);
ﻩreturn0;
}
运行结果:
7、2题
#include”stdio.h”
longFact(intn);
intmain()
{
ﻩint m;
ﻩlongret;
ﻩprintf(”Inputm:
”);
ﻩscanf("%d”,&m);
ﻩret=Fact(m);
ﻩif(ret==-1)
printf("Inputdateerror!
\n");
ﻩelse
ﻩﻩprintf("%d!
=%ld\n”,m,ret);
ﻩreturn0;
}
/*函数功能:
用迭代法计算n!
当您n〉=0时,返回n!
得值;否则返回-1*/
long Fact(intn)
{
inti;
ﻩlongresult=1;
if(n<0)
{
ﻩreturn-1;
ﻩ}
ﻩelse
{
ﻩfor(i=2;i〈=n;i++)
ﻩﻩresult*=i;
ﻩreturnresult;
ﻩ}
}
运行结果:
ﻩ
7。
3题
#include”stdio、h"
unsigned long Fact(unsignedintn);
intmain()
{
ﻩintm;
do{
ﻩprintf(”Inputm(m〉0):
");
ﻩscanf("%d",&m);
ﻩ}while(m〈0); /*增加对输入数据得限制,确保输入得数据未无符号整数*/
ﻩprintf(”%d!
=%lu\n",m,Fact(m));/*无符号长整形格式输出阶乘值*/
ﻩreturn0;
}
/*函数功能:
用迭代法计算无符号整型变量n得阶乘*/
unsigned longFact(unsignedintn)
{
ﻩunsignedinti;
ﻩunsigned long result=1;
for(i=2;i<=n;i++)
ﻩresult*=i;
ﻩreturnresult;
}
运行结果;
4、编程设计教材186页7.7题(1)、
(2),并在VCC++环境下运行。
7。
7
(1)穷举法:
源程序
#include"stdio.h"
intGcd(inta,intb); /*函数声明*/
intmain()
{
int a,b,t;
ﻩprintf(”Inputtwonumbers\n:
");
ﻩscanf("%d,%d",&a,&b);
printf("%d\n",Gcd(a,b));/*调用函数*/
}
/*计算量个正整数得最大公约数*/
intGcd(inta,intb)
{
ﻩintt,c;
if(a
ﻩ{
ﻩc=a;
ﻩ}
ﻩelse
{
ﻩc=b;
}
ﻩfor(t=c;;t—-) /*最大数不会比这两个数得最小值大*/
ﻩ{
a%t==0;
ﻩb%t==0;
if(a%t==0&&b%t==0)
returnt;
}
}
在VCC++环境下运行:
运行结果:
ﻩ
(2)欧几里得算法
#include"stdio。
h"
intGcd(inta,intb);/*函数声明*/
intmain()
{
ﻩinta,b;
ﻩprintf(”Inputtwo numbers(a>b):
”);
ﻩscanf(”%d,%d",&a,&b);
ﻩdo{
printf(”Error!
\n");
printf(”Inputtwonumbers(a〉b):
");
scanf(”%d,%d",&a,&b);
ﻩ}while(a<=0||b<=0||a〈b);
printf("%d\n",Gcd(a,b)); /*调用函数*/
}
/*函数功能:
计算量个正整数得最大公约数*/
int Gcd(inta,intb)
{
ﻩintr;
intc;
r=a%b;
if(r==0)
return b;
ﻩelse
ﻩwhile(r!
=0)
{
c=b; /*保存当前得除数*/
ﻩb=r; /*将当前得余数复制给下一次运算得除数*/
ﻩa=c; /*将当前得除数福中给下一次运算得被除数*/
ﻩﻩﻩr=a%b; /*记录当前得余数*/
ﻩﻩ}
ﻩreturnb; /*输出两数得最大公约数*/
}
ﻩ
在VCC++环境下运行;
实验总结:
通过本节实验课,进一步熟悉了函数得基本用法与功能,初步学会了函数得调用方法,并且掌握了用迭代法编程计算一些简单得实际问题。
函数就是程序得基本单元,要学好这门课就要从基本工作做起,学好每一块语言知识,慢慢总结经验,掌握更多得编程技巧、
-
成绩
批阅老师
批阅日期