函数实验报告
时间:2021-09-20 来源:博通范文网 本文已影响 人
实验 5
函数 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤:
实验内容:实验指导书中的实验八 实验步骤:
1.1.实验内容的第 1 题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作:
点击快捷键 F10 开始调试,在下方窗口输入要观察的变量,回车显示跟踪变量的值。将光标放于函数定义前点击单步调试按钮,出现红点后即可进入函数,退出调试再点一下调试按钮或者按 Shift+F5 退出。
提问(1),请在下面粘贴运行结果画面:
实参 a 是否为同一变量?实参 a 不是同一变量,而是两个不同的变量分别出现在两个不同的函数中。
提问(2),请请在下面粘贴运行结果画面:
提问(3),观察结果有何变化? 大小无法比较,系统自动给出一个随机数。
通过本题,可以得出什么结论? 在主函数之前定义了变量,则在之后编译时不用再定义;而局部变量只作用于局部函数,但能影响全局变量。若定义在主函数之后则需要加extern声明外部变量的作用域的作用范围,否则得到的是随机数。
2.2 实验内容部分第 2 题源程序代码,请贴图:
程序运行结果画面,请贴图:
2.3 实验内容部分第 3 题源程序代码,请贴图:
程序运行结果画面,请贴图:
2.4 选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图
2.5 选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图
3.实验小结 掌握了函数的调用方法和多模块程序设计,函数的递归和嵌套调用各种变量的定义范围和使用方法,形参和实参的对应关系以及值传递调用函数的方法。
实验七 函数
一、实验目的
1.掌握定义函数的方法。
2.掌握函数实参及形参的对应关系以及“值传递”方式。 3.掌握函数的嵌套调用和递归调用的方法。
4.掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。 5.学会对多文件程序的编译和运行。
二、实验内容
1.写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应准备以下测试数据:17,34,2,1,0,分别输入数据,运行程序并检查结果是否正确。 其程序为:
#include int main() {int prime(int); int n; printf("input an integer:\\\\n"); scanf("%d",&n); if(prime(n)) printf("%d is a prime.\\\\n",n); else printf("%d is not a prime.\\\\n",n); return 0; }
int prime(int(n)) {int flag=1,i; for(i=2;i
2.用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。(1)把两个函数放在同一个程序文件中。
(2)将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 其程序为:
#include #include int main() { int alphabetic(char); int longest(char[]); int i; char line[100]; printf("input one line:\\\\n"); gets(line); printf("The longest word is:"); for(i=longest(line);alphabetic(line[i]);i++) printf("%c",line[i]); printf("\\\\n"); return 0; }
int alphabetic(char c) {if((c>=\\"a\\"&&c=\\"A\\"&&c
int longest(char string[]) {int len=0,i,length=0,flag=1,place=0,point; for(i=0;i
len++; else {flag=1; if(len>=length) {len=len; place=point; len=0;
} } return(place); } 其运行结果为:
3.用递归法将一个整数n转换成字符串。例如输入483.应输出字符串“483”。n的位数不确定,可以是任意的整数。 其程序为:
#include int main() {void convert(int n); int number; printf("input an integer:"); scanf("%d",&number); printf("output:"); if (number
void convert(int n) {int i; if((i=n/10)!=0) convert(i); putchar(n%10+\\"0\\"); putchar(32); } 其运行结果为:
4.求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一个函数根据求出的最大公约数求最小公倍数。分别用下面的两种方法编程。 (1)不用全局变量,在主函数中输入两个数和输出结果。 (2)用全部变量的方法,数据的传递通过全部变量的方法。
不用全局变量其程序为: #include int main() {int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%d\\\\n",h); l=lcd(u,v,h); printf("L.C.D=%d\\\\n",l); return 0; }
int hcf(int u,int v) {int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r;} return(v); }
int lcd(int u,int v,int h) { return(u*v/h); } 其运行结果为:
使用全局变量,其程序为: #include int Hcf,Lcd; int main() {void hcf(int,int); void lcd(int,int); int u,v; scanf("%d,%d",&u,&v); hcf(u,v); lcd(u,v);
printf("H.C.F=%d\\\\n",Hcf); printf("L.C.D=%d\\\\n",Lcd); return 0; }
void hcf(int u,int v) {int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r; } Hcf=v; }
void lcd(int u,int v) { Lcd=u*v/Hcf; } 其运行结果为:
5.写一个函数,输入一个十六进制数,输出相应的十进制数。 其程序为:
#include # define MAX 1000 int main() {int htoi(char s[]); int c,i,flag,flag1; char t[MAX]; i=0; flag=0; flag1=1; printf("input a HEX number:"); while((c=getchar())!=\\"\\\\0\\"&&i=\\"0\\"&&c=\\"a\\"&&c=\\"A\\"&&c
printf("decimal number %d\\\\n",htoi(t)); printf("continue or not?"); c=getchar(); if(c==\\"N\\"||c==\\"n\\") flag1=0; else {flag=0; i=0; printf("\\\\ninput a HEX number:"); } } } return 0; }
int htoi(char s[]) {int i,n; n=0; for(i=0;s[i]!=\\"\\\\0\\";i++) {if(s[i]>=\\"0\\"&&s[i]=\\"a\\"&&s[i]=\\"A\\"&&s[i]
6、编程实现模拟计算机完成加、减、乘、除运算;加减乘除分别通过调用函数实现 其程序为:
#include float add(float x,float y); float minus(float x,float y);
float chen(float x,float y); float chu(float x,float y); void main() { float a,b,c; char ch; printf("please enter a and ch and b:\\\\n"); scanf("%f %c %f",&a,&ch,&b); switch (ch)
{
case\\"+\\":c=add(a,b);break; printf("a+b=%4f\\\\n",c);
case\\"-\\":c=minus(a,b);break; printf("a-b=%4f\\\\n",c);
case\\"*\\":c=chen(a,b);break; printf("a*b=%4f\\\\n",c);
case\\"/\\":c=chu(a,b);break; printf("a/b=%4f\\\\n",c);
default :printf("enter data error!\\\\n");
} printf("所求得的结果为:%4f\\\\n",c); printf("\\\\n"); }
float add(float x,float y) {float c; c=x+y; return (c); }
float minus(float x,float y) {float d ; d=x-y; return (d); }
float chen(float x,float y) {float e ; e=x*y; return (e); }
float chu(float x,float y) {float f ;
f=x/y; return (f); } 其运行结果为:
这真是一篇妙不可言的文章。
作者其他作品也很赞。