函数(一)实验报告

上传人:仙*** 文档编号:30581236 上传时间:2021-10-10 格式:DOC 页数:10 大小:2.28MB
收藏 版权申诉 举报 下载
函数(一)实验报告_第1页
第1页 / 共10页
函数(一)实验报告_第2页
第2页 / 共10页
函数(一)实验报告_第3页
第3页 / 共10页
资源描述:

《函数(一)实验报告》由会员分享,可在线阅读,更多相关《函数(一)实验报告(10页珍藏版)》请在装配图网上搜索。

1、嘉应学院 计算机学院实 验 报 告课程名称程序设计基础实验名称实验地点指导老师实验时间提交时间班 级姓 名座 号一、实验目的和要求1、熟悉定义函数的方法。2、熟悉声明函数的方法。3、熟悉调用函数时实参与形参的对应关系,以及“值传递”的关系。4、学习对多文件的程序编译和运行。二、实验环境和方法实验方法:(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。(三)根据实验内容,编译程序。实验环境:Windows xp Visual C+6.0三、实验内容及过程描述实验内容:编译以下题目的程序并调试运行

2、。1、写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应当准备以下实验数据:17,34,2,1,0。分别运行并检查结果是否正确。要求所写的程序,主函数的位置在其它函数之前,在主函数中对其所调用的函数作声明。进行以下工作:输入自己编写的程序,编译和运行程序,分析结果。将主函数的函数声明删掉,再进行编译,分析编译结果。把主函数的位置改在其它函数之后,在主函数中不含函数声明。保留判别素数的函数,修改主函数,要求实现输出100200之间的素数。2、写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。输入程序,编译和运行程序,分析结果。分析函数声明中参数的写法。先后用以

3、下两种形式:(a)函数声明中参数的写法与定义函数时的形式完全相同,如:void cpy(char s ,char c );(b)函数声明中参数写法与定义函数时基本相同,但省略写数组名。如:void cpy(char ,char );如果随便指定数组大小行不行,如:void cpy(char s40 ,char40);3、输入10个学生5门课的成绩,分别用函数实现下列功能:计算每个学生平均分;计算每门课的平均分;找出所有50个分数中最高的分数所对应的学生和课程。4、用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。把两个函数放在同一个程序文件中,作为一个文件进行编译和

4、运行。把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接和运行。实验步骤: 进入Visual C+ 6.0集成环境。 输入自己编好的程序。 检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。以下是各题源代码:#includeint main()int prime(int);

5、int n;printf(请输入一个整数:);scanf(%d,&n);if(prime(n)printf(%d是一个素数。n,n);elseprintf(%d不是一个素数。n,n);return 0;int prime(int n)int flag=1,i;for (i=2;in/2&flag=1;i+)if(n%i=0)flag=0;return(flag);1、写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。#includeint main()int prime(int);int n;printf(“100200之间的素数为:”);for(n=100;n=200;n+)i

6、f(prime(n)printf(%d。n,n);return 0;int prime(int n)int flag=1,i;for (i=2;in/2&flag=1;i+)if(n%i=0)flag=0;return(flag);保留判别素数的函数,修改主函数,要求实现输出100200之间的素数。2、写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。#includeint main()void cpy(char ,char );char str80,c80;printf(输入字符串:);gets(str);cpy(str,c);printf(元音字母为:%sn,c);retur

7、n 0;void cpy(char s,char c)int i,j;for(i=0,j=0;si!=0;i+)if(si=a|si=A|si=e|si=E|si=i|si=I|si=o|si=O|si=u|si=U)cj=si;j+;cj=0;3、输入10个学生5门课的成绩,分别用函数实现下列功能:计算每个学生平均分;计算每门课的平均分;找出所有50个分数中最高的分数所对应的学生和课程。#include #define N 10#define M 5float scoreNM;float a_stuN,a_courM;int r,c;int main() int i,j; float h;

8、float s_var(void); float highest(); void input_stu(void); void aver_stu(void); void aver_cour(void); input_stu(); aver_stu(); aver_cour(); printf(n NO. cour1 cour2 cour3 cour4 cour5 avern); for(i=0;iN;i+) printf(n NO %2d ,i+1); for(j=0;jM;j+) printf(%8.2f,scoreij); printf(%8.2fn,a_stui); printf(n平均分

9、:); for (j=0;jM;j+) printf(%8.2f,a_courj); printf(n); h=highest(); printf(最高分:%7.2f NO. %2d course %2dn,h,r,c); printf(方差: %8.2fn,s_var(); return 0;void input_stu(void) int i,j; for (i=0;iN;i+) printf(n请输入学生%2d的成绩:n,i+1); for (j=0;jM;j+) scanf(%f,&scoreij); void aver_stu(void) int i,j; float s; for

10、(i=0;iN;i+) for (j=0,s=0;jM;j+) s+=scoreij; a_stui=s/5.0; void aver_cour(void) int i,j; float s; for (j=0;jM;j+) s=0; for (i=0;iN;i+) s+=scoreij; a_courj=s/(float)N; float highest() float high; int i,j; high=score00; for (i=0;iN;i+) for (j=0;jhigh)high=scoreij; r=i+1; c=j+1; return(high); float s_va

11、r(void) int i; float sumx,sumxn; sumx=0.0; sumxn=0.0; for (i=0;iN;i+) sumx+=a_stui*a_stui; sumxn+=a_stui; return(sumx/N-(sumxn/N)*(sumxn/N); printf(n NO %2d ,i+1); for(j=0;jM;j+) printf(%8.2f,scoreij); printf(%8.2fn,a_stui); printf(n平均分:); for (j=0;jM;j+) printf(%8.2f,a_courj); printf(n); h=highest(

12、); printf(最高分:%7.2f NO. %2d course %2dn,h,r,c); printf(方差: %8.2fn,s_var(); return 0;void input_stu(void) int i,j; for (i=0;iN;i+) printf(n请输入学生%2d的成绩:n,i+1); for (j=0;jM;j+) scanf(%f,&scoreij); void aver_stu(void) int i,j; float s; for (i=0;iN;i+) for (j=0,s=0;jM;j+) s+=scoreij; a_stui=s/5.0; void a

13、ver_cour(void) int i,j; float s; for (j=0;jM;j+) s=0; for (i=0;iN;i+) s+=scoreij; a_courj=s/(float)N; float highest() float high; int i,j; high=score00; for (i=0;iN;i+) for (j=0;jhigh)high=scoreij; r=i+1; c=j+1; return(high); float s_var(void) int i; float sumx,sumxn; sumx=0.0; sumxn=0.0; for (i=0;i

14、N;i+) sumx+=a_stui*a_stui; sumxn+=a_stui; return(sumx/N-(sumxn/N)*(sumxn/N); float highest() float high; int i,j; high=score00; for (i=0;iN;i+) for (j=0;jhigh)high=scoreij; r=i+1; c=j+1; return(high); float s_var(void) int i; float sumx,sumxn; sumx=0.0; sumxn=0.0; for (i=0;iN;i+) sumx+=a_stui*a_stui

15、; sumxn+=a_stui; return(sumx/N-(sumxn/N)*(sumxn/N); #include #include int main()int alphabetic(char); int longest(char ); int i; char line100; printf(请输入一行英文:n); gets(line); printf(最长的单词是 :); for (i=longest(line);alphabetic(linei);i+) printf(%c,linei); printf(n); return 0;int alphabetic(char c)if (c

16、=a & c=A&c=z) return(1); else return(0);int longest(char string)int len=0,i,length=0,flag=1,place=0,point; for (i=0;i=length)length=len; place=point; len=0; return(place);4、用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。int alphabetic(char c)if (c=a & c=A&c=z) return(1); else return(0);int longest(char stri

17、ng)int len=0,i,length=0,flag=1,place=0,point; for (i=0;i=length)length=len; place=point; len=0; return(place);四、实验结果:1、输入以下测试数据:17,34,2,1,0.的结果为:将主函数函数声明删掉,再进行编译:编译时出现错误, 所以,在调用函数前,必须先定义函数,并进行声明。把主函数的位置改在其它函数之后,在主函数中不含函数声明。编译时出现错误主函数必须在其它函数之前由系统调用,其它函数由主函数调用。保留判别素数的函数,修改主函数,要求实现输出100200之间的素数。2、运行结果:

18、分析函数声明中参数的写法。先后用以下两种形式:(a)函数声明中参数的写法与定义函数时的形式完全相同,如:void cpy(char s ,char c );(b)函数声明中参数写法与定义函数时基本相同,但省略写数组名。如:void cpy(char ,char );两种方法运行结果相同。在函数声明中的形参名可以省写,而致谢形参的类型。编译系统只关心和检查参数个数和参数类型,而不检查参数名,因为在调用函数时只要求保证实参类型与形参类型一致,而不必考虑形参名是什么。因此在将函数声明中,形参名可写可不写、形参民是什么都无所谓。如果随便指定数组大小行不行,如:void cpy(char s40 ,char40);形参数组中数组大小是不指定的,指定被调函数中形参数组的大小是不起任何作用的,因为C编译器对形参数组大小不做检查,只是将形参数组的首地址传给形参数组。形参数组也可以不指定大小,定义数组时在数组名后跟一个空的中括号,为了在被调函数中处理数组元素的需要,可以另设一个参数,传递数组元素的个数3、运行结果:以下是10个学生的5门课成绩:以下是输出结果:4、运行结果为:

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!