C语言程序设计基础实验报告7.doc_第1页
C语言程序设计基础实验报告7.doc_第2页
C语言程序设计基础实验报告7.doc_第3页
C语言程序设计基础实验报告7.doc_第4页
C语言程序设计基础实验报告7.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验7 函数一、 实验目的1、掌握定义函数的方法;2、掌握函数实参与形参的对应关系以及“值传递”、“地址传递”的方式;3、掌握函数的嵌套调用和递归调用的方法;4、掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。二、实验内容和步骤1、 改错上机调试下面的程序,记录系统给出的出错信息,并指出出错原因.main()int,y;printf(%dn,sum(x+y);int sum(a,b)int a,b;return(a+b);2、程序填空(1)求两个正整数m,n之间的非素数之和(包含m和n)。例如:如果m=2,n=20,则程序的输出应为:Sum is: 132。(程序有两个空(1)、(2)需要补充完整。请将程序中的_(1)_和_(2)_删除后,在相应的位置填入正确答案并调试直到得到正确结果为止。注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构!)#include #include #include prime( int m ) int i,k,j; k=sqrt(m); /*found*/ for (j=2;j = k; j+) if (m % j = 0) break; if( j=k ) return (0); else return (1); main() int m=2,n=20,i,j,k,s; clrscr(); s = 0; for ( i=m; i=n; i+) /*found*/ if( prime(i)=0 ) s += i; printf(Sum is: %dn,s);(2)求一维数组a中既不能被3整除也不能被5整除的元素之和。例如:如果数组a中的元素如下:1,8,5,10,6,18,7,2,4,12,9,11,则程序的输出结果应为:The result is : 33。(程序有两个空(1)、(2)需要补充完整。请将程序中的_(1)_和_(2)_删除后,在相应的位置填入正确答案并调试直到得到正确结果为止。注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构!)#include #include #include long int fun( a , n ) int a12 , n; int i; long int s=0; for (i=0;in;i+) if ( ai%3!=0&ai%5!=0 ) /*found*/ s=s+ai; return (s); main() int a12=1,8,5,10,6,18,7,2,4,12,9,11; clrscr(); /*found*/ printf(The result is : %ldn,fun( a , 12 ); (3)程序实现的功能是:将字符串倒序存放并输出。 例如,当字符串为This Is a c Program输出:margorP c a sI sihT(注意: 以下给出部分源程序请在/*begin*/ 与 /*end*/之间填入你编写的若干语句。请勿改动其它位置的任何内容。)#include #include void fun(char str1) /*begin*/int i;char t;for(i=0;i=9;i+)t=str1i;str1i=str118-i;str118-i=t; /*end*/ main() char str180=This Is a c Program; clrscr(); printf(String is: %sn,str1); fun(str1); printf(Result is: %sn,str1); nono(str1); nono(char str1) FILE *f; f=fopen(out1.dat,w); fprintf(f,%sn,str1); fclose(f); (4)统计字符串中的所有空格(或指定字符)的个数并输出。例如,当字符串为This Is a c Program 输出:Result is: 4(注意: 以下给出部分源程序请在/*begin*/ 与 /*end*/之间填入你编写的若干语句。请勿改动其它位置的任何内容。)#include #include int fun(char str1) /*begin*/int count,i;count=0;for(i=0;i=18;i+)if(str1i= )count=count+1;return(count); /*end*/ main() char str180=This Is a c Program; int count; clrscr(); printf(String is: %sn,str1); count=fun(str1); printf(Result is: %dn,count); nono(count); nono(int count) FILE *f; f=fopen(out1.dat,w); fprintf(f,The sum is :%dn,count); fclose(f); 3、注意:以下所有函数都需验证,即编写主函数调用所编函数(1) 求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输人,并传送给函数l,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。#includeint max(int m ,int n) /最大公约数int t;if(nm)t=n;n=m;m=t;t=n%m;while(t)n=m;m=t;t=n%m;return(m);int min(int m,int n) /最小公倍数int min;min=m*n/max(m,n);return(min);main()int m,n;printf(input two number:n);scanf(%d %d,&m,&n);printf(最大公约数%dn,max(m,n);printf(最小公倍数%dn,min(m,n);用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值。#includeint min,max;void zd(int m,int n) /最大公约数int t;if(nm)t=n;n=m;m=t;t=n%m;while(t)n=m;m=t;t=n%m;max=m;void zx(int m,int n) /最小公倍数min=m*n/max;void main()int m,n;printf(input two number:n);scanf(%d %d,&m,&n);zd(m,n);zx(m,n);printf(“最大公约数%dn,max);printf(最小公倍数%dn,min);(2)写一个函数,输入一个n进制数m,输出相应的十进制数。 例如:当n=5,m3204时,则调用该函数输出429。因为(3*53+2*52+0*51+4*50=429)。当n2,m10100时,则调用该函数输出20。#include#includeint fun(int n,int m)double sum,t,i;sum=0;t=0;for(i=0;i=100;i+)if(m=0) break;else t=m%10;sum=sum+t*pow(n,i);m=m/10;return(sum);void main()int n,m,s;printf(input n and mn);scanf(%d,%d,&n,&m);s=fun(n,m);printf(%dn,s);(3)编写程序求:1K+2K +3K +nK ,假定n为6,k为4。要求使用函数的嵌套调用。设计一个主函数main( )完成数据的输出,设计一个求mn的函数,设计一个求1K+2K +3K +nK之和的函数。#include#includeint fun(int n,int k)double i,sum;sum=0;for(i=0;i1)#includefloat p(int n,int x)float result;if(n=0)result=1;else if(n=1)result=x;else result=(2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x)/n;return result;void main()int n,x;printf(input two number n,xn);scanf(%d,%d,&n,&x);printf(%fn,p(n,x);(5)写一函数convert,使给定的一个二维数组(3* 3)转置。 #includevoid convert( int a33)int i,j,temp;for(i=0;i3;i+)for (j=0;ji;j+)temp=aij;aij=aji;aji=temp;void main()int i,j,a33;printf(请输入3*3数组元素:n);for (i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);convert(a,3);printf(操作后的数组为:n);for (i=0;i3;i+)for(j=0;j3;j+)printf(%d ,aij);printf(n);*(6)已知abc+bcc=1333,其中 a、b、c均为一位整数,编写

温馨提示

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

评论

0/150

提交评论