| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 993 人关注过本帖
标题:挑战C语言第一大难题
只看楼主 加入收藏
shrekjxf
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-1
收藏
 问题点数:0 回复次数:10 
挑战C语言第一大难题
又n个人围成一圈,顺序排号.从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来第几号
搜索更多相关主题的帖子: 难题 C语言 挑战 
2006-09-01 12:55
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

链表:
#include<stdio.h>
#include<malloc.h>

typedef struct node{
int info;
struct node *next;
};

node *tbuildhlink(int n) /*带头节点的尾插法*/
{
node *head,*s,*p2;
int i=1;

head=(node *)malloc(sizeof(node));
p2=head;
while(i<=n)
{
s=(node *)malloc(sizeof(node));
s->info=i;
p2->next=s;
p2=s;
i++;
}
if(p2) p2->next=head;
return(head);
}

void Display(struct node* head)
{
node *p;
p=head->next;
if(!p)
{
printf("\nthe hlink is empty!");
}
else
{
printf("\nthe value of the hlink is:\n");
while(p!=head)
{
printf("%d--->",p->info);
p=p->next;
}
}
printf("^\n");
}
int delete_node(struct node *head,int n,int m)
{
int count=1,sum=n;
struct node *p,*pre;
pre=head;
p=pre->next;
while(sum>1)
{
if(p==head)
{
p=p->next;
}
if(count<m)
{
pre=p;
p=p->next;
count++;
}
if(count==m)
{
if(p==head)
{
p=p->next;
}
printf("第%d个人出列.\n",p->info);
pre->next=p->next;
free(p);
p=pre->next;
count=1;
sum--;
}
}
return(pre->info);
}


int main()
{
node *head;
int n,m;

printf("输入n,m:");
scanf("%d%d",&n,&m);
head=tbuildhlink(n);
Display(head);
printf("最后剩下第%d个.\n",delete_node(head,n,m));
return(0);
}


倚天照海花无数,流水高山心自知。
2006-09-01 13:10
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-09-01 13:15
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
[QUOTE]挑战C语言第一大难题[/QUOTE]
这也算难题???

由于工作,N久都没来了!
2006-09-01 13:16
shrekjxf
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-1
收藏
得分:0 

写了,大家,但我觉得是满难的,又没有简单的方法啊

2006-09-01 14:00
shrekjxf
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-1
收藏
得分:0 

有没有简单一点的方法啊

2006-09-01 14:02
shrekjxf
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-1
收藏
得分:0 
有没有简单一点的方法啊
有没有简单一点的方法啊
2006-09-01 14:03
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
以下是引用shrekjxf在2006-9-1 12:55:49的发言:
又n个人围成一圈,顺序排号.从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来第几号

我还没看懂题呢
m不就是最后一个人吗?


羊肉串 葡萄干 哈密瓜!!
2006-09-01 22:22
横眉冷对
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-3
收藏
得分:0 
以下是引用pinevspine在2006-9-1 22:08:10的发言:
3楼的母羊那么厉害能写出比2楼那位仁兄更少的程序吗?


MSN:jyycom@ 爱好:军事,体育,Rock。
2006-09-02 16:02
jpg4151
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-3-12
收藏
得分:0 

#include "stdio.h"
#define n 100
#define m 10
void main()
{int i,sum=0,a[101];
int t=0;
for(i=1;i<=100;i++)
a[i]=1;
for(i=1;i<=100;i++)
{
sum=(sum+a[i])%m;
if(sum==0&&a[i]==1)
{ t++;

a[i]=0;
if(t==100)
{ printf("%d",i);

break;
}
}
if(i==100)i=0;

}
}

2006-09-02 19:32
快速回复:挑战C语言第一大难题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015522 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved