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