C语言实验9-函数
- 格式:doc
- 大小:183.00 KB
- 文档页数:7
c语言函数的实验总结C语言函数的实验总结一、实验目的C语言函数是C语言编程中的一个重要概念,能够帮助程序员实现代码模块化、提高代码复用性和可读性。
通过本次实验,旨在掌握C语言函数的基本用法和调用方式,提高编程能力和逻辑思维能力。
二、实验过程本次实验主要涉及以下几个方面的知识和技能:1. 函数的定义和声明2. 函数的参数传递方式3. 函数的返回值4. 函数的递归调用在实验开始前,我们首先了解了函数的定义和声明的概念。
函数的定义是指函数体的实现,包括函数的形参、返回值和函数体的具体实现;函数的声明是指对函数的提前声明,告诉编译器该函数的存在和返回值类型。
接下来,我们根据实验要求分别编写了一些示例函数来巩固相关的知识。
在函数的参数传递方式方面,我们编写了一些传值调用、指针调用和引用调用的示例函数,以便深入理解C语言中参数的传递方式为值传递。
在函数的返回值方面,我们编写了一些返回值为基本类型和引用类型的示例函数,以便理解C语言中函数返回值的作用和类型。
在函数的递归调用方面,我们编写了一些递归求阶乘、递归求斐波那契数列的示例函数,以便掌握递归调用的原理和实现方式。
在实验过程中,我们针对每一个示例函数进行了编码,并通过编译器进行了测试和调试。
在测试过程中,我们特别注意了函数的输入参数和输出结果,确保程序的正确性和可靠性。
同时,我们还使用了一些调试技巧,如打断点、输出调试信息来帮助我们查找代码中的错误和问题。
三、实验结果通过本次实验,我们成功实现了所有示例函数,并通过了编译器的测试和调试。
我们发现C语言函数在编程中的作用非常重要,能够帮助我们实现代码的模块化和封装。
同时,通过函数的参数传递方式可以提高代码的复用性,通过函数的返回值可以获得函数的执行结果,避免了代码之间的耦合性。
另外,通过递归调用函数可以简化代码的实现和理解,但同时也需要注意递归的终止条件和递归的效率问题。
四、实验总结通过本次实验,我们总结出以下几个重要的收获和体会:1. 函数是C语言中的基本概念,是代码模块化和可读性的重要手段。
四《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。
2、掌握选择结构的程序设计。
3、掌握分支结构的嵌套。
二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。
自变量x与函数值均采用双精度类型。
(2)自变量x值从键盘输入,且输入前要有提示信息。
(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。
记录结果。
(5)源程序以sy4_1.c存盘。
2、编程,将一个百分制成绩转换成等级制成绩。
具体要求如下:(1)百分制与等级制的对应关系如下:(3)用键盘输入百分制成绩,输入前要有提示信息。
(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。
(5)输出结果中应包含百分制成绩和成绩等级。
(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。
记录结果。
(7)源程序以sy4_2.c存盘。
三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。
2、掌握三种常用的循环语句的格式和功能。
3、初步掌握循环结构的编程方法。
二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。
要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。
2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。
实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。
2、理解参数传递的过程。
二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。
2、讨论参数的传递的几种形式。
2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
实验九、结构体程序设计一、实验目的1.掌握结构、结构数组、结构指针的定义及使用;2.掌握简单的链表的定义及使用;3.掌握共用体和枚举类型的定义及使用;4.掌握文件的简单的定义、打开、写、关闭等操作。
二、实验内容1.[题目内容]某考点建立一个考生人员情况登记表、表格内容如下:1)根据上表正确定义该表格内容要求的数据类型。
2)分别输入各成员项数据,并打印输出(为简便,假设有3个考生)编程序,然后上机调试运行程序。
2.[题目内容]某单位进行选举,有5位候选人:zhang、wang、li、zhao、liu。
编写一个统计每人得票数的程序。
要求每个人的信息使用一个结构体表示,5个人的信息使用结构体数组。
3.[题目内容]设张三20岁、李四22岁、王平23岁,编程输出3人中年龄最小者的姓名和年龄。
4.[题目内容]定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。
编写6个函数分别用于:(1)使用结构体数组,输入全班10名学生的上述信息;(2)计算每一个学生的总分、平均分;(3)计算每一门课程的平均分;(4)查找成绩有不及格的学生信息;(5)按学生成绩总分降序排序;(6)输出全班学生的学号、总分及名次。
5.[题目内容]利用上一题的结构类型,创建包含10个结点的无序链表。
编写5个函数分别实现下述功能(参考前面第三部分内容):(1)显示链表;(2)添加结点;(3)删除结点;(4)计算每位学生的总分;(5)按英语成绩排序。
三、课后作业(写实验报告)1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。
从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。
(1)定义学生结构体。
(2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。
C语言实验报告《函数》
学号:__________ 姓名:__________ 班级:__________ 日期:__________
指导教师:__________ 成绩:__________
实验四函数
一、实验目的
1、掌握函数定义、调用和声明的方法
2、掌握实参和形参之间的传递方式
3、函数的嵌套调用
二、实验内容
1、写一个函数,将两个字符串连接。
(习题8.6)
2、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
(习题8.9)
3、请将实验三中的实验内容三改正后,再改写成函数形式(排序部分)。
· · · ·
三、实验步骤与过程
四、程序调试记录。
c语言函数实验报告总结C语言函数实验报告总结一、引言C语言是一种广泛应用于嵌入式系统和系统编程的高级编程语言,函数是C语言的基本组成单元之一。
本实验旨在通过学习C语言函数的定义、调用和参数传递等知识,掌握函数的使用方法和技巧。
在实验过程中,我通过编写不同类型的函数,并进行调试和测试,深入理解了函数在程序中的作用和重要性。
二、函数的定义和调用在C语言中,函数是一段具有特定功能的代码块,可以在程序中反复使用。
函数的定义包括函数名、参数列表、返回值类型和函数体等组成部分。
通过函数名和参数列表的组合,可以唯一标识一个函数,实现函数的调用。
在实验中,我通过编写简单的函数,如计算两个数的和、差、乘积和商等,掌握了函数的定义和调用方法。
在调用函数时,需要根据函数的参数类型和个数,传递相应的参数值。
通过调用函数,可以实现代码的模块化和复用,提高程序的可读性和可维护性。
三、函数的参数传递C语言中的函数参数传递有两种方式:值传递和指针传递。
值传递是将实参的值复制给形参,形参在函数内部进行操作,不会影响实参的值。
指针传递是将实参的地址传递给形参,通过操作指针可以改变实参的值。
在实验中,我通过编写函数,如交换两个数的值、计算数组元素之和等,学习了函数参数传递的不同方式。
对于简单的数据类型,如整型、浮点型和字符型,可以使用值传递方式。
而对于数组和结构体等复杂的数据类型,应使用指针传递方式,以提高程序的效率和灵活性。
四、函数的返回值函数的返回值是函数执行完毕后返回给调用者的结果。
在函数定义时,可以指定函数的返回值类型。
在函数体中,通过return语句返回具体的数值或表达式的值。
在实验中,我通过编写函数,如判断一个数是否为素数、计算阶乘等,了解了函数返回值的作用和使用方法。
函数的返回值可以用于判断函数执行的结果,以及作为其他函数的参数或表达式的一部分。
五、函数的嵌套调用在C语言中,函数可以嵌套调用,即一个函数内部调用另一个函数。
C语言程序设计实验五:函数(5篇范例)第一篇:C语言程序设计实验五:函数C语言程序设计实验五:函数1、定义函数返回两个数中较大的数,在主函数中通过调用该函数求三个数中较大的数并输出,编写主函数调用该函数。
说明:(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如12通1班12张山实验五.doc。
第二篇:C语言程序设计实验七:函数、数组、指针C语言程序设计实验七:函数、数组、指针1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个数。
不能使用strlen函数。
求字符串长度函数的函数原型必须如下:int MyStrLenPt(char *str)若输入:nihao123!则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。
要求:写两个函数,一个主函数,一个sort函数。
在主函数中完成数组的输入和输出,通过调用sort函数对数组进行排序。
sort函数的原型为:voidsort(int*p, intn);说明:(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。
第三篇:C语言程序设计—函数—实验报告实验报告专业软件工程班级X班学号_ XXXXXXXXXXX_姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称函数一、实验目的① 熟练掌握C程序中函数的定义;② 掌握函数的调用,函数参数的传递;③ 熟练掌握函数的嵌套调用和递归调用;二、实验环境(描述实验的软件、硬件环境)① 软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;② 硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:编写一个用来判断质数(素数)的函数。
湖北工程学院
学生实验报告书
实验课程名称C语言
开课专业经济学大类
指导教师姓名邹晶、郭道猛
学生姓名
学生班级
2016学年-2017学年第1学期
实验课程名称:C语言
试验项目名称实验九函数实验成绩
试验者专业班级组别
同组者
实验目的:
(一)掌握函数的定义、函数类型、函数参数、函数调用的基本概念;
(二)掌握变量名作函数参数的程序设计方法;
(三)掌握函数的嵌套调用的方法;
(四)掌握数组元素作函数参数;
(五)掌握数组名作函数参数的程序设计方法;
(六)掌握字符数组作函数参数的程序设计方法;
(七)了解全局变量、局部变量的概念和使用方法;
(八)使用功能键F7单步执行,使用Ctrl+F7观察变量的值,学会程序调试基本方法。
实验环境:VC++
实验内容:
见C语言程序设计实验指导书----实验九函数
试验过程记录
1.输入代码:
/* c9-1.c 利用函数fact实现求x的n次方*/
#include "stdio.h"
void main( )
{ long int fact(long x,long n) ; /*声明fact函数*/
long int x;
long int n;
printf("please enter X and N(>=0): ");
scanf("%ld,%ld", &x, &n );
printf("%ld,%ld=%ld",x,n,fact(x,n)); /*调用fact函数*/
}
long int fact(long int x, long int n) /*定义fact函数求xn */
{ long int i,s;
s=1; /*求累积变量的初始化*/
if (n==0) return 0;
for(i=1; i<=n; i++) /*用循环实现xn*/
s=s*x;
return(s); /*返回结果xn*/
}
结果截图:
2.输入代码:
/* c9-2.c 利用函数组合数*/
#include <stdio.h>
long fun(int m, int n);
void main ( )
{
int m, n;
long c;
printf ("Input m and n(m>=n): ");
scanf ("%d%d", &m, &n);
c = fun (m, n);
printf ("c = %ld\n", c);
}
long fun(int m, int n)
{
if (m == n || n == 0)
return (1L);
else
return (m * fun(m-1, n) / (m-n));
}
结果截图:
3.输入代码:
/* c9-3.c 利用函数实现级数求和*/ #include "stdio.h"
int fun(int m)
{
int aa[20],i;
for(i=0;m;i++)
{
aa[i]=m%2;
m=m/2;
}
printf("\n");
for(;i;i--)
printf("%d",aa[i-1]);
return 0;
}
void main()
{
int n;
printf("\nPlease input number n:\n");
scanf("%d",&n);
fun(n);
}
结果截图:
4.输入代码:
/* c9-4.c 通过函数调用实现数制转换*/
#include <stdio.h>
void fun(int m)
{int aa[20],i,k=2;
for(i=0;m;i++)
{aa[i]=m%k;
m=m/k;
}
printf("\n");
for(;i;i--)
printf("%d",aa[i]);
}
void main()
{int n;
printf("\n请输入一个十进制整数:\n");
scanf("%d",&n);
fun(n);
}
结果截图:
5.输入代码:
/* c9-5.c 判别一个整数数组中各元素的值*/ #include <stdio.h>
int main()
{
int i,a[6];
for(i=0;i<6;i++){//键盘输入并判断
scanf("%d",&a[i]);
if(a[i]<0) a[i]=0;
}
for(i=0;i<6;i++){
printf("%d ",a[i]);
}
return 0;
}
结果截图:
6.输入代码:
/* c9-6.c 通过函数调用求一维数组中的最大元素及其下标*/ #include <conio.h>
#include <stdio.h>
int max;
int fun(int arr[ ],int n)
{int pos,i;
max=arr[0];
pos=0;
for(i=1;i<n;i++)
if(max<arr[i]);
{
max=arr[i];
pos=i;
}
return(pos);
}
void main()
{int a[10]={1,4,2,7,3,12,5,34,5,9},n;
int i;
max=a[0];n=0;
for(i=0;i<10;i++)
{if(max<a[i])
{max=a[i];
n=i;
}
}
printf("The max is:%d,pos is:%d\n",max,n);
}
结果截图:
7. 输入代码:
/* c9-7.c 通过函数调用求二维数组中的上三角元素之和*/ #include "conio.h"
#include "stdio.h"
int arrsum( int arr[4][4])
{ int i,j,sum;
sum=0;
for( i=0; i<4; i++)
for(j=i;j<4; j++)
sum+=arr[i][j];
return (sum);
}
void main()
{ int a[4][4]={4,4,34,37,7,3,12,8,5,6,5,52,24,23,2,10},i,j;
printf("The max is:%d\n",arrsum(a));}
结果截图:
8. 输入代码:
/* c9-8.c 通过函数调用实现对字符串的处理*/
#include "conio.h"
#include "stdio.h"
#include "string.h"
fun(char str1[ ],char str2[ ])
{ int i,j;
j=0;
for(i=0;i<strlen(str1);i+=2)
{
str2[j]=str1[i];
j++; }
str2[j]='\0'; }
void main()
{ char str1[80]="This Is a c Program",str2[80];
printf("String is: %s\n",str1);
fun(str1,str2);
printf("Result is: %s\n",str2);
}
结果截图:
9. 输入代码:
/* c9-9.c 全局变量与局部变量的作用范围*/ #include <stdio.h>
int d=1;
fun(int p)
{ int d=5;
d+=p++;
printf("%d",d); }
main( )
{ int a=3; fun(a);
{ int d=16; d+=a++;
printf("%d ",d); }
printf("%d ",d);
}
结果截图:。