预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第页共NUMPAGES4页 《C++语言程序设计》课程作业评讲(3) 责任教师敖开云 写出每个函数的功能题是难度较大的题,学生往往感到学起来比较困难,本次作业评讲对第三次平时作业的“三、写出每个函数的功能”进行评讲。 下文中,黑色的是问题与答案,绿色是说明和解释。 写出下列函数的功能: 1.#include<iostream.h> voidLI(intn){ int*a=newint[n],*p=a+n; for(inti=0;i<n;i++)cin>>a[i]; for(i=n-l;i>=0;i--)cout<<*(--p)<<''; cout<<'\n'; delete[]a; } 此题的考核知识点有3点: ⑴第三章中for循环的功能和编程方法; ⑵第四章中一维数组的定义和用法; ⑶第五章中函数的调用与参数的传递。 分析: 要知道该函数的功能,必须读懂该程序的含义,从程序可知,语句“for(inti=0;i<n;i++)cin>>a[i];”是给a数组赋值,而语句“for(i=n-l;i>=0;i--)cout<<*(--p)<<''”则是按相反方向排列。 答案: 把从键盘上输入的n个整数按与输入相反的顺序显示出来。 注意:此题容易出错的地方是看不懂语句“for(i=n-l;i>=0;i--)cout<<*(--p)<<''” 2.#include<iostream.h> voidLK(inta[],intn,int*&b,int&m){ floats=0;inti; for(i=0;i<n;i++) s+=a[i]; s/=n; m=0; for(i=0;i<n;i++) if(a[i]<s)m++; b=newint[m]; int*p=b; for(i=0;i<n;i++) if(a[i]>=s)*p++=a[i]; } 此题的考核知识点有3点: ⑴第三章中for循环的功能和编程方法; ⑵第四章中一维数组的定义和用法; ⑶第五章中函数的调用与参数的传递。 分析: 要知道该函数的功能,必须读懂该程序的含义,从程序可知,前面6行是计算a数组的平均值,最后一个for循环语句是查找数组a中大于等于平均值的所有元素,并赋值给数组b。 答案: 使一维整数数组a中大于等于所有元素平均值的元素成为动态数组b的元素。 注意:此题容易出错的地方是动态数组b。 3.//structWorker{ //charname[15];//姓名 //intage;//年龄 //floatpay;//工资 //}; istream&operator>>(istream&istr,Worker&x){ cout<<”请输入一个职工记录:姓名、年龄、工资”<<endl; istr>>x.name>>x.age>>x.pay; returnistr; } 此题的考核知识点是:第八章中的重载的概念。 分析: 从语句“istream&operator>>(istream&istr,Worker&x)”可知,这是一个类的重载问题,其程序的功能很简单,就是输入姓名、年龄和工资。 答案: 重载可应于自定义类型Worker的插入运算符。 注意:此程序容易出错的地方是看不懂语句“istream&operator>>(istream&istr,Worker&x)”。 4.StructStrNode{ charname[15];//字符串域 StrNode*next;//指针域 }; voidQB(StrNode*&f,intn){ if(n==0){f=NULL;return;} f=newStrNode; cin>>f->name; StrNode*p=f; while(--p){ p=p->next=newStrNode; cin>>p->name; } p->next=NULL; } 此题的考核知识点是:第七章中的创建链表。 分析: 从题意可知,前4行是定义2个域的结构,从结构成员可以看出,定义的是链表,根据后面的程序分析是创建链表。 答案: 建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。 注意:此题较难,学生不容易看懂程序,应注意多训练。 5.//structStrNode{ //charname[15];//字符串域 //StrNode*next;//指针域 //}; voidQC(StrNode*f){ while(f){ cout<<f->name<<‘‘; f=f->next; } } 此题的考核知识点是:第七章中链表的遍历。 分析: 从语句“cout<<f->name<<‘‘;”可知,这是输出每个节点字符串域name,所以这是一个遍历链表的程序。 答案: 遍历f单链表,即从表头结点开始依次输出