C实验报告14

更新时间:2024-05-12 04:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

运城学院公共计算机教学部

实 验 报 告

(2012 /2013学年 第一 学期)

?

一、 实验目的和要求 1、掌握函数的定义和函数的调用方法。 2、掌握函数实参与形参的对应关系,以及“值传递”的方式。 二、实验环境(实验设备) 硬件: 微型计算机 软件: Microsoft Visual C++6.0 三、实验过程 训练目标1:(50分钟) 1、 编写自定义函数,实现简单项目调试 实验题目1:结合数据文件,请设计、编写自定义函数实现某班若干个学生某门课程成绩输入、输出,求最高分、最低分和平均值,并实现对成绩的统计。程序如下,请填空: #include #include void input(int n) /*输入数据并存入数据文件函数*/ { int i,score; FILE *fp; fp=fopen(\ if(fp==NULL) {printf(\打开文件错误!退出程序!\ /*填入程序段*/ fclose(fp); } void output(int m) /*从数据文件读入数据并显示函数*/ { int i,score; FILE *fp; fp=fopen(\ if(fp==NULL) {printf(\打开文件错误!退出程序!\ /*填入程序段*/ printf(\fclose(fp); getchar(); } void jisuan(int n) /*从数据文件读入数据并求最高分、最低分和平均值*/ { int i,score,max,min,sum=0,ave; FILE *fp; fp=fopen(\ if(fp==NULL) {printf(\打开文件错误!退出程序!\ /*填入程序段*/ ave=sum/n; printf(\ fclose(fp);getchar(); } void main() { int m,dm; do{ system(\ printf(\ printf(\输入成绩\\n\ printf(\输出成绩\\n\ printf(\平均成绩\\n\ printf(\退出程序\\n\ printf(\ printf(\请选择代码\\n\ scanf(\ switch(dm) { case 1:printf(\请输入学生人数:\ input(m); break; case 2:printf(\请输入学生人数:\ output(m);getchar();break; case 3:printf(\请输入学生人数:\ jisuan(m);getchar();break; case 0: return; } }while(1); } 程序如下: #include #include void input(int n) /*输入数据并存入数据文件函数*/ { } void output(int m) /*从数据文件读入数据并显示函数*/ { int i,score; FILE *fp; fp=fopen(\if(fp==NULL) {printf(\打开文件错误!退出程序!\/*填入程序段*/ for(i=1;i<=m;i++) { fscanf(fp,\ int i,score; FILE *fp; fp=fopen(\if(fp==NULL) {printf(\打开文件错误!退出程序!\/*填入程序段*/ for(i=1;i<=n;i++) { } fclose(fp); printf(\请输入第%d个学生的成绩:\\n\scanf(\fprintf(fp,\ } printf(\ printf(\ getchar(); fclose(fp); } void jisuan(int n) /*从数据文件读入数据并求最高分、最低分和平均值*/ { int i,score,max,min,sum=0,ave; FILE *fp; fp=fopen(\if(fp==NULL) {printf(\打开文件错误!退出程序!\/*填入程序段*/ fscanf(fp,\max=score; min=score; for(i=1;i<=n;i++) { } ave=sum/n; sum+=score; fscanf(fp,\if(min

void main() { int m,dm; do{ system(\printf(\printf(\输入成绩\\n\printf(\输出成绩\\n\printf(\平均成绩\\n\printf(\退出程序\\n\printf(\printf(\请选择代码\\n\scanf(\switch(dm) { case 1:printf(\请输入学生人数:\ scanf(\ input(m); break; case 2:printf(\请输入学生人数:\ scanf(\ output(m);getchar();break; case 3:printf(\请输入学生人数:\ scanf(\ jisuan(m);getchar();break; case 0: return; } }while(1); }运行后的输出结果是(截图): 问题1:主程序中的功能代码选择程序段是用什么语句实现的? Switch语句 问题2:主程序中的菜单程序段是用什么语句实现的? Do---while语句 问题3:数据文件打开语句有哪些? fp=fopen(\ fp=fopen(\问题4:input(int n)函数的形参有什么意义? 输入的学生人数 问题5:output(int m)函数的形参有什么意义? 输出的学生人数 问题6:jisuan(int n) 函数的形参有什么意义? jisuan(int n) 函数的形参代表学生人数,控制循环的执行次数 训练目标2:(50分钟) 2、 编写自定义函数,判断某数n是否为素数,完数 实验题目2:编写自定义函数,判断某数n是否为素数?请按提示将程序补充完整,使程序具有指定的功能。 #include void main() /*主函数*/ { int n; printf(\请输入一个整数\\n\ /*填入程序段*/ if( prime_number(n)) printf(\此数是素数\ else printf(\此数不是素数\ } /*编写自定义函数,判断某数n是否为素数,函数如下*/ int prime_number(int n) { int j,flag=1; if(n==2) return 1; for(j=2;j<=sqrt(n)&&flag;j++) if(n%j==0) {flag=0;break;} return flag; } 实验题目3:(20分钟)利用上题编写的自定义函数,在主函数中调用该函数输出1000以内所有的素数。 自定义函数源程序代码: int prime_number(int n) { } 主调函数代码: int j,flag=1; if(n==2) return 1; for(j=2;j<=sqrt(n)&&flag;j++) if(n%j==0) {flag=0;break;} return flag; void main() { int n,flag; /*主函数*/ for(n=2;n<1000;n++) } 程序运行后的输出结果是(截图): {f= prime_number(int n);if(flag)printf(\ 实验题目4:(5分钟)编写一个自定义函数判断某整数是否为完数,调用该函数输出1000以内所有的完数。完数定义:一个整数它的所有真因子的和等于该数本身。如6=1+2+3。 程序如下:自定义函数, int ws(int n) { } 主调函数: void main() { int n; int j,flag=1,sum=0; for(j=1;j

运行结果如下: 训练目标3:(50分钟) 3、 编写自定义函数,处理多位数n 实验题目5:编写自定义函数,求某多位数n的各位数字之和。请按提示将程序补充完整,使程序具有指定的功能。 int split_sum(int *m) /*函数功能:拆分多位数并求各位数字之和*/ { int s=0; while( ) { ; =(*m)/10; } return s; } void back_print( ) /*函数功能:倒序打印多位数*/ { While (n!=0) { printf(\ n= ; } printf(\} void main() { int x,y; printf(\请输入一个多位数\ scanf(\ printf(\倒序打印多位数\ printf(\拆分多位数并求各位数字之和\ printf(\拆分多位数后的各位数字之和为%d\\n\} 完整的源程序代码为: #include int split_sum(int *m) /*函数功能:拆分多位数并求各位数字之和*/ { int s=0; while(*m!=0) { s+=(*m); *m=(*m)/10; } return s; } void back_print(int n) /*函数功能:倒序打印多位数*/ { while(n!=0) { printf(\ n=n/10; } printf(\} void main() { int x,y; printf(\请输入一个多位数:\ scanf(\ printf(\倒序打印多位数:\ back_print(x); printf(\拆分多位数并求各位数字之和:\y=split_sum(&x); printf(\拆分多位数后的各位数字之和为:%d\\n\} 程序运行后的输出结果是(截图): 问题1:变量地址或指针作形参时,函数间的数据如何传递的? 按值传递,主调函数中的实参值赋值给被调函数的形参值。 问题2:函数调用时,实参是被操作的实际数据。填写main函数中的函数调用语句时,两个函数调用语句的实参有什么区别?分别代表什么? 第一个调用的是实参的值,第二个调用的是实参的地址。 四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 练得太少,眼高手低。 批阅人 日 期 1

本文来源:https://www.bwwdw.com/article/ho6g.html

Top