c语言杀人游戏,m个人组成一围,取n,然后把第n个去掉,最后剩下的盛夏一个

&&/&&&&/&&&&/&&
编写一个函数,把一个char组成的字符串循环右移n位。
编写一个函数,把一个char组成的字符串循环右移n位。例如,原来是&abcdefghi&,如果 n=2,移位后应该是&hiabcdefgh&。
函数原型如下:
//pStr是指向以'\0'结尾的字符串的指针
//steps是要求移动的n位
void LoopMove(char * pStr, int steps);
这个题目主要考查读者对标准库函数的熟练程度,在需要的时候,引用库函数可以很大程度上简化程序编写的工作量。
最频繁被使用的库函数包括strcpy()、memcpy()和memset()。
以下采用两种方法来解答。
方法一代码:
#include &stdio.h&
#include &string.h&
#define MAX_LEN 100
void LoopMove(char *pStr, int steps){
int n = strlen(pStr) -
char tmp[MAX_LEN];
memcpy(tmp, pStr+n, steps);
//拷贝字符串
memcpy(pStr+steps, pStr, n);
memcpy(pStr, tmp, steps);
//合并得到结果
int main(){
char str[] = &&;
LoopMove(str, 3);
printf(&%s\n&, str);
方法二代码:
#include &stdio.h&
#include &string.h&
#define MAX_LEN 100
void LoopMove(char *pStr, int steps){
int n = strlen(pStr) -
char tmp[MAX_LEN];
strcpy(tmp, pStr+n);
//拷贝字符串
strcpy(tmp+steps, pStr);
*(tmp + strlen(pStr)) = '\0';
strcpy(pStr, tmp);
//合并得到结果
int main(){
char str[] = &&;
LoopMove(str, 3);
printf(&%s\n&, str);
输出结果:杀人游戏问题!谢谢帮忙改改_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:500,906贴子:
杀人游戏问题!谢谢帮忙改改收藏
//n个人围成一个圈,每隔i个人杀一个人,最后剩下的人是谁?# include&stdio.h&# include&stdlib.h&//单链表的储存typedef struct Node{&&&&&&&& struct Node *}Node,*LinkL//初始化void InitList(LinkList L){&&&& L=(LinkList)malloc(sizeof(Node));&&&& L-&next=NULL;}//删除一个节点void DelList(LinkList L){&&&& L-&next=L-&next-&&&&& free(L-&next);}&&&&main(void){&&&& int k,n,i,&&&& LinkList L,p,rear,R;&&&& InitList(L);&&&& printf("输入n(生成n个人)");&&&& scanf("%d",&n);&&&&&&& for(k=1;k&=n;k++)&&&& {&&&&&&&& p=(LinkList)malloc(sizeof(Node));&&&&&&&& p-&data=k;&&&&&&&& p-&next=L-&&&&&&&&& printf("%4d",p-&data);&&&& }&&& //尾指针&&&& rear=p-&&&&& rear-&next=L-&&&& //生成循环链表&&&& printf("\n输入i(每隔i位杀一个人)");&&&& scanf("%d",&i);&&&& p=L-&&&&& count=1;&&&& while(p-&next!=NULL)&&&& {&&&&&&&& p=p-&&&&&&&&& count++;&&&&&&&& if(count%i==0)&&&&&&&& {&&&&&&&&&&&& printf("%d被杀\n",p-&data);&&&&&&&&&&&& R=p-&&&&&&&&&&&&& DelList(R);&&&&&&&& }&&&& }&&&& printf("\n最终活下来的是%d号",p-&data);&&&& return 0;}&&&&
c语言一般需要4-8周,就可以掌握.4个月=两年的工作经验,月薪过万.c语言的费用根据培训课时定,免费试听编程课程,名师授课,手把手传教.
快试试吧,可以对自己使用挽尊卡咯~◆◆
呃,一个模拟,好麻烦的
你看看这个贴子,我想它会对你有帮助的。
//删除一个节点void DelList(LinkList L){&&&&& L-&next=L-&next-&&&&&& free(L-&next);}这个地方好像有点问题,free(L-&next);,这个释放的不是你删掉的那个链,而是你接上的那个链。
你在建循环链表的时候,刚开始的头指针中的data让它有值,即1,然后再给下面的用for语句来赋值。让最后一个链的next指向开始的头,这样就成了一个循环链了。
还是不明白吗??
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 剩下的盛夏 的文章

 

随机推荐