C语言实验报告五
C程序设计实验报告
实验项目:6.3.1-1、6.3.1-2、6.3.1-3、6.3.1-4、6.3.2-1、6.3.3-1。选做:6.3.3-2
姓名:林顺显
实验地点:家里
实验时间:2020年4月21日
一、实验目的与要求
1、熟练地掌握函数的定义方法和调用规则。
2、掌握在C语言程序中主调函数和被调用函数之间进行数据传递的规则。
3、了解函数的返回值及其类型,并正确使用它。
4、了解局部变量和全局变量的作用域及它们与存储分类的关系,理解变量的存在性和可见性的概念
5、练习递归函数的使用
二、实验内容
1、实验练习:6.3.1-1
1问题的简单描述:已知三角形三边长,求其面积
2实验代码:
#include<stdio.h> #include<math.h> float area(float a,float b,float c) { float s,p,area; s=(a+b+c)/2; p=s*(s-a)*(s-b)*(s-c); return(area); } main() { float a,b,c,ts; scanf("%f%f%f",&a,&b,&c); ts=area(a,b,c); if((a+b>c)&&(a+c>b)&&(b+c>a)) printf("area=%f\n",ts); else printf("Data error!"); }
3问题分析:无。
2、实验练习:6.3.1-2
1问题的简单描述:求N的阶乘。
2实验代码:
#include"stdio.h" #define N 5 long function(int i) { static long f=1; f=f*i; return f; } main() { long product; int i; for(i=1;i<=N;i++) { product=function(i); printf("%d的阶乘为%d\n",i,product); } }
3问题分析:无。
3、实验练习:6.3.1-3
1问题的简单描述:求两个整数的最大公约数。
2实验代码:
#include<stdio.h> int gcd(int a,int b) { int temp; int remainder; if(a<b) { temp=a;a=b;b=temp; } remainder=a%b; while(remainder!=0) { a=b,b=remainder; remainder=a%b; } return b; } main() { int x,y; int fac; printf("Please input two integers:"); scanf("%d%d",&x,&y); fac=gcd(x,y); printf("The great common divisor is %d",fac); }
3问题分析:在while循环中要加入remained=a%b;不然会进入死循环。
4、实验练习:6.3.1-4
1问题的简单描述:打印出指定图形
2实验代码:
#include<stdio.h> void trangle(int n) { int i,j; for(i=1;i<=n;i++) { { for(j=0;j<=n-i;j++) printf(" "); } { for(j=1;j<2*i;j++) printf("*"); } putchar('\n'); } } main() { int n; printf("请输入一个整数:"); scanf("%d",&n); printf("\n"); trangle(n); }
3问题分析:无。
5、实验练习:6.3.2-1
1问题的简单描述:求500以内的所有亲密数对。
2实验代码:
#include<stdio.h> int facsum(int m) { int sum=1,f=2; while(f<=m/2) { if(m%f==0) { sum+=f; } f++; } return sum; } int main() { int m=3,n,k; while(m<=500) { n=facsum(m); k=facsum(n); if(m==k&&m<=n) { printf("%d,%d\n",m,n); } m++; } }
3问题分析:无。
6、实验练习:6.3.3-1
1问题的简单描述:编写计算x的y次幂的递归函数,并在主程序中实现输入输出。
2实验代码:
#include<stdio.h> long getpower(int x,int y) { if(y==1) return x; else return x*getpower(x,y-1); } int main() { int num,power; long answer; printf("请输入一个数:"); scanf("%d",&num); printf("输入幂次方:"); scanf("%d",&power); answer=getpower(num,power); printf("%d^%d=%ld\n",num,power,answer); return 0; }
3问题分析:刚开始用%d没有成功,后面换成%ld就可以了。
7、实验练习:6.3.3-2
1问题的简单描述:编写计算学生年龄的递归函数
2实验代码:
#include<stdio.h> int age(int n) { int c; if(n==1) { c=10; } else { c=age(n-1)+2; } return c; } void main() { int n=5,sage; sage=age(n); printf("第%d位学生的年龄为%d\n",n,sage); }
3问题分析:无。
四.实验小结
这次的实验内容比较多,但大部分都可以完成,主要还是选做题有比较多不会。而且通过这次实验,对递归函数有了更深刻的了解。

浙公网安备 33010602011771号