《C语言程序设计》实验报告函数
更新时间:2023-04-22 23:51:01 阅读量: 实用文档 文档下载
《C语言程序设计 》课程实验报告
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
实验过程 一、相关知识 1.一个源程序文件由一个或多个函数以及其他有关内容(如指令、数据声明 与定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序 文件为单位进行编译的,而不是以函数为单位进行编译的。 2.库函数,它是由系统提供的,用户不必自己定义,可直接使用它们。应该说 明,不同的 C 语言编译系统提供的库函数的数量和功能会有一些不同,当然许 多基本的函数是共同的。 3.定义函数包括一下几点内容: (1)指定函数的名字,以便以后按名调用。 (2)指定函数的类型,即函数返回值的类型。 (3)指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。 对无参函数不需要这项。 (4)指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。 这是最重要的,是在函数体中解决的。 3.函数体包括声明部分和语句部分。 4.在定义函数时要用“类型标识符” (即类型名)指定函数值的类型,即指定 函数带回来的值的类型。 5.在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说, 形参从实参得到一个值,该过程在函数调用期间有效,可以参加该函数中的运 算。 6.实参可以是常量、变量或表达式,例如:max(3,a+b),但要求它们有确定的 值。在调用时将实参的值赋给形参。 7.实参向形参的数据传递是“值传递” ,单向传递,只能由实参传给形参,而 不是由形参传给实参。实参和形参在内存中占有不同的存储单元,实参无法得 到形参的值。 8.数组元素可以用作函数实参,不能用作形参,因为形参是在函数被
调用时临 时分配存储单元的,不可能为一个数组元素单独分配存储单元(数组是一个集 体,在内存中占连续的一段储存单元) 。在用数组元素作函数实参时,把实参 的值传给形参,是“值传递”方式。数据传递的方向是从实参传到形参,单向 传递。 9.在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数 内才能引用它们,在此函数以外是不能使用这些变量的。在复合语句内定义的 变量只在本复合语句范围内有效,只有在本身复合语句内才能引用它们。在复 合语句以外是不能使用这些变量的,以上这些称为“局部变量” 。 10.函数中的局部变量,如果不专门声明为 static(静态)存储类别,都是动。 态地分配存储空间的,数据存储在动态存储区中。函数中的形参和在函数中定 义的局部变量(包括在复合语句中定义的局部变量) ,都属于此类。在调用该 函数时,系统会给这些变量分配存储空间,在函数调用结束时就自动释放这些 存储空间。因此这类局部变量称为自动变量。自动变量用关键字 auto 作存储 类别的声明。
二、实验内容: 1.写一个判断素数的函数, 从主函数输入一个整数, 输出是否是素数的信息; 2.输入 10 个学生 5 门课的成绩,分别用函数实现下列功能: (1)计算每个学生的平均分; (2)计算每门课的平均分; 3.用递归方法求 n 阶勒让德多项式的值,递归公式为: 1 (n=0) Pn(x)= x (n=1) ((2n-1).x-Pn-1(x)(n-1).Pn-2(x))/n (n>=1) 三、实验过程 1. 写一个判断素数的函数,从主函数输入一个整数,输出是否是素数的信息 编写以下程序: #include "stdio.h" #include "math.h" f(int x)/*判断 x 是否素数*/ { int i,sign=0;; for(i=2;i<=(int)sqrt(x);i++) { if(x%i==0) { ++sign; break; } } if(sign!=0) printf("\n 该数不是素数\n"); else printf("\n 该数是素数\n"); } void main() { int a; printf("请输入一个整数:\n"); scanf("%d",&a); f(a); } 运行结果如下
2 输入 10 个学生 5 门课的成绩,分别用函数实现下列功能: (1)计算每个学生的平均分; (2)计算每门课的平均分; 输入一下程序: #include<stdio.h> #define n 10 #define b 5 int score[n][b]; float aver[n],cour[b]; void input() { int i,j; printf("请依次输入每位学生的成绩:\n"); for(i=0;i<n;i++) for(j=0;j<b;j++) scanf("%d",&score[i][j]); } void average(int score[n][b]) { int i,j; for(i=0;i<n;i++) { float s=0.0; for(j=0;j<b;j++) s=s+score[i][j]; aver[i]=s/b; } }void course(int score[n][b]) { int i,j; for(j=0;j<b;j++) {
float s=0.0; for(i=0;i<n;i++) s=s+score[i][j]; cour[j]=s/n; } }void main() { int i,j; input(); printf("学生成绩为:\n"); for(i=0;i<n;i++) { for(j=0;j<b;j++) printf("%d ",score[i][j]); printf("\n"); } printf("每个学生的平均成绩为:\n"); average(score); for(i
=0;i<n;i++) printf("%5.2f ",aver[i]); printf("\n"); printf("每门课的平均分为:\n"); course(score); for(j=0;j<b;j++) printf("%5.2f ",cour[j]); printf("\n"); } 运行结果如下
3. 用递归方法求 n 阶勒让德多项式的值,递归公式为: 1 (n=0) Pn(x)= x (n=1) ((2n-1).x-Pn-1(x)(n-1).Pn-2(x))/n (n>=1) 编写以下程序: #include<stdio.h> #include<math.h> long fact(int n,int x) { long p; if(n==0) p=1; if(n==1) p=x; if(n>1) p=((2*n-1)*x-fact(n-1,x)-(n-1)*fact(n-2,x))/n; return(p); } main() { int x, n; long f; printf("shurushuju n,x:"); scanf("%d,%d",&n,&x); f=fact(n,x);
printf("%ld",f); } 运行结果如下
四、实验结果及分析 实验中遇到的问题主要就是在复杂程序面前,还是显得手足无措,对复杂算法 的构思和编程比较吃力,但归根结底是基础还不够扎实,致使程序中的选择结 构混乱不堪,使计算机难以正确执行既定程序步骤。出现问题的原因一是解决 复杂算法编程的能力有所欠缺,二是基本功还不够扎实。对于程序本身,解决 方法是与人交流、查资料;而对于自身,则主要是再次温故课本,查漏补缺, 温故知新。以及利用这一方法解决问题的结果相当不错,最终在自身积极钻研 下,搞定了源程序
正在阅读:
《C语言程序设计》实验报告函数04-22
浅谈陕北民俗文化12-04
电大国际经济技术与合作考试题库07-18
写作指导论文高中议论文的写作指导论文05-04
反腐倡廉观后感04-02
探析德师风建设中存在的问题及对策12-11
中专教师2023年度个人工作总结范文03-23
养鸡可行性研究报告09-24
企业标准管理相关规定06-07
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 程序设计
- 函数
- 语言
- 实验
- 报告
- 2014-2022年中国贸易书籍市场动态监测及竞争战略研究报告
- 基于单片机的函数发生器论文
- 施耐德电气选型手册
- 新编大学英语第三版视听说3听力答案(Unit1-Unit6)
- 初级农业生产合作社的特点是
- 【全册】2022年中考英语(人教版)考点聚焦复习课件:八年级(下)共
- 城市竞争力评价研究述评
- 华策影视:关于变更保荐代表人的公告 2011-01-31
- 命中100%的面相口诀
- 冬季行车安全试题资料
- 临床执业医师资格考试题库及答案(解剖学)
- SPSS中的单因素方差分析
- 用不动点法求数列通项公式
- 学习笔记oracle 产品系列
- 2014年高考全国新课标2卷文综试题及答案
- 对号函数在数学解题中的应用
- 中国民航大学2014年
- 拆解旧家电项目IPO上市咨询(2013年最新细分市场+募投可研+招股书
- 2015年辽宁省资产评估师考试考点:强化行业自律管理新阶段必过技
- 暑期儿童安全的各种情况防范ppt模板