函数程序设计-C语言程序实验报告_第1页
函数程序设计-C语言程序实验报告_第2页
函数程序设计-C语言程序实验报告_第3页
函数程序设计-C语言程序实验报告_第4页
函数程序设计-C语言程序实验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数程序设计-C语言程序实验报告安徽工程大学高级语言程序设计实验报告班级姓名同组者/成绩日期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)设有未完成的函数:charGetChar(charc){chars[]="9038571426";……}字符串s中无序地存储了10个数字字符,没有重复。函数的功能是:如果字符c不是数字字符,函数原样返回该字符;否则,在s中查找字符C,并返回其在s中的前一个字符。如果该字符位于s的最前面(字符'9'),则返回最后一个字符6'。如GetChar(4)得到字符'I',GetChar(T)得到字符T。请完成该函数并在主函数中调用。*思考题1.请分析不返回值的函数定义与有返回值的函数定义有什么不同,思考这两类函数在实际编程中的作用。2.请观察本次实验中使用的函数都有几个返回值,当个函数需要有多个返回值时,应该如何处理?3.数组作为函数参数有哪几种方式?这些方式中有没有能解决之前“函数多值返回问题”的方法?4.请分析下面程序的作用。/*format.h*/#defineDIGIT(d)printf("整数输出:%d\n",d)#defineFLOAT(f)printf("实数输出:%10.2f\n",f)#defineSTRING(s)printf("字符串输出:?号s\n",s)/*user'sprogram*/#include#includeintmain(){intd,num;floatf;chars[80];printf("请选择输入格式:1-整数,2-实数,3-字符串:");scanf("%d",&num);switch(num){case1:printf("请输入一个整数:");scanf("%d",&d);DIGIT(d);break;case2:printf("请输入一个实数:");scanf("%f",&f);FLOAT(f);break;case3:printf("请输入一个字符串:");scanf("%s",s);STRING(s);break;default:printf("输入有错误!");}return0;}三、算法流程图或实验步骤(可根据需要增删、修改)1.#includef(intn){if(n==1)return(1);elsereturnn*f(n-1);}voidmain(){intx,i;scanf("%d",&i);x=f(i);printf("i!=%d\n",x);}2.#includelongf1(inti,intj){longpower=i;intm;for(m=1;m<j;m++)<p="">power*=i;returnpower;}voidmain(){intn,k,m;longsum=0;printf("pleaseinputN,k:\n");scanf("%d,%d",&n,&k);for(m=1;m<=n;m++)sum+=f1(m,k);printf("sumis%ld\n",sum);}3.(1)#includeintx=8;voidmain(){printf("\nx1=%d",x);{intx=5;printf("\nx2=%d",x);}}(2)#includeintx=8;voidmain(){printf("\nx1=%d",x);{intx=5;printf("\nx2=%d",x);}printf("\nx3=%d",x);}(3)#includevoidmain(){voidsub(void);inti;staticintx;inty;i=1;x=8;y=5;printf("i=%dx=%dy=%d\n",i,x,y);sub();printf("i=%dx=%dy=%d\n",i,x,y);}voidsub(void){inti;staticintx;i=18;x=20;printf("i=%dx=%d\n",i,x);}4.(1)#includevoidsort(inta[]){inti,j,t;for(i=0;i<4;i++)for(j=0;j<4-i;j++)if(a[j]<a[j+1])<p="">{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidmain(){inta[5]={5,10,-7,3,7},i;sort(a);for(i=0;i<=4;i++)printf("%4d",a[i]);}结果:10753-7(2)#include#defineSQR(X)X*Xvoidmain(){inta=15,k=1,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}结果:3(1)#includeintprime(intn){inti;for(i=2;i<n;i++)<p="">if(n%i==0)break;if(i>=n)return1;elsereturn0;}voidmain(){intn;printf(“Inputainteger:”);scanf(“%d”,&n);if(prime(n))printf(“%disaprime\n”,n);elseprintf(“%disnotaprime\n”,n);}(2)#includeintreverse_num(intn){intm=n%10;inti=n/10;while(i>0){inta=i%10;m*=10;m+=a;i/=10;}returnm;}intmain(){intn=0;intm=0;printf("pleaseinputanumber:\n");scanf("%d",&n);printf("thereversenumberis:%d\n",reverse_num(n));return0;}(3)#includedoublep(intn,doublex){if(n==0)return1;elseif(n==1)returnx;elsereturn((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;}voidmain(){intn;doublex;printf(“Inputnandx:\n”);scanf(“%d,%lf”,&n,&x);printf(“%f”,p(n,x));}(4)#include#includeintletter=0,digit=0,space=0,other=0;voidcount(chars[]){inti=0;while(s[i]!=‘\0’){if(s[i]>=‘A’&&s[i]<=‘Z’||s[i]>=‘a’&&s[i]<=‘z’)letter++;elseif(s[i]>=‘0’&&s[i]<=‘9’)digit++;elseif(s[i]==‘‘)space++;elseother++;i++;}}voidmain(){chars[20];printf(“Pleseinputastring:”);gets(s);count(s);printf(“letter=%d,digit=%d,space=%d,other=%d\n”,letter,digit,space,other);}(5)#include#defineswap(a,b)t=a;a=b;b=t;voidmain(){inta,b,t;scanf(“%d%d”,&a,&b);swap(a,b);printf(“%d,%d”,a,b);}(6)#include#includevoidmain(){voidconnect(chars1[],chars2[]);chars1[20],s2[20];printf(“Pleaseinputstring1:”);gets(s1);printf(“Pleaseinputstring2:”);gets(s2);connect(s1,s2);printf(“Theconnectedstringis:”);puts(s1);}voidconnect(chars1[],chars2[]){intlength1,i,j;length1=strlen(s1);for(i=length1,j=0;s2[j]!=‘\0’;i++,j++)s1[i]=s2[j];s1[i]=‘\0’;}(7)#includeintf(inta[]){inti=0,n;for(n=1;n<=1000;n++){if(n%7==0||n%11==0)//能被7整除或被11整除if(n%77!=0)//不能的同时被7和11整除a[i++]=n;//符合要求的数赋值给数组}returni;}voidmain(){inta[300],length;length=f(a);for(inti=0;i<length;i++)<p="">{printf("%-4d",a[i]);if((i+1)%5==0)//使输出时每行五个数printf("\n");}printf("\n%d\n",length);}*思考题/*format.h*/#defineDIGIT(d)printf("整数输出:%d\n",d)#defineFLOAT(f)printf("实数输出:%10.2f\n",f)#defineSTRING(s)printf("字符串输出:?号s\n",s)/*user'sprogram*/#include#includeintmain(){intd,num;floatf;chars[80];printf("请选择输入格式:1-整数,2-实数,3-字符串:");scanf("%d",&num);switch(num){case1:printf("请输入一个整数:");scanf("%d",&d);DIGIT(d);break;case2:printf("请输入一个实数:");scanf("%f",&f);FLOAT(f);break;case3:printf("请输入一个字符串:");scanf("%s",s);STRING(s);break;default:printf("输入有错误!");}return0;}四、实验结果及分析1.如第三项程序所示2.如第三项程序所示3.运行结果:x1=5/*此处x为全局变量*/x2=3/*此处x为局部变量*/2)运行结果:x1=5/*此处x为全局变量*/x2=3/*此处x为局部变量*/x3=5/*此处x为引用外部变量*/3)此程序中x为静态变量,并且两个变量x所处的域不同运行结果:HELLOi=1x=10y=5CPROGRAM1=18x=20HELLO1=1x=10y=54.如第三项程序所示5.如第三项程序所示*思考题1.函数有返回参数和输入参数,是函数最完整的一种形式。在数据传输方面,一方面,它既可以接收调用时传递的参数,也可以给调用的程序返回需要的数据。例如:传给它一副图片,它可以对图片进行处理,然后把处理后的图片再传回来。function[out1out2...]=myfunc(in1,in2,...)函数无返回参数而有输入参数,这样只能给它传入参数,由它对数据进行处理,然后作图显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论