当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

C语言程序编写

更新:12-28 整理:39baobao.com
字体:

[C语言程序设计工资管理救急!]找迋鬵嘫,他曾回答过这个问题。他的答复如下: /*Microsoft Visual C++ .NET编译通过by 做他07.12.29*/#include "stdafx.h"#include "iostream"#include "string"#include "list"#incl...+阅读

此题应该属于约瑟夫问题范围。

语句注释,我习惯用了//,请楼主注意哈。

#include"stdlib.h"

#include"stdio.h"

#define NULL 0

typedef struct point

{

int data;

int NO;

struct point *next;

}LNode,*LinkList;

int n,m=3; //全局变量,- -我怀疑很多人忘记这里了.m=3的意思,是每数到第三个。就是猴子报数

LinkList create() //生成循环单链表并返回

{

int i;

LinkList head,tail,new;

head=NULL;

printf("\ninput n (猴子数):");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

new=(LinkList)malloc(sizeof(LNode)); //分配空间,不明白请看书。这个是链表基本的基本。。。

new->No=i;

if(head==NULL) //链表的第一个结点插入

{

head=new;

tail=head;

}

else //链表的其余结点

{

tail->next=new;

tail=new;

}

}

tail->next=head; //循环单链表的生成,就是头咬尾巴了的蛇(○圆○)

return head;

}

void search(LinkList head) //用循环链表实现报数问题

{

int count,num,monkeyKing;

LinkList pre,p;

num=0;

count=1;

p=head;

printf("\n0utput data:");

while(num

{

do //累计报数

{

count++;

pre=p;

p=p->next;

}while(count

pre->next=p->next; //报数3的猴子的出列

printf("%3d",p->No);

monkeyKing=p->No;

free(p);

p=pre->next;

count=1;

num++;

}

printf("the monkeyKing is:%d",monkeyKing);//猴子王出世了

}

main()

{

LinkList head;

head=create();

search(head);

getchar();

getchar();

}

相信你能看的懂,

设计思路。。。

(1)设置变量num标记出列猴子数,控制循环执行次数,当Num取值为0~n-1时,执行循环,否则退出循环

(2)设置变量count累计报数人数,决定某一个猴子是否出列,count从1开始累计,当count=m=3时,做如下处理:

①刚刚报数的人需要出列,即将其所在结点从表删除。若采用循环链表结构,为了实现该操作,需要两个工作指针pre和p,分别指向链表中的相邻结点

②出列人数Num加1;

③count重新置1,准备开始下一轮报数

---------------------------------

流程图(○→猴子王)- -略。

本文地址:https://www.39baobao.com/show/29_16413.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

C语言程序设计用循环语句输入十个数求平均值#include<stdio.h> main() { int a,i,sum=0; printf("input 10 number:"); for(i=0;i<10;i++) { scanf("%d",&a); sum+=a; } printf("%d",sum/10); } 实现思路很简单: 将十个数相加...

汇编语言程序输入十个负数输出其中最小的ORG 0000H LJMP MAIN0 ORG 0030H MAIN0:MOV A,#10H ACALL MAIN ;长调用排序程序 MOV P1,A SJMP $ MAIN: ;子程序入口 MOV R6,#00 ;起停标志位 LOOP:CLR 00H ;置换标志位 MOV R0,#...

汇编语言中如何用循环结构编写统计负数个数的程序负数就是大于7f的数 先定义数据段,把数据写在段内 比如用00 00来表示数据结束 data segment db 10,20,30,40,50,60,70,80,1f,12,22,00,00 data ends result segment result e...

怎样用易语言编写单击执行指定命令方法一: 可以在界面上加个编辑框,用于设置关机秒数.在关机按钮事件中写如下代码: 运行(“Shutdown /s /t "+到文本(编辑框.内容)) 编辑框.内容就是关机的秒数了. 方法二: 加一个时钟...

用汇编编写5的阶乘的程序;汇编语言实现计算SUM=5! DATAS SEGMENT ;此处输入数据段代码 NUM DW 5 ;最高阶数 SUN DW 0 ;计算结果 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGME...

四个数字排序的C语言程序main() {int a,b,c,d,e; scanf("%d,%d,%d,%d",&a,&b,&c,&d); if(a<b) {e=a;a=b;a=e;} if(b<c) {e=b;b=c;b=e;} if(a<b){e=a;a=b;a=e;} if(c<d) {e=c;c=d;d=e;} if(b<c) {e=b;b...

4位二进制加法 c语言程序如何编写急用//...//自己编译下试试。//专门为你写的啊,如果可用一定要给分哦。#include#include#define ERR printf/* char *myItoa (int n,const char * ch) { ¡¡sprintf(ch,"%d",n); ¡...

输入任意十个数按照倒叙输出的c语言程序#include<stdio.h> void descList(int a[], int n){ int i, j, temp; for(i = 0; i < n;i ++){ for(j = 0; j < i; j++) { if(a[i] > a[j]){ temp = a[i]; a[i] = a[j]; a[j...

将两个数组合并到一个数组并排序的c语言程序编写这里是借用第三个数组。 原理:先将两个数组复制到第三个数组中,然后对第三个数组排序 如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成: char* fun(cha...