实验七01140019蒋云伟.docx
- 文档编号:2868880
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:15
- 大小:63.65KB
实验七01140019蒋云伟.docx
《实验七01140019蒋云伟.docx》由会员分享,可在线阅读,更多相关《实验七01140019蒋云伟.docx(15页珍藏版)》请在冰豆网上搜索。
实验七01140019蒋云伟
《C++》实验报告
实验名称
实验七函数
学号
201101140019
姓名
蒋云伟
实验日期
6.2
实验目的:
1.掌握C语言中函数的定义格式和调用方法。
2.掌握函数实参与形参的对应关系,理解“值传递”过程。
3.理解函数的嵌套调用和递归调用。
4.掌握全局变量和局部变量、动态变量和静态变量的概念与使用方法
实验内容:
1.上机调试(需作出必要的注释!
)
(1)调试下面程序,记录出错信息,并指出出错原因。
main()
{
int,y;
printf("%d\n",sum(x+y));
intsum(a,b)
{
inta,b;
return(a+b);
}
}
(2)下面程序实现什么功能,对加粗部分进行注释。
#include
fun(intx,inty,intz)
{
intsum=0;
sum=x+y+z;
printf("%d",sum);
}
#include
voidmain()
{
inta,b,c;
a=10;
b=5;
c=3;
fun(a,b,c);
}
(3)下面程序实现什么功能,对加粗部分进行注释。
intmax(int,int)
voidshowmessage()
intmax(inta,intb)
{
if(a>b)
returna;
else
returnb;
}
voidshowmessage()
{
printf(“函数调用开始:
\n);
}
main()
{
intx,y,z;
printf("inputtwointnumbers:
\n");
scanf("%d,%d",&x,&y);
showmessage();
z=max(x,y);
printf("maxmum=%d",z);
}
(4)下面程序实现什么功能,对加粗部分进行注释。
#include
voidmain()
{intt=1;
fun(fun(t));
}
fun(inth)
{staticinta[3]={1,2,3};
intk;
for(k=0;k<3;k++)a[k]+=a[k]-h;
for(k=0;k<3;k++)printf("%d,",a[k]);
printf("\n");return(a[h]);
}
(5)下面程序实现什么功能,对加粗部分进行注释。
floataver(floata[5])
{
inti;
floatav,s=a[0];
for(i=1;i<5;i++)
s=s+a[i];
av=s/5;
returnav;
}
voidmain()
{
floatsco[5],av;
inti;
printf("\ninput5scores:
\n");
for(i=0;i<5;i++)
scanf("%f",&sco[i]);
av=aver(sco)
printf("averagescoreis%5.2f",av);
getch();
}
(6)下面程序实现什么功能,对加粗部分进行注释。
#include
longfib(intn)
{if(n>2)
return(fib(n-1)+fib(n-2));
else
return
(2);
}
voidmain()
{printf("%d\n",fib(3));
}
2.填空题
(1)以下程序通过函数SunFun和f(x),x=0到10,这里f(x)=x^2+1,由F函数实现,请填空。
main()
{printf("Thesun=%d\n";
sunFun(10));
}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+=F(______);
returns;
}
F(intx)
{return(x*x+1);}
(2)下列的函数实现将数组中的元素值加1,请将程序补充完整
voida(_____________________________);
voidshow(_______________________________);
main()
{
intarray[7]={41,52,43,24,15,56,32},i,length=7;
printf("beforechange:
");
show(array,length);
printf("\nafterchange:
");
a(array,length);
for(i=0;i printf("%d\t",array[i]); getch(); } voida(intarray[],intlength) { inti; for(i=0;_______________________;i++) array[i]++; } voidshow(inta[],intlength) { inti; for(i=0;____________________________;i++) printf("%d\t",a[i]); } (3)下列程序实现从键盘上输入一组整数,存放到一个数组中,然后对它们进行从小到大排序,然后输出排序后的数据,请将程序补充完整: #include"stdio.h" /*数组传递,数组名传递,形参,实参数组类型应该一致,长度应该一致*/ /*字符串数组的初始化,输入输出*/ voiddatainput(___________________________,intlength) { inti,n=length; printf("input%dinteger: ",length); for(i=1;i<=n;i++) { printf("\nno%d: ",i); scanf("%d",&a[i-1]); } } voidchoiseSort(___________________________,intn) { inti,j,k,temp; for(i=0;i { k=i;/*给记号赋值*/ for(j=i+1;j _______________________________/*是k总是指向最小元素*/ if(i! =k) {/*当k! =i是才交换,否则a[i]即为最小*/ /*将最小元素与a【i】交换,保证a[i]最小*/ temp=a[i]; ________________________ a[k]=temp; } } } voidArrayPrintf(________________,intn) { inti; for(i=0;________;i++) printf("%d\t",a[i]); } voidmymessage(chara[]) { printf("\n%s",a); } voidshowArray(inta[6],intn) { inti; putchar('\n'); for(i=0;i printf("%d\t",a[i]); } main() { inta[6]; ________________________________ datainput(a,length); mymessage("\ndatainputfinish! \n"); choiseSort(a,length); mymessage("\ndatasortfinish,resultis: \n"); showArray(a,length); getch(); } 3.编程题 (1)已知有函数为: s(n)=s(n-1)+n! ,已知s (1)=1,s (2)=s (1)+2! s(3)=s (2)+3! ,试编程完成该函数,要求,n从键盘输入,s(n)函数的实现要使用递归的方法,阶乘函数的实现也要递归的方法 (2)某c语言班共有10名学生,试编程完成下列要求: a、编写一个函数datainput,实现从键盘上录入10名学生的c语言成绩,存入数组a中 b、编写一个函数,对这些学生的成绩按照从高到低的顺序排序 c、编写一个函数,输出所有学生的成绩 d、编写一个函数,计算学生的平均分,并输出成绩大于80分的学生成绩 4.思考题 (1)使用递归的方法实现: 1+2+3+4+5+…+n,提示: s(n)=s(n-1)+n (2)下面函数实现什么功能,为什么 #includemath.h intjudge(int); main() { intnum,result; scanf(%d,&num); result=judge(num); if(result==1)printf(yes\n); elseprintf(no\n); } judge(intnum) { inti,flag=1! for(i=2;i<=sqrt(num)! i++) if(num%i==0) { flag=0; break? } returnflag; } 3>下面函数实现什么功能,为什么 voidadd(); intresult; main() { inti; result=0" for(i=0;i<100;i++)add(); printf("%d\n',result); getch(); } voidaddnnn() { staticintnum=0;/*对static变量初始化*/ num++; result+=num; } 注: static声明的变量在C语言中有下列特征: 1)变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。 这一点是它与堆栈变量和堆变量的区别。 2)变量用static告知编译器,自己仅仅在变量的作用范围内可见。 这一点是它与全局变量的区别。 3)对static变量的初始化操作只进行一次,但是对其赋值可以进行多次。 程序清单及运行结果: 1 (1)源程序: #include voidmain() { …… } 其运行结果: (可以是截图,有交互的每个动作都要有一幅图片,就是只要屏幕有变化就要截新图片,按下printScreen键截全屏幕,alt+printScreen截活动窗口) (或者也可以是语言描述,这个省事,推荐) 屏幕提示: “Pleaseinputa,b: ” 我输入: “23,44”,回车 屏幕显示: “23+44=6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 01140019 蒋云伟
![提示](https://static.bdocx.com/images/bang_tan.gif)