C语言实验9-函数
c语言函数的实验总结

c语言函数的实验总结C语言函数的实验总结一、实验目的C语言函数是C语言编程中的一个重要概念,能够帮助程序员实现代码模块化、提高代码复用性和可读性。
通过本次实验,旨在掌握C语言函数的基本用法和调用方式,提高编程能力和逻辑思维能力。
二、实验过程本次实验主要涉及以下几个方面的知识和技能:1. 函数的定义和声明2. 函数的参数传递方式3. 函数的返回值4. 函数的递归调用在实验开始前,我们首先了解了函数的定义和声明的概念。
函数的定义是指函数体的实现,包括函数的形参、返回值和函数体的具体实现;函数的声明是指对函数的提前声明,告诉编译器该函数的存在和返回值类型。
接下来,我们根据实验要求分别编写了一些示例函数来巩固相关的知识。
在函数的参数传递方式方面,我们编写了一些传值调用、指针调用和引用调用的示例函数,以便深入理解C语言中参数的传递方式为值传递。
在函数的返回值方面,我们编写了一些返回值为基本类型和引用类型的示例函数,以便理解C语言中函数返回值的作用和类型。
在函数的递归调用方面,我们编写了一些递归求阶乘、递归求斐波那契数列的示例函数,以便掌握递归调用的原理和实现方式。
在实验过程中,我们针对每一个示例函数进行了编码,并通过编译器进行了测试和调试。
在测试过程中,我们特别注意了函数的输入参数和输出结果,确保程序的正确性和可靠性。
同时,我们还使用了一些调试技巧,如打断点、输出调试信息来帮助我们查找代码中的错误和问题。
三、实验结果通过本次实验,我们成功实现了所有示例函数,并通过了编译器的测试和调试。
我们发现C语言函数在编程中的作用非常重要,能够帮助我们实现代码的模块化和封装。
同时,通过函数的参数传递方式可以提高代码的复用性,通过函数的返回值可以获得函数的执行结果,避免了代码之间的耦合性。
另外,通过递归调用函数可以简化代码的实现和理解,但同时也需要注意递归的终止条件和递归的效率问题。
四、实验总结通过本次实验,我们总结出以下几个重要的收获和体会:1. 函数是C语言中的基本概念,是代码模块化和可读性的重要手段。
四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《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)输出计算结果;在数据输出之前应有提示信息。
C语言实验报告函数

实验名:函数的定义及调用一、实验目的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为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
《C语言函数》课件

文件操作函数用于创建、打开、读取、写入和关闭文件等 操作。
要点二
详细描述
C语言标准库提供了许多文件操作函数,如fopen()用于打 开文件,fclose()用于关闭文件,fread()用于读取文件内容 ,fwrite()用于写入文件内容等。这些函数通常需要包含 stdio.h头文件以正确使用。
详细描述
C语言提供了许多字符串函数,用于处理字符串数据。这些函数包括连接字符串、比较字符串、查找 子串等。它们通常在string.h头文件中定义,使用时需要包含该头文件。
字符串函数应用案例
• 示例:连接两个字符串
字符串函数应用案例
01
```c
02
int main() {
03
char str1[50] = "Hello, ";
• 示例:计算圆的面积和周长
数学函数应用案例
```c int main() { double radius, area, circumference;
数学函数应用案例
circumferencea = M_PI * pow(radius, 2);
radius = 5.0;
printf("无法打开文件n");
return 1; // 返回错误代码 1 表示打 开文件失败
文件操作函数应用案例
} else {
while ((ch = fgetc(file)) != EOF) { // 从文件中读取字符 并输出到控制台,直到到达
文件末尾(EOF)为止。
putchar(ch); // 使用 putchar() 函数将字符输出到 控制台。
01
03 02
数学函数应用案例
C语言实验答案

scanf("%f,%f",&a,&b);
if(fabs(a*a+b*b-1)<1e-3)
printf("Y\n");
else printf("N\n");}
}
[题目1017:求数的位数]
由键盘输入一个不多于9位的正整数,要求输出它是几位数。
[第一组自测数据] [第二组自测数据]
}
[题目1020:正负奇偶判断]
由键盘输入非零整数x,判断该数正负,正数输出positive,负数输出negative,接着判断该数的奇
偶性,奇数输出odd,偶数输出even。
[第一组自测数据] negative
[键盘输入] odd
-43↙[第二组自测数据]
[正确输出] [键盘输入]
98↙positive
阅读下面程序,写出运行结果:
void main()
{ float a;
int b, c;
char d, e;
a=3.5;
b=a;
c=330;
d=c;
e='\\';
printf("%f,%d,%d,%c,%c", a,b,c,d,e);
}
运行结果为:
3.500000,3,330,J,\
[提示]赋值语句具有类型转换的功能,但可能会改变数据。
[正确输出] [正确输出]
Y N
[提示] 1)平面上的点与圆的关系分为在圆内、在圆上、在圆外三种,本题要求判断是否在圆上;2)
判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度(本题为0.001)的方法实现。
C语言_实验九、结构体程序设计

实验九、结构体程序设计一、实验目的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语言( 函数) ppt课件

11 ppt课件
#include<stdio.h> //构成逆序数的函数 int reverseNum(int x) // x 是正整数 {
int r=0; while(x>0) {
r = r*10 + x%10; x = x/10; } return r; }
#include<stdio.h>
#include<math.h>
void process(double array[ ], int n)//数组名作函数形参
{
int i;
for(i=0; i<n; i++) {
if(array[i]>=36) array[i]=sqrt( array[i] )*10;
printf("%d", a[i]);//数组元素作为函数实参
}
return 0;
p}pt课件
19
例5:有一个一维数组a,内放10个整数,分别输出这十 个数的平方。
#include<stdio.h> int square(int n) {
return n*n; } int main() {
int a[10], i, j; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%5d",square(a[i])); return 0; }
int isSymmetric(int n) //n为回文数返回1,否返回0 {
C语言实验报告《函数》_实验报告_

C语言实验报告《函数》
学号:__________ 姓名:__________ 班级:__________ 日期:__________
指导教师:__________ 成绩:__________
实验四函数
一、实验目的
1、掌握函数定义、调用和声明的方法
2、掌握实参和形参之间的传递方式
3、函数的嵌套调用
二、实验内容
1、写一个函数,将两个字符串连接。
(习题8.6)
2、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
(习题8.9)
3、请将实验三中的实验内容三改正后,再改写成函数形式(排序部分)。
· · · ·
三、实验步骤与过程
四、程序调试记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖北工程学院
学生实验报告书
实验课程名称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);
}
结果截图:。