函数程序设计 -C语言程序实验报告

合集下载

内蒙古科技大学面向对象的程序设计实验3 函数

内蒙古科技大学面向对象的程序设计实验3 函数

内蒙古科技大学面向对象的程序设计实验报告一、实验目的(1)掌握定义函数的方法、函数实参与形参的对应关系以及“值传递”的方式。

(2)掌握引用做函数参数的方法。

(3)理解和使用函数重载以及带默认参数的函数。

二、实验环境编译器:Visual C++ 6.0.操作系统:Windows 7旗舰版三、实验内容2.1 练习(一):通过下面的步骤实现函数功能:1. 写一个判别素数的子函数prime,在主函数输入一个整数,输出是否为素数的信息。

2. 按要求编写程序,生成后执行,并分析输出的信息。

要求:使用cin语句分别输入以下测试数据:17,34,2,1,0。

分别运行并检查结果是否正确。

2.2 练习(二):1.设计一个函数:exchange(float x, float y, float z),当调用exchange(a,b,c)时,将a的内容赋值给b,b的内容赋值给c,c的内容赋值给a,要求采用引用的方式来实现。

2. 使用函数重载的方法定义两个重名函数,分别求出整形数平面间两点间距离和双精度平面间两点间距离,如果没有输入第二点的坐标则采用函数缺省参数的方法默认为圆点(0,0)。

四、实验过程练习3-1.1运行结果如下运行结果为34,0,1不是素数,17和2是素数,与实际情况无误,运行结果正确练习3-2.1代码截图如下原设置a=1.1 b=22.2 c=333.3变化之后a=333.3 b=1.1 c=22.2运行结果无误练习3-2.2源代码截图如下测试数据结果如下五、实验总结实验源代码:练习(一)#include<iostream.h> void prime(int x);void main(){int n;while(1){cout<<"请输入n:";cin>>n;prime(n);}}void prime(int x){if(x==0||x==1)cout<<x<<" is no prime"<<endl;else{int i=2;while(i<x){if(x%i==0)break;i++;}if(i==x)cout<<x<<" is prime"<<endl;elsecout<<x<<" is no prime"<<endl;}}练习(二)#include<iostream.h>void exchange(float &x,float &y,float &z); void main(){float a=1.1,b=22.2,c=333.3;cout<<"调用exchange之前"<<endl;cout<<"a:"<<a<<endl;cout<<"b:"<<b<<endl;cout<<"c:"<<c<<endl;exchange(a,b,c);cout<<"调用exchange之后"<<endl;cout<<"a:"<<a<<endl;cout<<"b:"<<b<<endl;cout<<"c:"<<c<<endl;}void exchange(float &x,float &y,float &z) {float cache;cache=y;y=x;x=z;z=cache;}练习(三)#include <iostream.h>#include <math.h>int distance(int x1,int y1,int x2=0,int y2=0){cout<<"调用int distance"<<endl;int dis=sqrt((int)(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));return dis;}double distance(double x11,double y11,double x22=0.0,double y22=0.0) {cout<<"调用double distance"<<endl;double dis=sqrt((int)(x11-x22)*(x11-x22)+(y11-y22)*(y11-y22));return dis;}void main(){int x1,y1,x2=0,y2=0;int i;double x11,y11,x22,y22;char c;cout<<"请输入整形平面第一点的横坐标与纵坐标:"<<endl;cin>>x1>>y1;cout<<"是否输入整形平面第二点的横坐标与纵坐标? ’Y’确定,否则跳过"<<endl;cin>>c;if(c==’Y’||c==’y’){cout<<"请输入整形平面第二点的横坐标与纵坐标:"<<endl;cin>>x2>>y2;}cout<<endl;cout<<"请输入双精度平面第一点的横坐标与纵坐标:"<<endl;cin>>x11>>y11;cout<<"是否输入双精度平面第二点的横坐标与纵坐标? ’Y’确定,否则跳过"<<endl;cin>>c;if(c==’Y’||c==’y’){。

C语言3:函数的运用

C语言3:函数的运用

C语言实验——三个整数和、积与平均值Time Limit: 1000MS Memory limit: 65536K题目描述给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。

输入输入只有三个正整数a、b、c。

输出输出一行,包括三个的和、乘积、平均数。

数据之间用一个空格隔开,其中平均数保留小数后面两位。

示例输入1 2 3示例输出6 6 2.00#include<stdio.h>#include<math.h>void main(){int a,b,c,sum,product;float ave;while(scanf("%d%d%d",&a,&b,&c)!=EOF){sum=a+b+c;product=a*b*c;ave=sum/3;printf("%d %d %0.2f",sum,product,ave);}}汉诺塔Time Limit: 1000MS Memory limit: 65536K题目描述汉诺塔(又称河内塔)问题是印度的一个古老的传说。

开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着n个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从A棒搬到C棒上,规定可利用中间的一根B棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。

僧侣们搬得汗流满面,可惜当n很大时这辈子恐怕就很搬完了。

聪明的你还有计算机帮你完成,你能写一个程序帮助僧侣们完成这辈子的夙愿吗?输入输入金片的个数n。

这里的n<=10。

输出输出搬动金片的全过程。

格式见样例。

示例输入2示例输出Move disk 1 from A to BMove disk 2 from A to CMove disk 1 from B to C字符逆序Time Limit: 1000MS Memory limit: 65536K题目描述将一个字符串str的内容颠倒过来,并输出。

实验05 函数程序设计

实验05 函数程序设计

计算两个复数之积(调试示例error05_1)程序填空,不要改变与输入输出有关的语句。

分别输入两个复数的实部与虚部,编程调用函数实现计算两个复数之积。

若两个复数分别为:c1=x1+(y1)i, c2=x2+(y2)i,则:c1*c2 = (x1*x2-y1*y2) + (x1*y2+x2*y1)i输入输出示例:括号内是说明输入1 2 (x1=1, y1=2)-2 3 (x2=-2, y2=3)输出product of complex is (-5.000000)+(1.000000)i#include<stdio.h>/*---------*/int main(void){float imag1, imag2, real1, real2;scanf("%f%f", &real1, &imag1);scanf("%f%f", &real2, &imag2);complex_prod(real1, imag1, real2, imag2);printf("product of complex is (%f)+(%f)i\n", result_real, result_imag);return 0;}/*---------*/使用函数求1! + 2! + … + m!(改错题error05_2)程序填空,不要改变与输入输出有关的语句。

求1! + 2! + … + 10!,要求定义并调用函数fact(n)计算 n!,函数形参 n 的类型是int,函数类型是double。

输入输出示例:括号内是说明输出:1!+2!+...+10! = 4037913.000000#include <stdio.h>double fact(int n);int main(void){int i;double sum;/*---------*/printf("1!+2!+...+10! = %f\n", sum); return 0;}/*---------*/使用函数判断数的符号使用函数求奇数和程序填空,不要改变与输入输出有关的语句。

《C语言与程序设计》实验06---函数

《C语言与程序设计》实验06---函数

实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。

2. 熟练掌握形式参数与实际参数、参数值的传递。

3. 掌握函数的嵌套调用与递归调用。

4.学会使用指向函数的指针变量。

5.了解指向指针的指针的概念及带参数的main函数。

6. 掌握局部变量和全局变量。

7. 掌握变量的存储类型。

8. 了解内部函数和外部函数。

二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。

2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。

②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。

当函数值为整型时,类型符可以省略。

③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。

④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。

⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。

extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。

static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。

3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。

形参是函数的内部变量,只在函数内部才有意义。

在未出现函数调用时,形参不占内存。

对每个形参必须指明其名字和数据类型。

《C程序设计》函数的定义与调用实验报告

《C程序设计》函数的定义与调用实验报告

《C程序设计》函数的定义与调用实验报告k++;if(m==k)return 1;else return 0;}int main(){int a;printf("请输入一个数:");scanf("%d",&a);if(fun(a)==1)printf("%d是素数\n",a);elseprintf("%d不是素数\n",a);return 0;}运行结果:(截图)2、假设在某青年歌手大奖赛上,有9位评委参与评分。

计算每个参赛歌手最终得分的方法是:首先去掉一个最高分和一个最低分,然后计算剩余7个分数的平均值,所得结果就是选手的最终得分。

编写一个程序,帮助工作人员计算每个参赛歌手的最终得分。

(采用嵌套调用函数的方法:定义一个求平均值的函数和一个求最值的函数,在主函数中输入9个评分和输出歌手的最终得分)解题思路:首先定义一个一维数组用于存储9个评分,其次需自定义两个函数,一个用于求出评分中最高分和最低分之和,另一个用于求最终得分,并在主函数中调用自定义的两个函数。

#include <stdio.h>float fun(float b[]){int i;float sum,t;for(i=0;i<9;i++)if(b[i]>b[i+1])t=b[i+1];b[i+1]=b[i];b[i]=t;sum=b[0]+b[8];printf("最大值和最小值之和为:%f\n",sum);return sum;}float fun1(float c[]){int i;float average,sum;for(i=0;i<9;i++)sum+=c[i];average=(sum-fun(c))/7;printf("去掉最高分和最低分的平均值为:%f\n",average);return average;}int main(){float a[9];int i;printf("请输入9个得分数值:\n");for(i=0;i<9;i++)scanf("%f",&a[i]);printf("选手的最终得分为%f\n",fun1(a));return 0;}运行结果:(截图)3、猴子吃桃问题:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个。

C语言程序设计-第5章--函数

C语言程序设计-第5章--函数

实参可以是常量、变量或表达式,但要求 它们必须要有确定的值,在调用时将实参 的值赋给形参。另外,实参和形参的类型 应相同或兼容。
— 31 —
5.2 函数的参数传递和返回值
➢ 5.2.2 函数的返回值
一般情况下,主调函数调用完被调函数后,都希望能够得到一 个确定的值,这就是函数的返回值。在C语言中,函数返回值 是通过return语句来实现的。return语句的一般形式有3种:
/*函数声明*/
/*调用逆序函数,将a的逆序值赋给b*/ /*调用逆序函数,将b的逆序值赋给c */
— 23 —
5.2 函数的参数传递和返回值
➢ 5.2.1 函数的形参与实参
{
int y=0,sign=1;
/*定义sign表示x的符号,定义变量y代表逆序数据*/
if(x<0)
/*当x小于0时取符号及取反*/
— 18 —
5.1 函数的定义和调用
➢ 5.1.2 函数的调用
另外,按函数在语句中的作用来分,可以有以下3种函数调用方式:
函数表达式
函数语句
函数作为实参
函数作为表达式中的一项出 现,以函数返回值参与表达 式的运算。
函数调用的一般形式加上分 号即构成函数语句。
函数作为另一个函数调用的 实际参数出现,即把该函数 的返回值作为实参进行传送。
#include<stdio.h> int main() {
int x=0,y; y=trans(x); printf("y=%d\n",y); printf("x=%d\n",x); return 0; } trans(int a) { a++; printf("a=%d\n", a); return a; }

函数程序设计实验报告

函数程序设计实验报告

函数程序设计实验报告本次实验的目的是通过学习函数的基本概念和使用方法,掌握函数的定义、调用和应用,以及函数的参数传递和返回值的使用。

在实验中,我们将通过编写程序来加深对函数的理解,并通过实际操作来掌握函数的使用技巧。

在程序设计中,函数是一种非常重要的模块化设计方法。

通过将程序中的功能模块化为函数,不仅可以提高代码的复用性和可维护性,还可以使程序的结构更加清晰,易于理解和调试。

因此,掌握函数的使用对于提高程序设计的效率和质量具有重要意义。

在本次实验中,我们首先学习了函数的定义和调用方法。

函数的定义包括函数名、参数列表和返回值类型,通过定义函数可以将一系列操作封装为一个整体,方便在程序中进行调用。

在调用函数时,我们需要使用函数名和实际参数来传递数据,并可以通过返回值来获取函数的执行结果。

通过实际编写程序来定义和调用函数,我们加深了对函数的理解,并掌握了函数的基本使用方法。

除了函数的基本概念和使用方法外,我们还学习了函数的参数传递和返回值的使用。

函数的参数可以分为形式参数和实际参数,形式参数用来接收调用函数时传递的数据,而实际参数则是调用函数时传递的具体数值。

通过实际编写程序来传递参数并使用返回值,我们掌握了函数参数传递和返回值的使用技巧,进一步提高了对函数的理解和应用能力。

在实验中,我们还通过编写一些实际的程序来应用所学的函数知识。

例如,我们编写了求解最大公约数和最小公倍数的函数,通过调用这些函数来实现对两个数的求解。

此外,我们还编写了一些涉及函数的程序,如计算阶乘、斐波那契数列等。

通过编写这些程序,我们不仅加深了对函数的理解,还提高了程序设计和编写代码的能力。

总的来说,通过本次实验,我们深入学习了函数的基本概念和使用方法,掌握了函数的定义、调用和应用,以及函数的参数传递和返回值的使用。

通过实际编写程序来应用所学的函数知识,我们提高了程序设计和编写代码的能力,为以后的学习和工作打下了良好的基础。

函数程序设计实验报告至此结束。

函数和指针程序设计实验总结与反思

函数和指针程序设计实验总结与反思

函数和指针程序设计实验总结与反思通过函数和指针程序设计实验还是反映出比较多的问题,我感觉第八章的指针比较难理解,与前面数组部分联系起来了,上理论课时有一些地方不太明白。

通过此次老师重点讲解函数和指针程序设计实验,加深了我对字符指针和指针数组的掌握,理解会好很多,思路也更清晰很多,但还是要多去理解,也有些东西需要去记忆。

比如一个字符串在内存中是连续存储的,它的开始地址为指向字符串的指针值。

当使用指针作为形参时,实参必须是地址,也应是数组名。

一开始写完这个程序的时候运行出来的输出结果数字与数字之间没有间隔,就是一长串的数字,但是顺序是对的,通过对代码的再次检查,在输出后面加上空格,就得到了正确的格式,这种小问题发现比较难,在打代码的时候就要留心。

我从函数和指针程序设计实验中学习到很多。

我们写代码的时候一定要仔细,定义的函数与调用时的要一致,不要犯一些低级的错误。

总之还是要多去理解代码,多从错误中学习。

c语言函数的嵌套和递归调用方法的实验小结

c语言函数的嵌套和递归调用方法的实验小结

C语言函数的嵌套和递归调用方法的实验小结一、引言在C语言程序设计中,函数的嵌套和递归调用是两种常用的方法,它们在解决问题和实现特定功能时具有重要作用。

本文将结合实验结果,对C语言函数的嵌套和递归调用方法进行总结和分析,旨在加深对这两种方法的理解和应用。

二、函数的嵌套1. 概念与特点函数的嵌套是指在一个函数内部调用另一个函数。

当函数A中调用了函数B,函数B又调用了函数C,函数C又调用了函数D时,就形成了函数的嵌套调用。

函数的嵌套具有以下特点:(1)提高了程序的模块化和可读性,减少了代码的复杂度。

(2)可以在不同的函数之间传递参数,实现更灵活的功能组合。

(3)需要注意函数的声明顺序和作用域,避免出现未声明的函数引用错误。

2. 实验验证为了验证函数的嵌套调用,在实验中我们设计了一个简单的例子:编写两个函数,分别实现计算阶乘和计算组合数的功能,然后在主函数中进行嵌套调用,计算组合数的值。

实验结果表明,函数的嵌套调用可以实现相互依赖的功能模块,在程序设计中具有一定的灵活性和适用性。

三、递归调用1. 概念与特点递归调用是指一个函数在执行过程中调用了自身,从而形成了一种函数调用的循环结构。

通过递归调用,可以使函数不断重复执行,直到满足特定的条件才停止。

递归调用具有以下特点:(1)简化了程序的结构,使代码更加清晰和易于理解。

(2)能够处理一些需要多级嵌套的问题,极大地提高了代码的复用性和灵活性。

(3)需要设置递归调用的终止条件,避免形成无限循环,导致程序崩溃。

2. 实验验证为了验证递归调用的功能和特点,我们设计了一个典型的递归程序:计算斐波那契数列的前n项值。

实验结果表明,递归调用在实现该问题时具有简洁、高效的特点,使得代码易于阅读和理解,优雅地解决了该问题。

四、两种方法的比较1. 灵活性与适用性函数的嵌套调用主要适用于需要实现不同功能模块之间的交互和依赖关系的情况,具有较强的灵活性和可扩展性。

递归调用主要适用于解决问题具有明显的递归结构或需要多级嵌套的情况,具有较好的适用性和简洁性。

c语言程序设计——标准输入函数

c语言程序设计——标准输入函数

c语言程序设计——标准输入函数
scanf(),printf(),均定义在文件stdio.h中,需要在程序开头做预处理声明#include<stdio.h>一、标准输入函数
scanf() 是格式化输入函数,它从标准输入设备读取输入的信息。

1.scanf()的调用格式:scanf(格式化字符串,变量地址表);
2.scanf()使用说明
①scanf()在读操作中自动忽略一个或多个空白字符
②scanf()在读操作中忽略与一个非空白字符相同的字符
③格式化说明符:%开始,后面跟一个或几个规定字符来确定输入输出的内容格式
3.变量地址表:
①变量地址表是需要读入的所有变量的地址,各变量地址之间用逗号隔开,“&”是取
地址符
②对于各个变量,类型说明符是什么,对应的格式化说明符就应该是什么,否则程序会
出现错误或者实际输入的数据与预期输入的数据不同。

③对于数组或者字符串变量,由于数组名和指针本身就是地址,所以在scanf()函数中不
需要加取地址符。

④可以在格式化字符串中的“%”和格式化规定符之间加入一个数字,表示输入读取的
最大位数。

⑤当使用多个scanf()连续输入多个字符变量时,会出现错误。

(完成一次输入时,按下
回车键,此时回车符在缓冲区,在进行下一次输入时,回车符被赋给下一个变量)解决办法:在输入函数之前加入清除函数fflush(),或者在第二个scanf();之前加一个getchar();。

五C语言程序设计

五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)百分制与等级制的对应关系如下:(2)用switch语句实现该功能。

(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语言程序设计》课程实验指导书

《C语言程序设计》课程实验指导书
4.编写课本88页习题6程序,查看运行结果并上交。
三、预习内容
预习教材第3章。
实验四 选择结构程序设计
一、实验目的
1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。
3.熟悉if语句和switch语句。
4.结合程序掌握一些简单的算法。
5.学习调试程序的方法。
二、实验内容
本实验要求编程解决以下问题,然后上机调试运行程序。
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
运行程序,分析运行结果。
(3)将9-14行改为以下的scanf语句,即用scanf函数接收从键盘输入的数据:
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
{int z;
if(x>y) z=x;
else z=y;
return(z);
}
(1)运行程序,若程序有错,则修改错误后继续运行程序,当没有错误信息时输入:2,5并按Enter键,查看运行结果。
(2)将程序的第三行改为:int a;b;c;然后按F9看结果如何,将其修改为int a,b,c;将子程序max的第3,4行合并为一行,运行程序,看结果是否相同。
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
(1)运行此程序并分析运行结果。
(2)在此基础上,修改程序的第9-14行:

c语言程序设计报告

c语言程序设计报告

c语言程序设计报告在计算机科学领域,C语言是一门常用的编程语言,被广泛应用于系统软件开发、嵌入式系统、游戏开发等领域。

本篇报告将探讨C语言程序设计的重要性、基本结构以及其在实际应用中的案例。

一、C语言程序设计的重要性C语言在计算机科学领域的重要性可谓不言而喻。

首先,C语言是一门高效、灵活的编程语言,其语法和特性为程序员提供了广泛的操作空间。

C语言的指针操作、内存管理等特性使得程序员能够更加灵活地控制计算机的底层。

其次,C语言具有跨平台性,可以编写可移植的代码,使得不同系统下的软件能够更好地互相兼容。

此外,C语言还具有丰富的库函数和工具支持,为程序员开发大型应用提供了强有力的基础。

二、C语言程序设计的基本结构C语言程序通常由多个函数组成,其中一个是主函数(main())。

C语言程序的执行从主函数开始,按顺序执行各函数中的语句。

C语言的基本结构由以下几个要素组成:1. 声明与赋值:在程序中我们需要声明变量,即给计算机指定一块内存空间用于存储数据。

声明变量的同时,我们可以给它赋予初值。

C语言支持不同类型的变量,如整型、浮点型、字符型等。

2. 控制结构:C语言提供了多种控制结构,比如条件语句(if-else)、循环语句(for、while)等,使得程序具有判断和重复执行的能力。

控制结构是程序中的重要部分,能够根据条件的不同执行不同的代码块,实现复杂的逻辑运算。

3. 函数定义与调用:在C语言中,函数是一段具有特定功能的代码块,可被多次调用。

函数定义包括函数名、参数列表和函数体,调用函数是通过函数名和参数列表来实现的。

函数的使用能够提高代码的模块化程度,增强代码的可读性和可维护性。

4. 数组:数组是一种存储相同类型数据的集合。

在C语言中,我们可以通过声明和定义数组来存储一组数据,并通过下标来访问数组中的元素。

数组为程序员提供了方便的数据存储和操作方式,提高了算法实现的效率。

三、C语言程序设计的实际应用案例1. 操作系统开发:C语言是操作系统的主要开发语言之一。

c语言自定义函数实验总结

c语言自定义函数实验总结

c语言自定义函数实验总结
C语言自定义函数实验总结
C语言自定义函数实验是在计算机科学与技术等相关专业课程中常见的实验。

它是学习C
语言基础知识的重要实践部分,有助于加深对C语言知识的理解。

本文介绍的C语言自定义函数实验的各个方面内容,帮助读者掌握C语言开发的流程。

C语言自定义函数实验的重点是学习C语言编程技术,其中包括变量声明、条件判断与循环、函数声明与定义、结构体声明与使用、文件和算法等知识;它还涉及如何使用C语言编程开发一个系统程序或应用程序,如何让计算机按照给定的要求运行任务等内容。

本实验旨在帮助学生熟悉C语言程序开发的过程。

在实验过程中,学生需要结合实验目的,用C语言编译器自行编写函数,并根据实验要求详细阐述程序设计方案,调试函数,修改函数等。

此外,学生需要熟练掌握C语言的编写逻辑,把握C语言的语法规则,灵活使用各种数据结构,对程序调试、功能测试等具有一定能力,以此来完成整个流程。

另外应提醒学生要养成良好的程序员习惯,不要事事着急,做适当的调试,使程序顺利完成。

总之,C语言自定义函数实验是一个系统化的学习实验,能够锻炼学生从规定的任务出发,设计程序业务流程、解决问题的能力,而对于C语言学习者来说,也是提升自己水平的好机会。

C++程序设计实验报告-函数的应用

C++程序设计实验报告-函数的应用
} } 调试结果:
3 总结体会 编程需要细心与耐心,要勤于思考寻找最简单的算法;要充分利
用好 debug 观察程序;与同学讨论交流学习心得。
}
void Maxl(double a1,double a2){ if(a1>a2)cout<<"Maxl is "<<a1<<endl; else cout<<"Maxl "<<a2<<endl;
}
void Maxl(double a1,double a2,double a3){ if(a1>a2&&a1>a3)cout<<"Maxl is "<<a1<<endl; else if(a2>a3)cout<<"Maxl is "<<a2<<endl; else cout<<"Maxl is "<<a3<<endl;
《C++程序设计》实验报告
Exercise 3 函数的应用
1 实验目的
(1)掌握函数的定义和调用方法 (2)练习重载函数的使用。 (3)练习使用系统函数。 (4)学习使用 VC++的 debug 调试功能,使用 step into 追踪到函数内部。
2 实验要求
(1)编写一个函数把华氏温度转换为摄氏温度,转换公式如下
调试结果:
(2)编写重载函数 Max1 可分别求两个整数,三个整数,两个双精度数, 三个双精度数的最大值。 源程序代码: #include<iostream> using namespace std; void Maxl(int a1,int a2); void Maxl(int a1,int a2,int a3); void Maxl(double a1,double a2); void Maxl(double a1,double a2,double a3); void Maxl(int a1,int a2){

[练习]C语言实验七、函数程序设计答案

[练习]C语言实验七、函数程序设计答案

实验七 函数及程序结构(二)一、实验目的1.掌握函数的嵌套调用和递归调用2.掌握数组做函数参数的用法3.掌握全局变量和局部变量的用法。

?4.掌握变量的存储类别。

?二、实验内容1.[目的]掌握函数的嵌套调用方法。

[题目内容] 编写程序计算cb a 。

要求设计主函数main()读取a 、b 、c 的值,并调用ratio 函数计算a/(b-c)的值。

如果(b-c)=0那么ratio 就不能计算,因此,ratio 函数调用另一个函数dif ,以测试(b-c)的差是否为零,如果b 不等于c ,dif 返回1,否则返回0。

[输入] a 、b 、c 的值[输出] 计算结果[提示] main 函数调用ratio 函数,ratio 函数调用dif 函数。

三个函数平行定义,嵌套调用。

#include <stdio.h>void main(){float ratio(int x,int y ,int z);int dif(int x,int y);int a,b,c;float d;printf("请输入a,b,c:");scanf("%d%d%d",&a,&b,&c);d=ratio(a,b,c);if(d==0.0) printf("b-c 为零。

");else printf("%d/(%d-%d)=%f\n",a,b,c,d);}float ratio(int x,int y ,int z){if(dif(y ,z)==1) return (float)x/(float)(y-z);else return 0.0;}int dif(int x,int y){if(x==y) return 0;else return 1;}2.[目的]利用标准库提供的随机数功能。

[题目内容]编写程序,帮助小学生练习乘法计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019\11\21 指导教师实验名称函数程序设计一、实验目的1.掌握定义函数的方法。

2.掌握函数实参与形参的对应关系,体会“值传递”的方式。

3.掌握函数的嵌套调用和递归调用的方法。

4.掌握全局变量和局部变量、动态变量和静态变量的概念与使用方法。

5.理解数组作为函数参数的传递方式。

6.理解宏的概念,掌握宏的定义。

7.了解文件包含的概念,掌握其用法。

二、实验内容1.完成程序,求解n!具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。

2.计算s=1的k次方+2的k次方+3的k次方+……+N的k次方。

具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。

3.写出下面3个程序的输出结果,说明每个程序中的各个x有何不同。

4.阅读程序,理解程序的功能,写出预期结果并上机验证。

5.编程并上机调试运行。

(1)编写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。

(2)输入一个整数,将它逆序输出。

要求定义并调用函数rverse(number),它的功能是返回number的逆序数。

如reverse(12345)的返回值是54321。

(3)用递归法求n阶勒让德多项式的值,递归公式为P(x)=1,n=0;P(x)=x,n=1;P(x)= [(2n-1)*x-Pn-1(x)-(n-1)Pn-2(x)]/n, n>1(4)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出上述结果。

(5)带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。

输出交换后的两个值。

(6)编写函数,实现两个字符串的连接,在主函数中输入两个字符串并输出连接后的结果(不要使用库函数中的strcat函数)。

(7)请编写函数fun,它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数,在主函数中输出这些整数,并给出统计的总数。

(8)设有未完成的函数:char GetChar(char c){ char s[]="9038571426";……}字符串s中无序地存储了10个数字字符,没有重复。

函数的功能是:如果字符c不是数字字符,函数原样返回该字符;否则,在s中查找字符C,并返回其在s 中的前一个字符。

如果该字符位于s的最前面(字符'9') ,则返回最后一个字符6'。

如GetChar(4)得到字符'I', GetChar(T)得到字符T。

请完成该函数并在主函数中调用。

*思考题1.请分析不返回值的函数定义与有返回值的函数定义有什么不同,思考这两类函数在实际编程中的作用。

2.请观察本次实验中使用的函数都有几个返回值,当个函数需要有多个返回值时,应该如何处理?3.数组作为函数参数有哪几种方式?这些方式中有没有能解决之前“函数多值返回问题”的方法?4.请分析下面程序的作用。

/*format.h*/#define DIGIT(d) printf("整数输出:%d\n",d)#define FLOAT(f) printf("实数输出:%10.2f\n",f)#define STRING(s) printf("字符串输出:?号s\n",s)/*user's program*/#include<stdio.h>#include<format.h>int main(){int d,num;float f;char s[80];printf("请选择输入格式:1-整数,2-实数,3-字符串: ");scanf("%d",&num);switch(num){ case 1:printf("请输入一个整数: ");scanf("%d",&d);DIGIT(d);break;case 2:printf("请输入一个实数:");scanf("%f",&f);FLOAT(f);break;case 3:printf("请输入一个字符串:");scanf("%s",s);STRING(s);break;default:printf("输入有错误!");}return 0;}三、算法流程图或实验步骤(可根据需要增删、修改)1.#include <stdio.h>f(int n){if (n==1)return(1);elsereturn n*f(n-1);}void main ( ){int x,i;scanf("%d",&i);x=f(i);printf("i!=%d\n",x);}2.#include<stdio.h>long f1(int i,int j){long power=i;int m;for(m=1;m<j;m++)power*=i ;return power;}void main( ){int n,k,m;long sum=0;printf("please input N,k:\n");scanf("%d,%d",&n,&k);for(m=1;m<=n;m++)sum+=f1(m,k);printf("sum is %ld\n",sum); }3.(1)#include<stdio.h>int x=8;void main( ){printf("\nx1=%d",x);{int x=5;printf("\nx2=%d",x);}}(2)#include<stdio.h>int x=8;void main( ){printf("\nx1=%d",x);{int x=5;printf("\nx2=%d",x);}printf("\nx3=%d",x);}(3)#include<stdio.h>void main( ){void sub(void);int i;static int x;int y;i=1;x=8;y=5;printf("i=%d x=%d y=%d\n",i,x,y);sub( );printf("i=%d x=%d y=%d\n",i,x,y); }void sub(void){int i;static int x;i=18;x=20;printf("i=%d x=%d\n",i,x);}4.(1)#include<stdio.h>void sort (int a[]){int i,j,t;for(i=0;i<4;i++)for(j=0;j<4-i;j++)if(a[j]<a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;} }void main( ){int a[5]={5,10,-7,3,7},i;sort(a);for(i=0;i<=4;i++)printf("%4d",a[i]);}结果:10 7 5 3 -7(2)#include<stdio.h>#define SQR(X) X*Xvoid main( ){int a=15,k=1,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}结果:3(1)#include <stdio.h>int prime(int n){int i;for(i=2;i<n;i++)if(n%i==0)break;if(i>=n)return 1;elsereturn 0;}void main(){int n;printf(“Input a integer:”);scanf(“%d”,&n);if(prime(n))printf(“%d is a prime\n”,n);elseprintf(“%d is not a prime\n”,n); }(2)#include <stdio.h>int reverse_num(int n){int m = n%10;int i = n/10;while (i > 0){ int a = i%10; m *= 10; m += a; i /= 10; }return m;}int main( ){ int n = 0;int m = 0;printf("please input a number:\n");scanf("%d", &n);printf("the reverse number is : %d\n",reverse_num(n)); return 0;}(3)#include<stdio.h>double p(int n,double x){if(n==0)return 1;elseif(n==1)return x;elsereturn ((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; }void main(){int n;double x;printf(“Input n and x:\n”);scanf(“%d,%lf”,&n,&x);printf(“%f”,p(n,x));}(4)#include <stdio.h>#include <string.h>int letter=0,digit=0,space=0,other=0;void count(char s[]){int i=0;while(s[i]!=‘\0’){if(s[i]>=‘A’&&s[i]<=‘Z’||s[i]>=‘a’&&s[i]<=‘z’)letter++;elseif(s[i]>=‘0’&&s[i]<=‘9’)digit++;elseif(s[i]==‘‘)space++;else other++;i++;}}void main(){char s[20];printf(“Plese input a string:”);gets(s);count(s);printf(“letter=%d,digit=%d,space=%d,other=%d\n”,letter,digit,space,other); }(5)#include <stdio.h>#define swap(a,b) t=a;a=b;b=t;void main(){int a,b,t;scanf(“%d%d”,&a,&b);swap(a,b);printf(“%d,%d”,a,b);}(6)#include <stdio.h>#include <string.h>void main(){void connect(char s1[],char s2[]);char s1[20],s2[20];printf(“Please input string1:”);gets(s1);printf(“Please input string2:”);gets(s2);connect(s1,s2);printf(“The connected string is:”);puts(s1);}void connect(char s1[],char s2[]){int length1,i,j;length1=strlen(s1);for(i=length1,j=0;s2[j]!=‘\0’;i++,j++) s1[i]=s2[j];s1[i]=‘\0’;}(7)#include<stdio.h>int f(int a[]){int i = 0,n;for(n = 1;n <=1000;n++){if(n%7==0 || n%11==0) //能被7整除或被11整除if(n%77!=0) //不能的同时被7和11整除a[i++]=n; //符合要求的数赋值给数组}return i;}void main(){int a[300],length;length = f(a);for(int i=0; i<length;i++){printf("%-4d",a[i]);if((i+1)%5 == 0) //使输出时每行五个数printf("\n");}printf("\n%d\n", length);}*思考题/*format.h*/#define DIGIT(d) printf("整数输出:%d\n",d)#define FLOAT(f) printf("实数输出:%10.2f\n",f)#define STRING(s) printf("字符串输出:?号s\n",s)/*user's program*/#include<stdio.h>#include<format.h>int main(){int d,num;float f;char s[80];printf("请选择输入格式:1-整数,2-实数,3-字符串: ");scanf("%d",&num);switch(num){ case 1:printf("请输入一个整数: ");scanf("%d",&d);DIGIT(d);break;case 2:printf("请输入一个实数:");scanf("%f",&f);FLOAT(f);break;case 3:printf("请输入一个字符串:");scanf("%s",s);STRING(s);break;default:printf("输入有错误!");}return 0;}四、实验结果及分析1.如第三项程序所示2.如第三项程序所示3. 运行结果:x1=5 /*此处x为全局变量*/x2=3 /*此处x为局部变量*/2) 运行结果:x1=5 /*此处x为全局变量*/x2=3 /*此处x为局部变量*/x3=5 /*此处x为引用外部变量*/3) 此程序中x为静态变量,并且两个变量x所处的域不同运行结果:HELLOi=1 x=10 y=5C PROGRAM1=18 x=20HELLO1=1 x=10 y=54.如第三项程序所示5.如第三项程序所示*思考题1.函数有返回参数和输入参数,是函数最完整的一种形式。

相关文档
最新文档