例1:有n个人围成一圈,顺序排号。从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(用指针)
例2:有n个人围成一圈,顺序排号。从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(用结构)
例1程序:*个循环报数逢3退出求最后一人是第几号*/#include<>
#define nmax 50/*定义最多人数为50人*/void main()
int i,k,m,n,num[nmax],*p;
/ printf("请输入人数n:")
/ scanf("%d",&n);
n=13;p=num;
for(i=0;ip+i)=i+1;/*以1至n为序给每个人编号*/i=0;/*i为每次循环时计数变量*/
k=0;/*k为按1,2,3报数时的计数变量*/m=0;/*m为退出人数*/
while(mif(*(p+i)!=0) k++;
if(k==3)
p+i)=0;/*退出的人编号置0*/
k=0;m++;
i++;if(i==n)i=0;/*报数到尾后i恢复为0*/while(*p==0)p++;
printf("%d个人中最后留下的是第%d号。",n,*p);
例2程序。#include <>
#define n 13
struct person
int number;
int nextp;
link[n+1];
void main()
int i,count,h;
*建立队列*/
for (i=1;i<=n;i++)
if(i==n)
link[i].nextp=1;
elselink[i].nextp=i+1;
link[i].number=i;
printf("");
count=0;
h=n;printf("出圈成员及顺序");
while(count
printf("%6d",link[h].number);
link[h].number=0;
count++;
printf(" 最后的成员是");
for(i=1;i<=n;i++)
if(link[i].number)
printf("%6d",link[i].number);
C数据结构C示例
目录。1.表达式 2 语句 2 圆括号。方括号。花括号。1 计算两点间的距离平方。a点坐标 x1,y1 和b点坐标 x2,y2 x1 x2 x1 x2 y1 y2 y1 y2 注 c 中的乘号是 没有平方符号,因此没有 x1 x2 2,而应该写作 x1 x2 x1 x2 2 数学表达式的正确表达 1...
数据结构常用算法数据结构算法
void union list la,list lb union void mergelist list la,list lb,list lc else while i la len while j lb len mergelist status initlist sq sqlist l elemt...
数据结构2019级数据结构大作业
2011级数据结构大作业。1 公园导游图。给出一张某公园的导游图,用图的顶点表示各个景点 景点个数大于等于30 每个景点有属性值 h,t,c 其中h表示游览完成这个顶点给游客带来的happiness,t表示游览这个景点需要的时间,c表示游览这个景点需要的费用,顶点之间的边表示路径 边具有属性值w,表...