2024年C语言实验七函数实验报告_第1页
2024年C语言实验七函数实验报告_第2页
2024年C语言实验七函数实验报告_第3页
2024年C语言实验七函数实验报告_第4页
2024年C语言实验七函数实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C語言程序设计实验报告试验題目试验七函数试验目的掌握函数定义的措施;掌握函数实参与形参的對应关系,以及值传递的方式。掌握函数的嵌套调用和递归调用的措施;掌握全局变量和局部变量、動态变量、静态变量的概念和使用措施;學习對多文献的程序的编译和运行。试验内容和环节写一种鉴别素数的函数。在主函数输入一种整数,输出与否是素数的信息。#include<stdio.h>voidmain(){intprime(int);intm,flag=1;charc;while(flag){printf("Enterthem:\n");scanf("%d",&m);if(prime(m)) printf("%d是素数!",m);else printf("%d不是素数!",m);printf("\nContinueornot?(Y&N)\n");scanf("%c",&c);if(c=='Y') flag=1;else flag=0;}}intprime(intm){inti,flag=1;for(i=2;i<m&&flag;i++)if(m%i==0) flag=0;returnflag;}2、用一种函数来实現将一行字符串中最長的單詞找出。此行字符串從主函数传递給该函数。(1)把两個函数放在同一种程序文献中,作為一种文献進行编译和运行。#include<stdio.h>#include<string.h>voidmain(){intword(char);intlongest(char[]);inti;charstring[80];printf("Enteraline:\n");gets(string);printf("Thelongestwordis:\n");for(i=longest(string);word(string[i]);i++) putchar(string[i]);putchar('\n');}intword(charc){if(c>'a'&&c<'z'||c>'A'&&c<'z')return1;else return0;}intlongest(charstring[]){intlen=0,length=0,flag=1,place=0,point,i;for(i=0;i<=strlen(string);i++) if(word(string[i])) if(flag) {point=i;flag=0;} elselen++; else {flag=1; if(len>length) {length=len;place=point;} len=0; }returnplace;}(2)、把两個函数分别放在两個程序文献中,作為两個文献進行编译。注:下图為文献内容(文献名分别為8__10.c和file2.c)3、用递归法讲一种整数n转换成字符串。#include<stdio.h>voidmain(){voidconvert(int);intm;printf("Enterintm:\n");scanf("%d",&m);convert(m);putchar('\n');}voidconvert(intm){inti;if((i=m/10)!=0)convert(i);printf("%c",m%10+'0');}4、求两個整数的最大公约数和最小公倍数。(1)不用全局变量,分别用两個函数求最大公约数和最小公倍数。两整数在主函数中输入,传递給函数1,以求出最小公倍数,然後再与两個整数一起作為实参传給函数2,以求出最小公倍数,返回主函数输出最大公约数和最小公倍数。#include<stdio.h>voidmain(){intgreat_commom(intx,inty);intlow_common(intm,intn,inta);inta,b,m,n;//用m,n,a,b分别代表两個数及其最大公约数和最小公倍数printf("Pleaseentertwonumbers:\n");scanf("%d%d",&m,&n);a=great_commom(m,n);b=low_common(m,n,a);printf("最大公约数為:%d;\n最小公倍数為:%d。\n",a,b);}intgreat_commom(intx,inty){inti,s;for(i=1;i<=(x>y?y:x);i++)if(x%i==0&&y%i==0) s=i;returns;}intlow_common(intm,intn,inta){ return(m*n/a);}(2)用全局变量的措施,分别用两個函数求最大公约数和最小公倍数,但其值不由函数带回。将最小公倍数和最大公约数都设為全局变量,在主函数输出他們的值#include<stdio.h>inta=0,b=0; //最大公约数和最小公倍数voidmain(){voidgreat_commom(intx,inty);voidlow_common(intm,intn,inta);intm,n; //用m,n分别代表两個数printf("Pleaseentertwonumbers:\n");scanf("%d%d",&m,&n);great_commom(m,n);low_common(m,n,a);printf("最大公约数為:%d;\n最小公倍数為:%d。\n",a,b);}voidgreat_commom(intx,inty){inti;for(i=1;i<=(x>y?y:x);i++)if(x%i==0&&y%i==0) a=i;}voidlow_common(intm,intn,inta){ b=(m*n)/a;}5、写一种函数,输入一种拾六進制的数,输出對应的拾進制数。#include<stdio.h>#include<string.h>#include<math.h>intflag=1;voidmain(){intconvert(charstring[]);charstring[100];ints,flag=1;printf("Pleaseenteraline:\n");gets(string);s=convert(string);if(flag)printf("s(D)=%d.\n",s);elseprintf("Thenumberisnotaox.\n");}intconvert(charstring[]){inti=strlen(string)-1,sum=0;for(;i>=0;i--) if(string[i]<='9'&&string[i]>='0') sum=sum+(string[i]-'0')*pow(16,(i)); elseif(string[i]>='A'&&string[i]<='Z') sum=sum+(string[i]-'A')*pow(16,(i)); elseif(string[i]>='a'&&string[i]<='z') sum=sum+(string[i]-'a')*pow(16,(i)); elseflag=0;returnsum;}试验分析在试验過程中,當使用数组名作為函数的参数時,忘掉了不需要加[n],导致编译過程出錯而又摸不著頭脑,使用数组作為函数参数時,只需在调用函数時写数组名即可;试验的第一种内用(判断素数),由于采用了循环語句使两個scanf持续,這种状况往往會导致回車键被第二個scanf所接受,导致第二個scanf無效,程序錯误;通過试验,愈加理解C語言,也明白了C語言中格式符的严格控制;试验三中,采用convert函数(借鉴了答案)巧妙地将一种整数转化成了對应的字符,应當积累這种經验。试验感想1、自已写的程序效率不高,對变量没有很好的做到全局统筹,有关C的注释和書写格式控制不是很好,這需要後来多多從他人的程序中慢慢领悟;2、此前除了做課後习題外,几乎没有其他行動,這一點我想在後来的學习中要注意改正,學习C語言首要的就是上机操作,某些書上的不懂的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论