跪求程序(Visual C++6.0)
大哥大姐们救救我吧,要交程序。麻烦你们拉
谢谢各位大哥了~~真心祝福你们天天好心情`:)谢谢!
我会追加分数的
谢谢谢谢啦
问题描述
有n个同学一起玩游戏(10≤n≤99),大家围成一圈,依靠学号来区分同学,从某一个同学(编号为a)开始数数,遇到7的倍数或者包含7的数(比如17,27),则该同学退出圈外,请求解同学们退出的顺序(用学号表示)。
基本要求
(1) 同学的总人数n可变(10≤n≤99),开始位置a可变(1≤a≤n);
(2) 用两种线性表的存储结构来分别表示围成圈的同学和退出顺序。比如,可以用循环链表或者双链表表示围成的圈,用顺序表(一位数组)来存储退出的同学学号的顺序;
(3) 同学的学号可以用简单1,2,3,…,M编号;
(4) 文档中,对算法的时间复杂度和空间复杂度进行分析,判断复杂度与n之间的关系。
(5) 绘制算法的流程图。
参考答案:我把程序写给你吧
#include<iostream>
#define MAX 100
using namespace std;
typedef struct Lnode
{ int num;
struct Lnode *next;
}Lnode,*Link;
int main()
{ Link L,p,h;
int i,j,n,pos;
int s[MAX];
cout<<"请输入学生人数: ";
cin>>n;
L=new Lnode;
L->next=NULL;
h=L;
for(i=0;i<n;++i)
{ p=new Lnode;
p->num=i+1;
p->next=h->next;
h->next=p;
h=h->next;
}
cout<<"学生编号是:\n";
p=L->next;
while(p)
{ cout<<p->num<<" ";
p=p->next;
}
p=L->next;
cout<<"请输入开始位置: ";
cin>>pos;
while(p->num!=pos)
p=p->next;
for(i=0;p;p=p->next)
if(p->num%7==0||(p->num-7)%10==0)
s[i++]=p->num;
cout<<"退出顺序是:\n";
j=i;
for(i=0;i<j;++i)
cout<<s[i]<<" ";
cout<<endl;
delete p;
delete L;
delete h;
return 0;
}