[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...