C语言实例

  • 格式:doc
  • 大小:98.50 KB
  • 文档页数:37

题目山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1, 2,...n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的编号。

第一种方法:利用循环链表#include<stdio.h>#include<malloc.h>#define M 8 //共有8只猴子#define N 3 //数到3只时退出第三只typedef struct monkey{int number;int flag;struct monkey* next;}MONKEY;main(){ MONKEY *head=NULL,*p,*s;int i,sum=0,count=0;clrscr(); //清屏p=(MONKEY *)malloc(sizeof(MONKEY)); //分配内存p->number=1;p->flag=1;p->next=head;head=p;for(i=2;i<=M;i++){ s=(MONKEY *)malloc(sizeof(MONKEY)); s->number=i;s->flag=1;s->next=head;p->next=s;p=p->next;}p=head;for(;;){if(p->flag==1)count++;if(count==N){p->flag=0;count=0;sum++;}if(sum==M-1)break;p=p->next;}p=head;for(i=1;i<=M;i++){ if(p->flag==1)printf("\t%d",p->number); p=p->next;}}第二种方法:数组#include<stdio.h>#define M 8struct monkey{int number;int nextp;}link[M+1];void main(){int i,count,h;for(i=1;i<=M;i++){ if(i==M)link[i].nextp=1;elselink[i].nextp=i+1;link[i].number=i;}printf("\n");count=0;h=M;printf("依次退出的猴子: \n"); while(count<M-1){i=0;while(i!=3){ h=link[h].nextp;if(link[h].number)i++;}printf("%4d",link[h].number); link[h].number=0;count++;}printf("\n大王是:");for(i=1;i<=M;i++)if(link[i].number)printf("%3d\n",link[i].number);}第三种是普通方法for循环#include<stdio.h>void main(){ int i,k,m,n,num[50],q,*p;clrscr();printf("input number of person: n=");scanf("%d",&n);printf("\ninput number of person when how many monkey exit: q ="); //输入数到q只时退出第三只scanf("%d",&q);p=num;for(i=0;i<n;i++)*(p+i)=i+1;i=0;k=0;m=0;while(m<n-1){if(*(p+i)!=0) k++;if(k==q){ *(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("The last one is NO:%d\n",*p); getch();}BCCN网友 ip:59.59.40.*2009-1-31 18:54:51 发表#include <stdio.h>void main(){int m,n;puts("输入猴子的个数:");scanf("%d",&m);puts("输入报数:");scanf("%d",&n);void choice(int m,int n);choice(m,n);}void choice(int m,int n){int i,j=-1;int num=1;int s[100];for(i=0;i<m;i++) s[i]=0;while(num<m){for(i=1;i<=n;i++){j++;if(j==m) j=0;while(s[j]==1){j++;if(j==m) j=0;}}s[j]=1;num++;}for(i=0;i<m;i++)if(s[i]==0) printf("%d号是猴子王!!",i+1);}用C语言实现的闹钟程序#include#include#include#include#includevoid main(){int gd=DETECT,gm;int x=320,y=240,r=200,i,h,m,s,thetamin,thetasec;struct time t;char n[12][3]={"3","2","1","12","11","10","9","8","7","6","5","4"}; initgraph(&gd,&gm,"g:\\tc\\bgi");//图形驱动器路径,根据自己的系统更换。

circle(x,y,210);setcolor(4);settextstyle(4,0,5);for(i=0;i<12;i++){if(i!=3)outtextxy(x+(r-14)*cos(M_PI/6*i)-10,y-(r-14)*sin(M_PI/6*i)-26,n[i]);elseouttextxy(x+(r-14)*cos(M_PI/6*i)-20,y-(r-14)*sin(M_PI/6*i)-26,n[i]);}gettime(&t);printf("The current time is: %2d:%02d:%02d.%02d\n",t.ti_hour, t.ti_min,t.ti_sec, t.ti_hund);while(!kbhit()){setcolor(5);setfillstyle(1,5);circle(x,y,10);floodfill(x,y,5);gettime(&t);if(t.ti_min!=m){setcolor(0);line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180 )));circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180)) ,10);line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h -((m/2)*(M_PI/180))));circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-( (m/2)*(M_PI/180))),10);}if(t.ti_hour>12)t.ti_hour=t.ti_hour-12;if(t.ti_hour<4)h=abs(t.ti_hour-3);else&nbsp;h=15-t.ti_hour;m=t.ti_min;if(t.ti_min<=15)thetamin=(15-t.ti_min)*6;elsethetamin=450-t.ti_min*6;if(t.ti_sec<=15)thetasec=(15-t.ti_sec)*6;elsethetasec=450-t.ti_sec*6;setcolor(4);line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h -((m/2)*(M_PI/180))));circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-( (m/2)*(M_PI/180))),10);line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180 )));circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180)) ,10);setcolor(15);line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180 )));delay(1000);setcolor(0);line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180 )));}}该程序已在Turbo C++3.0中通过编译.题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。

问第4个人岁数,他说比第3个人大2岁。

问第三个人,又说比第2人大两岁。

问第2个人,说比第一个人大两岁。