C程序设计函数实验报告.docx
- 文档编号:8031258
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:11
- 大小:49.14KB
C程序设计函数实验报告.docx
《C程序设计函数实验报告.docx》由会员分享,可在线阅读,更多相关《C程序设计函数实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
C程序设计函数实验报告
贵州大学
《C程序设计实验》
实验报告
实验名称:
函数
专业
电子信息科学与技术
班级
姓名
学号
教师
2010年
一、实验目的:
(1)掌握定义函数的方法;
(2)掌握函数实参与形参的对应关系以及“值传递”的方式;
(3)掌握函数的嵌套调用和递归调用的方法;
(4)掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
(5)学习对多文件程序的编译和运行。
二、实验环境:
Windows7、MicrosoftVisualStudio2008
三、实验内容:
编程序并上机调试运行。
(1). 写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。
本程序应当准备以下测试数据:
17、34、2,1、0。
分别输入数据,运行程序并检查结果是否正确。
由题意,得程序为:
#include
voidmain()
{
intn;
boolprime_number(intx);
printf("Pleaseenteraninteger.\n");
scanf("%d",&n);
if(prime_number(n))
{
printf("%disaprimenumber\n",n);
}
else
{
printf("%disn'taprimenumber\n",n);
}
}
boolprime_number(intx)
{
boolflag=true;
for(inti=2;i { if(x%i==0) flag=0; } returnflag; } 运行情况: 分析: 程序开始: boolprime_number(intx);声明一个函数,函数返回值为bool型,函数名为prime_number,函数带一个int型参数。 scanf("%d",&n);从屏幕输入数n。 if(prime_number(n))调用函数,传入参数n。 boolprime_number(intx) { boolflag=true; for(inti=2;i { if(x%i==0) flag=false; } returnflag; } 这部分是函数的定义,函数中声明了bool型变量flag,用了存储判断的结果,接下来用for语句来进行计算,当数x是素数时,把FALSE赋给flag,最后返回flag的值。 (2)用一个函数来实现将一行字符串中最长的单词输出。 此行字符串从主函数传递给该函。 把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。 程序为: (用一个文件) #include #include voidmain() { intalphabetic(char); intlongest(char[]); inti;charline[100]; printf("inputoneline\n"); gets(line);printf("thelongestwordis\n"); for(i=longest(line);alphabetic(line[i]);i++) printf("%c",line[i]); printf("\n"); } intalphabetic(charc) { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return (1); else return(0); } intlongest(charstring[]) { intlen=0,i,length=0,flag=1,place=0,point; for(i=0;i<=strlen(string);i++) if(alphabetic(string[i])) if(flag) { point=i; flag=0; } else len++; else { flag=1; if(len>=length) { length=len; place=point; len=0; } } return(place); } 运行情况: 把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 (3). 用递归法将一个整数n转换成字符串。 例如,输入483,应输出字符串“483”。 n的位#include voidmain() { intn; voidcovert(intn); printf("inputn\n"); scanf("%ld",&n); if(n<0) { putchar('-'); n=-n; } covert(n); } voidcovert(intn) { inti; if((i=n/10)! =0) covert(i); printf("%c",n%10+'0'); }数不确定,可以是任意的整数。 (习题8.17) (4). 求两个整数的最大公约数和最小公倍数。 用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。 (习题8.1) ①不用全局变量,分别用两个函数求最大公约数和最小公倍数。 两个整数在主函数中输人,并传送给函数l,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。 #include voidmain() { inta,b; inthcf(int,int); intlcd(int,int,int); printf("请输入a,b\n"); scanf("%d,%d",&a,&b); printf("最大公约数为: %d\n",hcf(a,b)); printf("最小公倍数为: %d",lcd(a,b,hcf(a,b))); } inthcf(intx,inty) { intt,r; if(x {t=x;x=y;y=t;} while(y! =0) {r=x%y;x=y;y=r;} return(x); } intlcd(intx,inty,intz) {return(x*y/z);} ②用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。 将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值。 include inta,b,x,n; voidmain() { voidhcf(); voidlcd(); printf("请输入a,b\n"); scanf("%d,%d",&a,&b); n=a*b; hcf(a,b); printf("最大公约数为: %d\n",a); lcd(n,a,x); printf("最小公倍数为: %d",x); } voidhcf() { intt,r; if(a {t=a;a=b;b=t;} while(b! =0) {r=a%b;a=b;b=r;} } voidlcd() {x=n/a;} (5). 写一函数,输入一个十六进制数,输出相应的十进制数。 (习题8.16) #include #defineMAX1000 voidmain() { inthtoi(chars[]); intc,i,flag,flag1; chart[MAX]; i=0; flag=0; flag1=1; printf("\n请输入十六进制数: "); while((c=getchar())! ='\0'&&i { if(c>='0'&&c<='9'||c>'a'&&c<='f'||c>='A'&&c<='F') { flag=1; t[i++]=c; } elseif(flag) { t[i]='\0'; printf("十进制数位: %d\n",htoi(t)); printf("是否继续? "); c=getchar(); if(c=='N'||c=='n') flag1=0; else { flag=0; i=0; printf("\n再输入十六进制数"); } } } } inthtoi(chars[]) { inti,n; n=0; for(i=0;s[i]! ='\0';i++) { if(s[i]>='0'&&s[i]<='9') n=n*16+s[i]-'0'; if(s[i]>='a'&&s[i]<='f') n=n*16+s[i]-'a'+10; if(s[i]>='A'&&s[i]<='F') n=n*16+s[i]-'A'+10; } return(n); } 运行情况: 四、实验总结。 C语言是一门基础开发语言,其应用十分广泛。 而C语言函数及其用法是学习、开发C语言程序的基础。 2010年6月3日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 函数 实验 报告