实验05函数程序设计
C语言程序设计实验函数

实验5:函数
一、实验目的
1.掌握定义函数的方法;
2.掌握函数实参与形参的对应关系,以及“值传递”的方式;
3.掌握函数的嵌套调用和递归调用的方法;
4.掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
二、实验内容
编写程序,实现如下功能:
1. 编写一个函数void transpose(int a[3][3]),使给定的一个(3×3)二维数组a 转置。
(注意:transpose
函数中不可使用printf 语句打印数组; 打印操作全部在main 函数中进行,打印输出转置前后的数组a 进行比较。
)
2. 用递归方法求n!,递归公式为: 1
)1(1,01{!>-==n n n n n ! 要求用函数fac 来描述该递归过程,在主函数main 中调用fac 函数求n!。
n 值由用户从键盘输入。
三、实验结果记录 第1题上机调试后的最终代码及上机调试结果(截图):
代码:
运行结果:
第2题上机调试后的最终代码及上机调试结果(截图):代码:
运行结果:
四、实验小结:
经过此次实验,我掌握了定义函数的方法、理解了函数调用时实参与形参的关系、学会了递归调用的方法。
同时,我也理解和掌握了全局变量、局部变量的概念与使用,使我收获颇多。
递归的优点:简洁、递归的实现明显要比循环简单得多。
递归的缺点:递归由于是函数调用自身,而函数调用是有时间和空间的消耗的;递归中很多计算都是重复的;调用栈可能会溢出。
实验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;}/*---------*/使用函数判断数的符号使用函数求奇数和程序填空,不要改变与输入输出有关的语句。
函数程序设计实验

实验六函数程序设计实验[实验目的]1. 掌握函数的定义及函数的调用方法。
2. 掌握函数间参数传递和返回值传递的方法。
3. 了解递归调用和嵌套调用的方法。
4.掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。
[实验内容]一、必做题1.以下程序输出结果为__________。
func(int a,int b){ int c;c=a+b;return c;}main(){ int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf(“%d\n”,r);}2. 预测程序的输出结果:____________。
func(int b[]){int j;for (j=0;j<4;j++) b[j]=j;}main(){ static int a[]={5,6,7,8},i;func(a);for(i=0;i<4;i++)printf(“%3d”,a[i]);}3. 以下程序的运行结果是______________。
static int x=20;void f1(int x){ x+=10;printf(“%d…f1()\n”,x);}f2(){ x+=10;printf(“%d…f2()\n”,x);main(){ int x=10;f1(x);f2();printf(“%d…main( )\n”,x);}4. 预测程序的输出结果:____________。
num(){ extern int x,y;int a=15,b=10;x=a-b;y=a+b;return;}int x,y;main(){ int a=7,b=5;x=a+b;y=a-b;num();printf(“%d,%d\n”,x,y);}5. 预测程序的输出结果:____________。
int x1=30,x2=40;main(){ int x3=10,x4=20;sub(x3,x4);sub(x2,x1);printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2); }sub(int x,int y){ x1=x;x=y;y=x1;}6.程序填空:下面函数,多次求两数x,y之积。
高级语言程序设计实验

创新源于实践《高级语言程序设计》课程实验教学手册高级语言程序设计课程组实验手册使用及要求实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规范性、正确性、有效性。
现将实验报告撰写的有关内容说明如下:1、实验前按实验要求手写程序或程序填空,并走查代码,有疑问处标记,上机时在C语言集成开发环境下输入并调试手写程序,分析运行结果。
2、实验结束后填写通过后的源程序和对实验的总结。
3、通过后的源程序可以手写也可以打印粘贴。
实验项目一览表学号:姓名:成绩:实验一熟悉C语言编程环境实验目的:1.熟悉C语言编程环境(VC++、Cfree、Turboc2.0等)2.了解C程序的基本框架3.理解程序调试的思想,能找出并改正C程序中的错误实验内容:1.1 建立自己的文件夹:在磁盘上建立一个文件夹,用于存放自己的C程序1.2 编程示例在屏幕上显示一个短句“Programming in C is fun!”(教师示例,学生模仿并创新,如输出汉字、特除字符等。
学会使用编程环境VC++,启动、编辑、编译、运行、保存、关闭、打开)1.3 编程在屏幕上显示如下网格。
+---+---+| | || | |+---+---+# include <stdio.h>int main(){printf("+---+---+\n");printf("| | |\n");7printf("| | |\n");printf("+---+---+\n");return 0;1.4 调试示例改正下列程序中的错误,在屏幕上显示“Welcome to You !”。
(掌握找错、改错的方法)源程序:# include <stdio.h>int mian(void)//mian改为main{printf(Welcome to You! \n")//括号后加”getchar();return 0;}注:需要修改的语句直接在程序上标注并修改实验总结:学号:姓名:成绩:实验二用C语言编写简单程序实验目的:1.掌握算术表达式和赋值表达式的使用2.掌握基本输出函数的使用3.能够自己编程实现简单的数据处理4. 熟练掌握简单if语句使用5. 熟练掌握for语句的使用6. 掌握简单C程序的查错方法、单步调试实验内容:2.1 调试以下程序,求华氏温度对应的摄氏温度。
函数调用程序实验报告

一、实验目的1. 理解函数的定义和调用过程。
2. 掌握函数参数的传递方式。
3. 学习如何使用函数实现代码的模块化。
4. 提高编程能力和逻辑思维能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容本次实验主要围绕函数的定义、调用和参数传递展开,具体实验内容包括:1. 定义和调用函数2. 函数参数的传递3. 递归函数的应用四、实验步骤1. 定义和调用函数(1)编写一个简单的函数,用于计算两个数的和。
```pythondef sum_of_two_numbers(a, b):return a + b# 调用函数result = sum_of_two_numbers(3, 5)print("The sum of two numbers is:", result)```(2)编写一个函数,用于计算一个数的阶乘。
```pythondef factorial(n):if n == 0:return 1else:return n factorial(n - 1)# 调用函数result = factorial(5)print("The factorial of 5 is:", result)```2. 函数参数的传递(1)使用默认参数传递函数。
```pythondef print_message(message="Hello, world!"): print(message)# 调用函数print_message()print_message("This is a custom message.") ```(2)使用可变参数传递函数。
```pythondef print_numbers(args):for num in args:print(num)# 调用函数print_numbers(1, 2, 3, 4, 5)```3. 递归函数的应用编写一个递归函数,用于计算斐波那契数列的前n项。
C语言实验报告之利用函数进行程序设计

一、实验的目的1、掌握定义函数的方法。
2、掌握函数的实参与形参的对应关系以及“值传递”的方式。
3、掌握函数的嵌套调用及其递过调用的方法。
4、掌握全局变量与局部变量的使用。
二、要求及内容本实验主要完成函数的的应用训练,总共要求完成四个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。
具体要求完成的问题如下:1、编程求100—200之间的素数,该区间的数据从主函数中传出,由一个判别素数的函数进行判别后返回主函数输出。
2、编写一个程序,由主函数传来一个字符串,在函数中分别统计出字母、数字、空格和其它字符的个数,在主函数中打印输出。
3、用递归算法将一个整数n转换成相应的字符串。
4、输入10个学生5门课的成绩,分别用函数实现下列各项功能:(1)计算出每个学生的平均分;(2)计算出每门课程的平均分;(3)找出所有50个分数中最高分数所对应的学生和课程。
三、算法设计思想或程序流程图1、根据素数是不能被2到本身的开平方之间的任何一个整数整除的整数,设计一个判别一个整数是不是素数的函数,即为“sushu”,然后在主函数中调用并求出100—200中的所有素数。
2、编写一个判断字母、数字、空格以及其他字符的函数,即“jisuan”,从主函数中输入一个字符串,调用函数对其计算相关字符的个数。
3、从主函数中输入一个n。
设计函数“zfc”,如果n整除10为0,则输出其对应的ASCLL码,如果不为0,则继续返回函数“zfc”,即递归调用,直到为0为止。
主函数中,判断n是否大于0,若不大于0,则输出时求出n的相反数并在其之前加一个“-”号。
4、设计一个“score”函数,结合for循环语句和数组计算每个学生和每门课程的平均分并且找出所有50个分数中最高分数所对应的学生和课程,然后再main函数中调用。
四、所使用的软硬件平台软件平台:Microsoft Windows XP专业版SP3,Microsoft Visual C++ 6.0。
c语言程序设计5(函数)

参数的传递
1. 函数调用时,被调函数中的形参被分配 临时的存储单元,实参的值赋给形参变量 2. 实参可以是常量、变量或表达式 3. 实参的个数、类型和顺序必须与形参一致 4. 形参与实参各占一个独立的存储空间,调 用结束后,形参单元被释放
形参值的改变不会影响实参-----值传递
例:P134 main( ) { int v1=10, v2=20; printf(“v1=%d v2=%d\n”,v1,v2); printf(“_ do swap _\n”); swap(v1,v2); printf(“v1=%d v2=%d\n”,v1,v2); } void swap(int x, int y) { int temp; v1=10 v2=20 temp=x; _ do swap _ x=y; y=temp; v1=10 v2=20 }
自定义函数的应用实例
P136 例3:输出“九 九表”。 它是一个
9行9列的二维表格,
加上一个行标题和一
个列标题,显示出来
应该是10行10列。
#include <stdio.h> void drawLine(int n,char ch); /* 连续显示n个ch字符 */ main() { int i,j; printf("\n 9.9 table\n"); /* 显示表名 */ drawLine(30, '='); /* 显示每列的标题 */ printf("\n 1 2 3 4 5 6 7 8 9"); drawLine(30, '='); for (i=1; i<=9; i++) { /* 显示每行的内容 */ printf("\n%3d", i); for (j=1; j<=9; j++) printf("%3d", i*j); if (i<9) drawLine(30, '-'); else drawLine(30, '='); } void drawLine(int n, char ch) /*连续显示n个ch字符*/ } { int i; putchar('\n'); /*换行*/ for (i=1; i<=n; i++) putchar(ch); /*连续显示n个字符ch*/ }
C语言程序设计实验五 参考答案

答案:
#include<stdio.h>
void main()
{
int i,j,num=0;
for(i=3;i<=1000;i++)
{
for(j=2;j<=1000;j++)
if(i%2==0)
break;
5-4从键盘输入一个整数n,计算2n+1与++n之和。要求计算两数之和用函数实现。
答案:
#include<stdio.h>
void main()
{
int a;
int sum(int n);
printf("input n:\n");
scanf("%d",&a);
sum(a);
}
int sum(int n)
if(i%2!=0)
{
printf("%5d",i);
num++;
if(num%10==0)
printf("\n");
}
}
printf("\n");
}
*************************************************************************************************************实验三*******************************************
c语言程序设计实验五参考答案实验解答实验五参考答案编程语言c语言吧c语言答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算两个复数之积(调试示例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;}/*---------*/使用函数判断数的符号程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入1个整数 x,若 x 大于0,sign(x) = 1;若 x 等于0,sign(x) = 0;否则,sign(x) = -1,最后输出sign(x)的值。
要求定义和调用函数sign(x)实现该分段函数, 函数形参x的类型是int,函数类型是int。
输入输出示例:括号内是说明输入3 (repeat=3)10 (x=10)-5 (x=-5)0 (x=0)输出sign(10) = 1 (x=10时sign(x)的值为1)sign(-5) = -1 (x=-5时sign(x)的值为-1)sign(0) = 0 (x=0时sign(x)的值为0)#include <stdio.h>int sign(int x);int main(void){int x, y;int repeat, ri;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){scanf("%d",&x);/*---------*/printf("sign(%d) = %d\n", x, y);}return 0;}/*---------*/使用函数求奇数和程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一批正整数(以零或负数为结束标志),求其中的奇数和。
要求定义和调用函数even(n) 判断数的奇偶性,当n为偶数时返回1,否则返回0,函数形参n的类型是int,函数类型是int。
输入输出示例:括号内是说明输入2 (repeat=2)12 9 7 18 3 11 20 011 8 6 17 2 10 19 -1输出The sum of the odd numbers is 30.The sum of the odd numbers is 47.#include <stdio.h>int even(int n);int main(void){int n, sum;int ri, repeat;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){scanf("%d",&n);/*---------*/printf("The sum of the odd numbers is %d.\n", sum);}return 0;}/*---------*/使用函数计算两点间的距离程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:给定平面任意两点坐标 (x1, y1) 和 (x2, y2),求这两点之间的距离(保留2位小数)。
要求定义和调用函数 dist(x1, y1, x2, y2)计算两点间的距离,函数形参x1、y1、x2和y2的类型都是double,函数类型是double。
输入输出示例:括号内是说明输入1 (repeat=1)10 10 (x1=10, y1=10)200 100 (x2=200, y2=100)输出Distance = 210.24#include <stdio.h>#include <math.h>double dist(double x1, double y1, double x2, double y2);int main(void){int repeat, ri;double distance, x1, y1, x2, y2;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);/*---------*/printf("Distance = %.2f\n", distance);}return 0;}/*---------*/使用函数统计素数并求和程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入2个正整数 m 和 n(1<=m,n<=500),统计并输出 m 到 n 之间的素数的个数以及这些素数的和。
素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
要求定义并调用函数 prime(m) 判断m是否为素数,当m为素数时返回1,否则返回0,函数形参 m 的类型是int,函数类型是int。
输入输出示例:括号内是说明输入:1 (repeat=1)1 10 (m=1, n=10)输出:Count = 4, sum = 17 (1到10之间有4个素数:2,3,5,7)#include <stdio.h>#include <math.h>int main(void){int count, i, m, n, sum;int repeat, ri;int prime(int m);scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){scanf("%d%d", &m, &n);/*---------*/printf("Count = %d, sum = %d\n", count, sum);}return 0;}/*---------*/使用函数统计一个整数中数字的个数程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:读入1 个整数in,再输入一个数字digit(0≤digit<10),统计并输出整数 in 中数字 digit 的个数。
要求定义并调用函数countdigit(number,digit),它的功能是统计整数 number中数字 digit 的个数 ,函数形参number和digit的类型是int,函数类型是int。
例如,countdigit(10090,0)的返回值是3。
输入输出示例:括号内是说明输入2 (repeat=2)21252 2 (number=21252, digit=2)-1111 9 (number=-1111, digit=9)输出Number of digit 2: 3 (21252中有3个2)Number of digit 9: 0 (-1111中有0个9)#include <stdio.h>int main(void){int count, digit, in;int repeat, ri;int countdigit(int number, int digit);scanf("%d",&repeat);for(ri = 1; ri <= repeat; ri++){scanf("%d%d", &in, &digit);/*---------*/printf("Number of digit %d: %d\n", digit, count);}return 0;}/*---------*/使用函数找水仙花数程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入2 个正整数 m 和 n(1<=m,n<=1000),输出 m 到 n 之间的所有水仙花数。
水仙花数是指各位数字的立方和等于其自身的数。
要求定义并调用函数is(number)判断 number 的各位数字之立方和是否等于其自身,若相等则返回1,否则返回0,函数形参 number 的类型是int,函数类型是int。