C++上机题目及答案1(5)

2019-04-13 20:52

}

Node* insert(Node *h,Node *p){ Node *p1=h; if(h==0){ h=new Node ; h->date=p->date; h->next=0; } else { while(p1->next!=0) p1=p1->next; p1->next=new Node; p1=p1->next; p1->date=p->date; p1->next=0; } return h; }

void print(Node *h){ Node *p=h; while(p!=0){ cout<date<<','; p=p->next; } cout<

void del(Node *h){ Node *p=h; while(h!=0){ p=h; h=h->next; delete p; } }

第八周上机题目

1. 编写一个类CNums,实现如下功能:

某数列的第一项是0, 第二项是1,从第三项起,凡奇数项是其前两项之和,偶数项是其前两项之差(前项减后项),生成数列的100项存入数组,统计共有多少个-1,0,1;

21

1) 类定义的要求如下: 私有数据成员

? float num[100] 公有函数成员

? generate()函数生成的100项数列值存入数组(类的数据成

员);

? show()函数显示出所有项数据,以及-1,0,1三个数值在数列中

的个数;

2) 用以下主函数进行测试:

void main(){

CNums num; num.generate( ); num.show( ); }

构成完整程序,即完成该类成员函数的定义和测试程序的设计。 #include

class CNums{ private: float num[100]; public: void generate(); void show(); };

void CNums::generate( ){ num[0]=0,num[1]=1; for(int i=2;i<100;i++) if(i%2==0) num[i]=num[i-2]+num[i-1]; else num[i]=num[i-2]-num[i-1]; }

void CNums::show(){ int n1=0,n2=0,n3=0; for(int i=0;i<100;i++){ cout<

22

}

else if(num[i]==0) n2++; else n3++;

cout<<\三个数值在数列中的个数分别为: \

<

}

void main(){ CNums d; d.generate(); d.show(); }

2. 建立一个student类来实现如下功能:

查找考试成绩在80分以上的学生及其编号,并统计这些学生的总人数。考试成绩在调用input函数时输入,调试程序可用以下10个成绩数据输入:

79 85 92 64 73 91 88 81 66 83

1) 类定义的要求如下: 私有数据成员

int n —存储学生的编号,学生编号最小为1 float *stu ——储存考试成绩,数组要求动态生成 int count ——统计符合条件的总人数 2) 公有函数成员

? input(int n)函数 ——输入学生成绩,并统计满足条件的人数

存入count变量;

? void stat() 查找符合条件的编号、成绩,并调用成员函数

Show输出对应的编号、成绩

? void Show() ——输出符合条件的编号、成绩 ? void print() —— 输出符合条件的总人数

构成完整程序,即完成该类成员函数的定义和测试程序的设计。 # include class student{ int n; float *stu; int count; public:

void input(int m=10); void stat(void) ;

23

void Show(void) { cout<

void student::input(int m) {

count=0;n=m;

cout<<\请输入学生的成绩:\ stu=new float[n]; for(int i=0;i>stu[i]; if(stu[i]>=80) count++; } }

void student::stat(){ int i=n;

cout<<\超过80分的人有: \\n\ for(n=0;n=80) Show(); } }

void main(void){ int n;

student student1;

cout<<\请输入班级的学生数: \ cin>>n;

student1.input(n); student1.stat(); student1.print(); }

附加题:

3. N个人围成一圈,他们的序号依次为1~n,从第一个人开始顺序报数1、

2、3……、m,报到m者退出圈子,并输出退出圈子的人的序号。接着再顺序报数,直到圈子中留下一个人为止。用一个结点的环形链表模拟围成一圈的人。假定有10个人围城一圈,凡报到5者退出圈子,则 退出圈子的人的序号依次为5、10、6、2、9、8、1、4、7,最后留在圈中的人是3号。是单向环形链表的结构,其中head指向第一个人。

struct Node{ int x;

24

Node *next; };

class line{

int m;

Node *head; publick:

void creat( int n ); //创建环行链 void DelNode( ); //删除结点 ~ del( ); };

构成完整程序,即完成该类成员函数的定义和测试程序的设计。#include struct Node{ int x;

Node *next; };

class line{ private: int m;

Node *head; public:

void creat(int n,int m); void DelNode(); };

void line::creat(int n,int k){ head=0; m=k; Node *p1,*p2; int i=1;

while(i<=n){ p1=new Node; p1->x=i++; if(head==0) head=p2=p1; else{ p2->next=p1; p2=p2->next; } }

p2->next=head; }

void line::DelNode(){ Node *p1,*p2; int n=2;

for(p1=head,p2=head->next; p1!=p2; p1=p2,p2=p2->next,n++){ if(n%m==0){ p1->next=p2->next; cout<x<<','; delete p2; p2=p1;

25


C++上机题目及答案1(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:山东省邹城市第一中学2016届高三10月月考数学(理)试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: