实验四 函数编程练习
函数练习题及答案
函数练习题及答案函数练习题及答案函数是编程中非常重要的概念之一,它可以将一段代码封装起来,方便重复使用。
在学习函数的过程中,练习题是非常有帮助的,它们可以帮助我们巩固所学的知识,并提供实际应用的机会。
下面是一些函数练习题及其答案,希望对大家的学习有所帮助。
1. 编写一个函数,接受两个参数,返回它们的和。
解答:```pythondef add_numbers(a, b):return a + b```2. 编写一个函数,接受一个字符串作为参数,返回该字符串的长度。
解答:```pythondef get_string_length(s):return len(s)```3. 编写一个函数,接受一个列表作为参数,返回列表中的最大值。
解答:```pythondef get_max_value(lst):return max(lst)```4. 编写一个函数,接受一个整数作为参数,判断该整数是否为偶数,并返回布尔值。
解答:```pythondef is_even_number(n):if n % 2 == 0:return Trueelse:return False```5. 编写一个函数,接受一个字符串作为参数,返回该字符串中的大写字母个数。
解答:```pythondef count_uppercase_letters(s):count = 0for char in s:if char.isupper():count += 1return count```6. 编写一个函数,接受一个列表作为参数,返回该列表中的所有元素的和。
解答:```pythondef get_list_sum(lst):return sum(lst)```7. 编写一个函数,接受一个字符串作为参数,返回该字符串的倒序字符串。
解答:```pythondef reverse_string(s):return s[::-1]```8. 编写一个函数,接受一个整数作为参数,返回该整数的阶乘。
《C语言程序设计》实验四
电子科技大学计算机学院标准实验报告(实验)课程名称C语言程序设计电子科技大学教务处制表电子科技大学实验报告四学生姓名:学号:指导教师:王瑞锦实验地点:实验日期:年月日一、实验室名称:软件实验室二、实验项目名称:函数的应用及预处理三、实验学时:2四、实验原理:使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。
Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。
通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。
五、实验目的1.掌握C语言中定义函数的方法;2.掌握函数传值调用的方法;3.掌握函数传址调用的方法;4.掌握递归函数的设计方法;5.掌握命令行参数的使用方法;6.掌握函数在不同文件中的编译、链接方法。
六、实验内容编程实验,完成以下上机内容,调试运行程序并完成报告1)、教材第七章习题7.4;2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出;3)、教材第七章习题7.11;4)、教材第七章习题7.15;5)、教材第七章习题7.24;6)、求解汉渃塔(tower of Hanoi)问题。
在一块平板上立有3根立柱,从左到右分别标记为A,B,C。
最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。
要求将这些盘从A移到C(可以借助B柱)。
条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。
(提示:利用函数的递归调用);七、实验器材(设备、元器件):pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。
软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。
八、实验步骤:实验编程与运行结果⑴编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。
程序文件名为7_4.c,源程序清单如下:#include<stdio.h>lcd(int a,int b){int temp,num1,num2;num1=a;num2=b;while(num2!=0){temp=num1%num2;num1=num2;num2=temp;}return(a*b/num1);}main(){int t,x,y;printf("Please input two integers:");scanf("%d,%d",&x,&y);if(x>y){t=x;x=y;y=t;}printf("lcd(%d,%d)=%d\n",x,y,lcd(x,y));}运行结果:⑵编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。
Python程序设计实验四
Python程序设计实验四Python程序设计实验四实验四:Python程序设计引言:本实验主要内容是从实践出发,通过编写Python程序来学习与巩固Python程序设计的知识。
通过实验,我们将了解如何定义函数、使用条件语句与循环语句、处理异常等,并能够熟练使用Python语言进行程序设计。
具体实验内容如下:实验目的:1. 熟悉Python程序设计的基本语法和原理;2. 掌握使用Python编写函数、条件语句和循环语句的方法;3.学会处理异常和错误,增强程序的健壮性;4.提高编程能力,培养解决问题的思维。
实验内容:本实验中,我们将通过实例代码演示如何定义函数、使用条件语句与循环语句、处理异常等,具体实验内容如下:一、定义函数1.基本函数定义:我们首先会了解函数的基本定义方法,如何定义函数、传入参数和返回值等;2.函数的类型:这一部分我们会了解内置函数、匿名函数、递归函数等不同类型的函数。
二、条件语句1. if语句:我们将学习使用if语句来进行条件判断,并根据判断结果执行不同的代码;2. elif语句:在需要判断多个条件时,我们可以使用elif语句来进行连续条件判断;3. else语句:当所有条件判断都不满足时,我们可以使用else语句来执行默认的代码。
三、循环语句1. for循环:我们将学习使用for循环来遍历序列,如字符串、列表等,并执行相应的代码;2. while循环:当需要在满足一些条件时一直执行代码块时,我们可以使用while循环。
四、异常处理1. try-except语句:当我们预测到一些代码块可能会产生错误时,可以使用try-except语句来捕获并处理异常;2. finally语句:如果有代码需要被无论是否发生异常都执行的情况,可以使用finally语句。
五、实例演示本次实验中,我们将通过编写几个实例来演示如何使用函数、条件语句与循环语句等。
以一个计算器程序为例,我们将用Python编写一个简单的四则运算程序,可以实现输入两个数和运算符后进行运算,并输出结果。
c实验4作业-函数
实验4函数程序填空1.普通参数本题分值:4题目描述:输入日期的年份和月份,求该月有多少天。
要求编写函数int daynum(int year,intmonth),求出以year为年份、以month为月份的某个月的天数。
以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码://通过日期求某月的天数。
#include<iostream>using namespace std;int main(){int daynum(int year,int month);int y,m,d;cin>>y>>m;if(y<1900 || y>=3000 || m<1 || m>12){cout<<"输入错误!"<<endl;return 0;}d=daynum(__(1)__);//以y、m作实参调用函数,求出该月的天数cout<<"此月的天数为"<<d<<endl;return 0;}int daynum(int year,int month){int days;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break;case 4:case 6:case 9:case 11: days=30; break;case 2: if(year%4==0&&year%100!=0 || year%400==0) days=29;elsedays=28;break;}return __(2)__;}2.字符数组参数本题分值:4题目描述:编写一个函数,用来求字符串s的任意子串。
函数原型为voidSubString ( chars[ ] , intstart , intlen , chard[ ] ) ;其中s是原字符串,d用来存放s中从第start个字符开始(1≤start≤strlen(s)),长度为len的子串。
函数使用练习题
函数使用练习题标题:函数使用练习题正文:一、求和函数编写一个函数,该函数能够接收一个参数n,计算出1到n之间所有整数的和,并返回结果。
解题思路:首先,定义一个变量sum,用于保存求和的结果。
然后,使用循环结构遍历从1到n的所有整数,将每个整数累加到sum中。
最后,返回sum作为函数的输出。
代码实现示例:```pythondef sum_numbers(n):sum = 0for i in range(1, n+1):sum += ireturn sum```二、阶乘函数编写一个函数,该函数能够接收一个参数n,计算出n的阶乘,并返回结果。
解题思路:首先,定义一个变量factorial,用于保存阶乘的结果。
然后,使用循环结构遍历从1到n的所有整数,将每个整数依次相乘,并将结果赋值给factorial。
最后,返回factorial作为函数的输出。
代码实现示例:```pythondef factorial(n):factorial = 1for i in range(1, n+1):factorial *= ireturn factorial```三、找出最大值函数编写一个函数,该函数能够接收一个参数列表numbers,找出其中的最大值,并返回结果。
解题思路:首先,定义一个变量max_num,用于保存最大值。
然后,使用循环结构遍历numbers列表中的每个元素,将每个元素与max_num比较,如果大于max_num,则更新max_num的值。
最后,返回max_num作为函数的输出。
代码实现示例:```pythondef find_max(numbers):max_num = numbers[0]for num in numbers:if num > max_num:max_num = numreturn max_num```四、判断素数函数编写一个函数,该函数能够接收一个参数n,判断n是否为素数,并返回结果。
实验4 分支结构程序设计
1.练习题一编写程序,计算练习一分段函数的值。
(1)用scanf函数输入x的值。
(2)运行程序时,分别按x的值小于0、x的值在0-15之间、x的值大于15三种情况输入数据,检查输出的y值是否正确。
判断x的值在0-15之间可否使用表达式“0<=x<15”?为什么?正确的表示方法是什么?不可。
因为一个条件判断表达式中最多只能有一个运算符。
正确的表示方法是x>=0&&x<15.2.练习题二输入3个数字,判断他们是否能构成三角形,如果不能,输出提示信息;否则判断它是直角、等边、等腰# include <stdio.h>int k=1;void test();void main(){while(k==1){int a,b,c,d;printf("Input a,b,c:");scanf("%d,%d,%d",&a,&b,&c);while ((d=getchar())!='\n'&&c!=EOF);//清空输入缓存区if(!(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a))printf("三条边无法构成三角形。
\n");elseif (a*a+b*b==c*c||a*a==b*b+c*c||b*b==a*a+c*c)printf("这是一个直角三角形\n");else if (a==b&&b==c)printf("这是一个等边三角形\n");else if (a==b||b==c||a==c)printf("这是一个等腰三角形\n");elseprintf("这是一个普通三角形\n");test();}}void test(){ char c;printf("Test again?y/n:");if ((c=getchar())=='n'||c=='N')//只有当输入N或n时才终止程序k=0;}判断三角形的类型时需要用到各种判断条件,入等边三角形的判断条件是3条边相等,该判断条件可否描述为“a=b=c”?为什么?答案:1. 练习题三编写一个程序,输出给定的某年某月的天数。
常见函数编程题
常见函数编程题
(最新版)
目录
1.函数编程的基本概念
2.常见函数编程题的类型
3.如何解决常见函数编程题
4.示例:一个常见的函数编程题
正文
1.函数编程的基本概念
函数编程是一种编程范式,它将计算过程看作是数学函数的求值。
在函数编程中,函数被认为是一种映射关系,即给定输入,输出是唯一确定的。
这种编程范式强调无副作用的计算,即给定相同的输入,总能得到相同的输出,而且没有额外的副作用。
2.常见函数编程题的类型
常见的函数编程题主要包括以下几种类型:
(1)函数实现:给定一个函数的定义,实现该函数的功能。
(2)函数组合:给定一些已知的函数,通过组合这些函数,实现特定的功能。
(3)函数优化:给定一个函数,要求在不改变其功能的前提下,优化其性能,如减少时间复杂度或空间复杂度。
(4)函数式接口:给定一个函数式接口,实现符合该接口规范的函数。
3.如何解决常见函数编程题
解决常见函数编程题的关键在于深入理解函数编程的基本概念和原
则,如无副作用、高阶函数、递归等。
此外,还需要掌握一些常用的函数编程技巧和方法,如柯里化、函数组合、函数管道等。
4.示例:一个常见的函数编程题
假设我们需要实现一个函数,该函数接受一个整数列表,返回列表中所有元素的平方和。
这是一个典型的函数编程题,可以通过以下步骤解决:(1)定义一个函数,接受一个整数列表作为参数。
(2)遍历列表中的每个元素,计算其平方,并将结果累加到一个变量中。
(3)返回累加后的变量。
C语言实验报告 实验四 参考答案
实验四循环结构程序设计2(参考答案)(1)编写程序sy4-1.c,输入n,计算并输出如下多项式的值:S n=1+1/2!+1/3!+1/4!+…+1/n!。
例如输入n为15时,输出1.718282。
算法分析:第一项可以看成1/1!,用循环控制累加n个分式,分式的分母是i!,分子固定为1。
参考答案:# include <stdio.h>void main(){double s=0,p=1;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){p = p * i ; //计算分母i!s = s + 1 / p ; //累加}printf("s=%lf\n",s);}运行结果:(2)编写程序sy4-2.c,输入n,根据以下公式计算s:,例如当n=11时,结果为1.833333。
算法分析:该多项式的分母是累加。
参考答案:# include <stdio.h>void main(){double sn=0,s=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){s = s + i ; //计算分母1~i的累加和sn = sn + 1 / s ;}printf("sn=%lf\n",sn);}运行结果:(3)编写程序sy4-3.c,计算3~n之间所有素数的平方根之和,要求:输入n,输出结果。
例如,输入n 的值是100,则输出结果是148.874270。
注意n应在2~100之间。
算法分析:穷举3~n之间的数找素数,若是素数则累加她的平方根。
参考答案:# include <stdio.h># include <math.h>void main(){int i,j,n,flag;double s=0;scanf("%d",&n);for(i=3;i<n;i++) //穷举3~n之间找素数{flag=1; //假设当前的i是素数,标志变量设为1for(j=2;j<i;j++) //穷举要判断是否是素数的i的除数,范围2~i-1if(i%j==0) //若i能被j整除,则不是素数{ flag=0; break; } //标志变量改为0,并终止循环if( flag == 1 )s = s + sqrt( i ); //若i是素数,则累加sqrt(i)}printf("s=%f\n",s);}运行结果:(4)编写程序sy4-4.c,根据以下公式求p的值,(m与n为两个正整数且m>n)。
实验四 函数
}
int area(int x)
{
return PI*x*x;
}
float area(float x)
{
return PI*x*x;
}
思考:
编写重载函数实现对两个整型数、三个整型数、两个实型数、三个实型数等求最小值。
5.使用内联函数计算长方形的面积。
分析:C++编译器在调用遇到内联函数的地方,会用函数体中的代码替换函数。
5、编写一个用户自定义函数,该函数有一个整数参数,函数的功能是:判断这个整数是否素数,函数的返回值为判断结果。编写一个程序,求3到100之间的所有素数。
解:
阶乘函数定义如下:
double fact(int k)
{
int p=1;
if((k==0)||(k==1))
return p;
else
{
for(int i=1;i<=k;i++)
p=p*i;
return p;
}
}
一个完整的参考程序如下:
#include <iostream.h>
double fact(int);
return p;
}
}
思考:
分别输入n=0,1,3,m=0,1,2测试程序。
试用静态存储变量设计阶乘函数。
3.编写程序,求两个自然数m和n的最大公约数和最小公倍数。
分析:
最大公约数就是能同时整除m和n的最大正整数,可用欧几里德算法(也称辗转相除法)求解。应用欧几里德算法计算两个数的最大公约数的方法是:求两个数(m、n)相除的余数r(r=m/n m>n),当余数不为零时,m取n的值,n取r的值,再求两个数相除的余数,反复进行直到余数为零,除数n是最大公约数。
C语言_实验四、函数程序设计
实验四函数一、实验目的1.掌握函数的定义、函数的说明和调用。
2.掌握函数的参数及其传递方式,函数值的正确返回。
二、实验内容1.[目的]掌握标准库函数的说明和调用方法。
[题目内容]编写一个程序,首先显示一个菜单,然后根据用户的选择,输入数据后,执行相应的操作。
[输入]用户选择和函数自变量值[输出]如下菜单:=======MENU======1.。
sin2.。
cos3.。
pow4.。
sqrt0.。
exit==================[提示]使用标准库函数、多分支选择结构。
2.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。
编写一个程序,从键盘输入任意10个整数,分别调用用户自定义函数来判断这10个整数的奇偶性。
[输入]任意10个整数[输出]这10个整数的奇偶性[提示]在主函数中使用循环结构输入10个整数。
根据子函数的返回值输出相应的判断结果信息。
3.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。
编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。
[输入]任意5个整数[输出]这5个整数的最大值[提示]先用前三个整数调用函数,求出的最大值作为参数之一,再与另两个整数一起求出最大值即为所求。
4.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]nA表示从m各元素中抽出n个元素的排列的个数。
它的计算公式为:m)!(!n m m A n m -=。
编写一个用户自定义函数,该函数有一个整数参数,函数的功能是:求解这个整数的阶乘,函数的返回值为这个整数的阶乘。
函数的练习题及解答
函数的练习题及解答在计算机科学中,函数是一种可重用的代码块,用于执行特定的任务。
通过函数,我们可以将复杂的问题分解为更小的子问题,从而提高代码的可读性和可维护性。
本文将为您提供一些函数的练习题及相应的解答。
练习题一:计算两个数的和编写一个函数,输入两个整数,返回它们的和。
```pythondef add_numbers(a, b):return a + b```解答:调用该函数并打印结果```pythonresult = add_numbers(5, 3)print(result) # 输出结果为8```练习题二:计算平均值编写一个函数,输入一个整数列表,返回列表中所有元素的平均值。
```pythondef calculate_average(numbers):total = sum(numbers)average = total / len(numbers)return average```解答:调用该函数并打印结果```pythonnumbers = [1, 2, 3, 4, 5]result = calculate_average(numbers)print(result) # 输出结果为3.0```练习题三:查找最大值编写一个函数,输入一个整数列表,返回列表中的最大值。
```pythondef find_maximum(numbers):maximum = numbers[0]for num in numbers:if num > maximum:maximum = numreturn maximum```解答:调用该函数并打印结果```pythonnumbers = [1, 5, 3, 9, 2]result = find_maximum(numbers)print(result) # 输出结果为9```练习题四:判断质数编写一个函数,输入一个整数,判断它是否为质数。
质数是指大于1且只能被1和自身整除的数。
实验4-函数
实验4 函数程序填空1.普通参数本题分值:4题目描述:输入日期的年份和月份,求该月有多少天。
要求编写函数int daynum(int year,int month),求出以year为年份、以month为月份的某个月的天数。
以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码://通过日期求某月的天数。
#include<iostream>using namespace std;int main(){int daynum(int year,int month);int y,m,d;cin>>y>>m;if(y<1900 || y>=3000 || m<1 || m>12){cout<<"输入错误!"<<endl;return 0;}d=daynum(__(1)__); //以y、m作实参调用函数,求出该月的天数cout<<"此月的天数为"<<d<<endl;return 0;}int daynum(int year,int month){int days;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break;case 4:case 6:case 9:case 11: days=30; break;case 2: if(year%4==0&&year%100!=0 || year%400==0)days=29;elsedays=28;break;}return __(2)__;}答案:(1) y,m(2) days每空分值:2参考答案:yx3-t1.cpp2.字符数组参数本题分值:4题目描述:编写一个函数,用来求字符串s的任意子串。
实验四参考答案
指针实验题(一)1、改错题:【题目】下面的程序中函数divfun的功能是:对于s指向的一个含有数字字符和非数字字符的字符串(串长不超过80),将其中连续的数字字符转换为一个整数,如果连续的数字字符个数超过4个,则以4个数字字符为一组进行转换。
将转换后生成的整数依次存放到整型数组a中。
函数返回放入a数组中整数的个数。
例如,若输入的字符串为“c123yz45!786*56abc123456789”,则a数组中的数值分别为:(123,45,786,56,1234,5678,9)。
含有错误的源程序如下:#include<stdio.h>/*增加语句 include <ctype.h> */void divfun(char *s,int a[]) /* 去掉void 改为 int */{char *p=s;int i=0,k,sum;while(*p)if(isdigit(*p)){sum=*p-'0'; p++; k=1;while(isdigit(*p)){k++;if(k<=4) {sum=sum+*p-'0'; p++;} /*改为 sum=sum*10+*p-‘0’ */else {a[i++]=sum;k=1; sum=*p-'0'; p++;}}a[i++]=sum;}else p++;return i-1;}main(){char *str;int i,n,num[40]; /*改为 char str[80] */gets(str); n=divfun(str,num);puts(str);for(i=0;i<=n;i++)printf("%6d",num[i]);printf("\n");}注:改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
C程序设计实验指导书实验4函数1的详细答案
【实验题目】函数1【实验目的】1、掌握函数的定义。
2、了解函数原型(函数声明)与函数定义的区别与了解。
3、掌握函数调用的基本方法和返回值的用法。
【实验内容】1、设计一个函数,这个函数有两个形参,一个表示年份,一个表示月份,这个函数返回这个月的天数。
2.求三个数中最大数和最小数的差值。
【程序代码】1#include <iostream>using namespace std;int main(){int x,y,d,m=31,n=30,l=28;cin>>x>>y;//x表示月y表示年switch(x){case 1:case 3:case 5:case 7:case 8:case 10:case 12:cout<<"d="<<m<<endl;break;case 4:case 6:case 9:case 11:cout<<"d="<<n<<endl;break;default :cout<<"d="<<l<<endl;}if(y%4==0&&y%100!=0||y%400==0&&x==2) {d=29;cout<<"d="<<d<<endl;}return (d);}2#include<iostream>using namespace std;int max(int x,int y,int z){int t;t=x>y?x:y;return(t>z?t:z);}int min(int x,int y,int z){int t;t=x<y?x:y;return(t<z?t:z);}int dif(int x,int y,int z){return max(x,y,z)-min(x,y,z);}void main(){int a,b,c;cin>>a>>b>>c;cout<<"Max-Min="<<dif(a,b,c)<<endl; }【体会】通过学习这部分,可以知道函数的声明就像一个目录,可以明显的知道都有什么函数,是程序看起来很有规律。
实验4函数编程练习_C语言程序设计习题解析与实验指导(第2版)_[共3页]
函数编程练习一、实验目的与实验要求(1)掌握正确的函数定义与调用,需要时会正确使用函数声明。
能够正确设置形式参数,理解参数传递及程序的执行流程。
(2)理解各种不同存储类别变量的作用域。
(3)进一步熟悉调试器的使用,会利用调试器进行查错改错,会跟踪程序运行的每一步,观察变量的变化情况。
二、实验内容题(1):编写程序exp4_1.c,先定义一个函数,其原型为:void DrawPic(int n,char c);功能为:打印一个n行的由字符c组成的等腰三角形(方法可参考主教材例4.10)。
主函数中给出3次调用,分别打印出由7行“*”、11行“@”、20行“$”组成的等腰三角形。
尽量使图形居中打印。
通过修改与n对应的实参值,观察n最大值可以取到多少,再超过将无法正确输出等腰三角形。
题(2):编写程序exp4_2.c,验证歌德巴赫猜想:2000以内的正偶数(不包括2)都能够分解为两个质数之和,即验证歌德巴赫猜想对2000以内的正偶数成立。
(算法提示:将整数分解为两部分,然后判断出分解出的两个整数是否均为质数。
若是,则满足题意并输出;否则重新进行分解和判断。
(其中,判断一个整数是否为质数部分用函数实现)。
题(3):用调试器观察程序exp4_3.c的运行过程,并记录各种变量在每一步执行时的变化情况,程序代码如下。
#include <stdio.h>int a = 1;int f(int a){auto int b = 2;static int c = 3;a = a+1;b = b+1;c = c+1;return (a+b+c); /*在此设置断点*/277。
Python程序设计实验四
学院信息工程工程学院班级18软件工程专升本课程名称Pytho n程序设计学号1803120006 姓名郭航日期2018/11/29 实验成绩指导教师刘寒冰实验四函数式编程一、实验目的(1)掌握函数的定义和调用方法;(2)理解函数的参数传递过程以及变量的作用范围;(3)了解函数递归的定义和使用方法。
二、实验内容1、实现isOdd(num)函数,num为整数,如果num为奇数,返回True,否则返回False。
2、实现isNum(num)函数,如果num属于整数、浮点数或复数的类型,则返回True,否则返回False。
选做题:实现isNum(num)函数,num为字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。
3、实现multi()函数,参数个数不限,返回所有参数的乘积。
4、实现isPrime()函数,参数为整数,要有异常处理。
如果整数为质数,则返回True,否则返回False。
5、使用datetime库,对自己的生日输出不少于5种日期格式。
6、以文件方式练习运行七段数码管绘制实例代码7.1和7.2,观察运行结果,理解代码含义。
7、用递归方法编写程序求Fibonacci数列的第n个元素。
无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。
选做题:用递归方法编写一个汉诺塔的移动函数,要求输入汉诺塔的层数,输出整个移动流程。
Hanoi塔问题。
设a,b,c是3个塔座。
开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。
各圆盘从小到大编号为1,2,…,n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。
在移动圆盘时应遵守以下移动规则:规则1:每次只能移动1个圆盘;规则2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上;规则3:在满足移动规则1和2的前提下,可将圆盘移至a,b,c中任一塔座上。
三、实验步骤(提交2、4和7的源代码,并写出实验步骤)实验4.2(1)打开IDLE编辑器,按快捷键Ctrl+N打开一个新窗口,在新窗口中输入如下代码:def isNum(n):n=type(eval(n))if n==type(1):return Trueelif n==type(1.0):return Trueelif n==type(1+1j):return Trueelse:return Falsen=(input("输入:"))print(isNum(n))(2)保存为文件为“实验4.2.py”(3)按快捷键F5运行程序,运行结果如下:实验4.4(1)打开IDLE编辑器,按快捷键Ctrl+N打开一个新窗口,在新窗口中输入如下代码:def isPrime(x):try:x = eval(x)if type(x) == type(1):if x == 1:return Falseelse:for i in range(2, int(x/2) + 1):if x % i == 0:return Falsereturn Trueexcept NameError:n=print("输入有误!请输入整数")else:if type(x)!= int:x=print("你输入的不是一个整数")n = input("请输入整数:")print(isPrime(n))(2)保存为文件为“实验4.4.py”(3)按快捷键F5运行程序,运行结果如下:实验4.7(1)打开IDLE编辑器,按快捷键Ctrl+N打开一个新窗口,在新窗口中输入如下代码:def fib(n):if n < 3 :return 1else:return fib(n-2)+fib(n-1)num = eval(input("Fibonacci数列游戏,输入想知道的第几个数:"))print(fib(num))(2)保存为文件为“实验4.7.py”(3)按快捷键F5运行程序,运行结果如下:四、实验小结通过本章节的学习,掌握了函数的定义和调用,了解了lambda函数,新学习了一种时间日期标准库。
函数编程习题
1、输入x ,计算并输出下列分段函数sign(x)的值,要求定义和调用函数sign(x)实现该分段函数。
⎪⎩⎪⎨⎧-=101)(sign x )0()0()0(<=>x x x输入输出示例(共运行3次)第一次运行:Enter x: 10sign(10)=1第二次运行:Enter x: -5sign(-5)=-1第三次运行:Enter x: 0sign(0)=02、输入一批正整数(以零或负数为结束标志),求其中的奇数和。
要求定义和调用函数even(n)判断数的奇偶性,当n 为偶数时返回1,否则返回0。
输入输出示例Input integer: 12 9 7 18 3 11 20 0The sum of the odd numbers is 303、给定平面任意两个坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2为小数)。
要求定义和调用函数dist(x1,y1,x2,y2)计算两点间的距离。
输入输出示例Input(x1,y1): 10 10Input(x2,y2): 200 100Distance=210.244、计算1!+2!+…+10!的值,要求定义并调用函数fact(n)计算n!,函数类型是double 。
(结果是:4.03791e+006)5、输入精度e ,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e 。
要求定义和调用函数funcos(e,x) 求余弦函数的近似值。
⋯+-+-=!6!4!2!0cos 6420x x x x x 输入输出示例Input e:0.0001Input x:2.1cos(2.1)=-0.5048616、输入2个整数,分别将其逆向输出,要求定义并调用函数fun(n),它的功能是返回n 的逆向值。
例如,fun(123)的返回值是321。
输入输出示例Input m1: 123Input m2:-910123的逆向是321-910的逆向是-197、输入2个正整数m和n(m>=1,n<=10 000),输出m~n之间所有的Fibonacci数。
程序设计基础实验4(简单函数编写)答案
函数[实验目的]1、掌握函数的定义方法。
2、掌握函数的调用及函数声明。
[实验内容和步骤]1、请认真阅读下面的程序,预测程序结果,然后上机运行,请总结结果产生的原因。
#include <stdio.h>void main() {void swap (int, int);int x = 3 , y = 4 ;printf("x = %d,y = %d\n" , x , y ) ;swap( x , y ) ;printf( "x = %d,y = %d\n", x , y ) ;}void swap (int x, int y) {int t ;/*交换x和y的值*/t = x ; x = y ; y = t ;}2、编写一个函数int isPrime(int x),判断一个数是不是素数。
在主函数中输入一个整数,输出是否是素数的信息,下面给出了参考代码,请补充完整。
#include <stdio.h>void main() {int isPrime(int); /*函数声明*/int n;printf("\ninput an integer:");scanf("%d",&n);if( isPrime( n ) ) /*函数的调用*/printf("\n%d is prime.\n",n);elseprintf("\n%d is not prime.\n",n);}int isPrime( int n ) { /*函数的定义*/int flag = 1 , i;for(i = 2; i < n/2; i++)if(n % i == 0) { /*n被i整除了,则n不是素数*///_______;break;}return( flag ) ;}[问题讨论]1、小结函数的定义及调用方法。
实验4 分支语句OK
实验四分支语句内容1.由键盘输入三个数,判断能否构成三角形。
2.某商店“五·一”长假期间购物打折。
规则如下:若每位顾客一次购物,①满1000元,打九折;②满2000元,打八折;③满3000元,打七折;④满4000元,打六折;⑤满5000元,打五折;编写程序,输入购物款,输出实收款。
3.有下列分段函数:编一程序,输入x,输出y的值。
4.设计一个程序,判断从键盘输入的整数的正负性和奇偶性。
5.编写程序,实现下列函数功能:输入一个奖金数,求税率、应交税款及实得奖金数。
6.我国2008年3月1日起至今,个人所得税由每月2000元起征,其计算方法如下:课后作业1.设计一个计算器,可以实现简单的四则运算;选择题:1.以下程序运行时,若从键盘输入6,则输出结果是(b )。
void main(){int x;scanf("%d",&x);if (x-->6)printf("%d\n",x);elseprintf("%d\n",--x);}A. 4B. 5C. 6D. 32.以下程序的运行结果是(c )。
void main(){int m,n=1,t=1;if(t== 0)t=-t;elsem=n>=0?7:3;printf("%d\n",m);}A. 3B. -1C. 7D. 13.对于整型变量a,赋值语句a=(a%3==0?1:0); 与(c )语句不等价。
A.if (a%3= =0) a=1; else a=0;B.if (a%3!=0) a=0; else a=1;C.if (a%3) a=0; else a=1;D.if (a%3) a=1; else a=0;4.以下程序运行的结果是(b )。
void main(){int x,y,z,a;x=y=z=1;a=15;if(!x)a--;else if(y);if(z)a=3;elsea+=4;printf("%d\n",a);}A.15B. 3C. 19D. 145.若已定义int a=1,b=2,t=3; 则执行以下程序段后变量a,b,t的值分别为(d )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2.4 实验4:函数编程练习
1. 给小学生出加法考试题
编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。
程序1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。
程序2 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止。
程序3 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct! You have tried three times! Test over!”,程序结束。
程序4 连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。
程序5 通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。
【思考题】如果要求将整数之间的四则运算题改为实数之间的四则运算题,那么程序该如何修改呢?请读者修改程序,并上机测试程序运行结果。
2.掷骰子游戏
编写程序模拟掷骰子游戏。
已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。
如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。
如果投掷7次仍未赚到该点数,则游戏者输。
【思考题】将游戏规则改为:计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。
其余规则相同,然后请读者重新编写该程序。