0
点赞
收藏
分享

微信扫一扫

基于visual Studio2013解决C语言竞赛题之0803报数

   基于visual Studio2013解决C语言竞赛题之0803报数_#include


题目

基于visual Studio2013解决C语言竞赛题之0803报数_#include_02


解决代码及点评

/*
功能:13个人围成一圈,从第一个人开始顺序报号1、2、3。 凡报到“3”者退出圈子。找出最后留在圈子里的人原来的序号。


*/

#include<stdio.h>
#include<stdlib.h>

#define N 13 //共13个人

struct people //创建双向链表
{
int ID; //人物序号
struct people *pNext; //下个元素的地址
};

typedef struct people PEO;

void init(PEO *a,int n); //输入每个人的信息

void main()
{
PEO a[N];
init(a, N); //对人物信息进行初始化

int total = N; //剩余人数,初始化为N
int num = 1; //报数器
PEO *p = &a[0];
for (PEO *pPrior=&a[N-1];total!=1; p=p->pNext) //pPrior指向当前结点的前一个结点
{
if (num != 3){
num++;
pPrior = pPrior->pNext; //前结点向后移一个单位
continue;
}
else
{
pPrior->pNext = p->pNext; //删除当前结点
num = 1;
total--; //生剩余人数--,当人数剩余为1时循环结束
}
num++;
}
printf("%d",p->ID);
system("pause");
}

void init(PEO a[], int n)
{
for (int i = 0; i < n; i++)
{
a[i].ID = i + 1; //每个人的编好
if (i != n - 1)
{
a[i].pNext = &a[i + 1]; //将下一个的地址赋给pNext
}
else
{
a[i].pNext = &a[0]; //将序号为1的地址赋给最后一个元素的pNext
}
}
}

代码编译以及运行

由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:

1)新建工程

基于visual Studio2013解决C语言竞赛题之0803报数_初始化_03

2)选择工程

基于visual Studio2013解决C语言竞赛题之0803报数_#include_04

3)创建完工程如下图:

基于visual Studio2013解决C语言竞赛题之0803报数_结点_05

4)增加文件,右键点击项目

基于visual Studio2013解决C语言竞赛题之0803报数_初始化_06

5)在弹出菜单里做以下选择

基于visual Studio2013解决C语言竞赛题之0803报数_结点_07

6)添加文件

基于visual Studio2013解决C语言竞赛题之0803报数_初始化_08

7)拷贝代码与运行

基于visual Studio2013解决C语言竞赛题之0803报数_初始化_09


程序运行结果


基于visual Studio2013解决C语言竞赛题之0803报数_初始化_10


举报

相关推荐

0 条评论