函数程序设计 -C语言程序实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽工程大学
高级语言程序设计实验报告
班级姓名同组者/ 成绩
日期2019\11\21 指导教师
实验名称函数程序设计
一、实验目的
1.掌握定义函数的方法。
2.掌握函数实参与形参的对应关系,体会“值传递”的方式。
3.掌握函数的嵌套调用和递归调用的方法。
4.掌握全局变量和局部变量、动态变量和静态变量的概念与使用方法。
5.理解数组作为函数参数的传递方式。
6.理解宏的概念,掌握宏的定义。
7.了解文件包含的概念,掌握其用法。
二、实验内容
1.完成程序,求解n!
具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。
2.计算s=1的k次方+2的k次方+3的k次方+……+N的k次方。
具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。
3.写出下面3个程序的输出结果,说明每个程序中的各个x有何不同。
4.阅读程序,理解程序的功能,写出预期结果并上机验证。
5.编程并上机调试运行。
(1)编写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。(2)输入一个整数,将它逆序输出。要求定义并调用函数rverse(number),它的功能是返回number的逆序数。如reverse(12345)的返回值是54321。
(3)用递归法求n阶勒让德多项式的值,递归公式为
P(x)=1,n=0;P(x)=x,n=1;P(x)= [(2n-1)*x-Pn-1(x)-(n-1)Pn-2(x)]/n, n>1
(4)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其他
字符的个数,在主函数中输入字符串并输出上述结果。
(5)带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出交换后的两个值。
(6)编写函数,实现两个字符串的连接,在主函数中输入两个字符串并输出连接后的结果(不要使用库函数中的strcat函数)。
(7)请编写函数fun,它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数,在主函数中输出这些整数,并给出统计的总数。
(8)设有未完成的函数:
char GetChar(char c)
{ char s[]="9038571426";
……
}
字符串s中无序地存储了10个数字字符,没有重复。函数的功能是:
如果字符c不是数字字符,函数原样返回该字符;否则,在s中查找字符C,并返回其在s 中的前一个字符。如果该字符位于s的最前面(字符'9') ,则返回最后一个字符6'。
如GetChar(4)得到字符'I', GetChar(T)得到字符T。请完成该函数并在主函数中调用。*思考题
1.请分析不返回值的函数定义与有返回值的函数定义有什么不同,思考这两类函数在实际编程中的作用。
2.请观察本次实验中使用的函数都有几个返回值,当个函数需要有多个返回值时,应该如何处理?
3.数组作为函数参数有哪几种方式?这些方式中有没有能解决之前“函数多值返回问题”的方法?
4.请分析下面程序的作用。
/*format.h*/
#define DIGIT(d) printf("整数输出:%d\n",d)
#define FLOAT(f) printf("实数输出:%10.2f\n",f)
#define STRING(s) printf("字符串输出:?号s\n",s)
/*user's program*/
#include
#include
int main()
{
int d,num;
float f;
char s[80];
printf("请选择输入格式:1-整数,2-实数,3-字符串: ");
scanf("%d",&num);
switch(num)
{ case 1:printf("请输入一个整数: ");
scanf("%d",&d);
DIGIT(d);
break;
case 2:printf("请输入一个实数:");
scanf("%f",&f);
FLOAT(f);
break;
case 3:printf("请输入一个字符串:");
scanf("%s",s);
STRING(s);
break;
default:printf("输入有错误!");
}
return 0;
}
三、算法流程图或实验步骤(可根据需要增删、修改)
1.
#include
f(int n)
{
if (n==1)
return(1);
else
return n*f(n-1);
}
void main ( )
{
int x,i;
scanf("%d",&i);
x=f(i);
printf("i!=%d\n",x);
}
2.
#include
long f1(int i,int j)
{
long power=i;
int m;
for(m=1;m power*=i ; return power; } void main( ) { int n,k,m; long sum=0; printf("please input N,k:\n"); scanf("%d,%d",&n,&k); for(m=1;m<=n;m++) sum+=f1(m,k); printf("sum is %ld\n",sum); } 3.(1)