C语言期末实验之函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高级语言程序设计
实验报告
实验编号 1505B000106 实验名称函数调用
实验地点软件实验室(二)
班级18计嵌2
学号20180505216
姓名王尊
一、实验目的
1.设计函数的参数与返回值并实现函数的调用;
2.分析递归函数的执行过程,设计递归函数。
二、实验原理
1.真正的编程工作中,我们需要完成的代码将非常大,所以将代码合理的分为不同的区块,每一个区块具有相对独立的功能,并为其它程序提供对外调用的参数和返回值。
由多个区域组成的程序才会让程序阅读者更方便的理解程序设计的理念。并可以通过函数让功能被封装起来,使得一个功能可以在不同的情况下被其它功能调用,函数的概念就是这样产生的。
2.当我们调用函数时,对其传入的参数和函数体内接收到的参数其实并不是同一个变量。调用函数时向函数传入的参数称作实际参数,简称实参,而函数体内部用于接收外部调用时传入的参数的参数称为形式参数,简称形参。
3.根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。
如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。
3.
三、实验内容
问题1
输入一批正整数(以零或负数为结束标志),求其中的奇数和。要求定义和调用函数even(n)判断数的奇偶性,当n为偶数时返回1,否则返回0。
#include "stdio.h"
int even(int n){
if(n%2==0)return 1;
else return 0;
}
int main()
{
int n, s = 0;
scanf("%d", &n);
while (n != 0) {
if (even(n) == 0) {
s += n;
}
scanf("%d", &n);
}
printf("%d\n", s);
return 0;
}
问题2
编写一个函数int same_set(int a[],int b[],int len),该函数检查相等长度的两个数组是否包含相同的元素,若包含相同的元素,则返回1,否则返回0。其中参数len 是数组a与数组b的元素个数。不考虑元素的顺序,如果元素重复,重复次数也相同。在main函数中读入两个整数数组,测试该函数。
#include "stdio.h"
int same_set(int a[],int b[],int len){
int i;
for(i=0;i if(a[i]!=b[i])return 0; else return 1; } int main(int argc, char* argv[]) { int m,n,i; scanf("%d",&n); int a[50],b[50]; for(i=0;i scanf("%d",&a[i]); for(i=0;i scanf("%d",&b[i]); m=same_set(a,b,n); printf("%d\n",m); return 0; } 问题3 输入一个正整数n,生成一张阶乘表,输出1! ~n! 的值。要求定义和调用函数fact(n)计算n!,函数类型为double。 #include "stdio.h" double fact(int n){ if(n==0) return 1; else return n*fact(n-1); } int main() { int i,n; scanf("%d",&n); for(i=1;i printf("%d!=%.0lf\n",i,fact(i)); return 0; } 问题4 编写一个函数isprime(n).判断整数n是否为素数。编写程序使用此函数,当输入一个整数时,对它进行判断,当为素数时,输出1;否则,输出0。 #include "stdio.h" #include "math.h" int isprime(int n){ int m=(int)sqrt(n); int i; for(i=2;i<=m;i++){ if(n%i==0)return 0; else return 1; } } int main() { int n,t; scanf("%d",&n); t=isprime(n); printf("%d\n",t); return 0; } 问题5 编写一个函数sum(i),将输入的整型形参数i(i≥0)的各位求和,返回求和结果。在main()函数中测试此函数,从键盘输入整数n(n∈[1,20]),然后再输入n个非负整数,对于每一个非负整数调用sum函数求各位数和,将结果输出到屏幕。 #include "stdio.h" int hu(int n) { int i,m=0; for(i=1;;i++) { m+=n%10; n=n/10; if(n<1)break; } return(m); } int main() { int n,i; int a[100]; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); }