貌似都是书上的题啊
第1个应该很简单,定义数组大一点,输入要查找的数据后,对比找到第一个比它大的数的位置,然后将该位置后的数全部顺延一位,将数据放入该位置
第2个
#include<stdio.h>
#define N 20 //宏定义数组大小
int main()
{
int a[N];
int n,Con=0,i=0,Total_p;
printf("input n(n<%d):",N);
scanf("%d",&n); //输入人数,小于N
while(n>N)//如果输入数据大于数组的最大宽度,则重新输入
{
printf("wrong number\n input again:");
scanf("%d",&n);
}
for(i=0;i<n;i++)
a[i]=i+1;//给数组赋值,表示第一,第二....第n个人
Total_p=n;
i=0;
while(Total_p!=1)//总人数只有1个人时停止循环
{
Con++;//报数
if(a[i]==0)
Con-=1;//如果某元素为0,则说明属于已经跳出的人,不计数
if(Con==3)//报到3则运行
{
a[i]=0;//使元素为0,表示已经跳出
Con=0;//报数重新开始
Total_p--;总人数减1人
}
i++;//指向下一个人
if(i==n)//表示最后一个人已经报过数
i=0;//又从第一个人开始数
}
for(i=0;i<n;i++)
if(a[i]!=0)
printf("The number of the last people is %d\n",a[i]);//找出数组中不为0的元素,此人则是最后留下的人
return 0;
}
温馨提示:内容为网友见解,仅供参考