C语言:输入10个整数,按从小到大排序,再输入一个整数,插入到已排好序的数组中,保持原数组的顺序不变。

C语言求助:
2、 输入10个整数,按从小到大排序,再输入一个整数,插入到已排好序的数组中,保持原数组的顺序不变。
3、 补充题:输入n个正整数(代表n个人),围成一圈,按1,2,3报数,报到3的人跳出。试编一个程序,问最后一个留在圈中的人是谁?
求助达人!

貌似都是书上的题啊
第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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-13
第一个有人写了,我来写那个补充题吧:
#include<iostream>
#include<conio.h>
using namespace std;

struct Jose
{
iint code;
Jose* next;
};

int n, s, m;
Jose *pCur, *pivot;

bool getValue();
Jose* createRing();
void countBoy(int m);
void process();

int main()
{
if(!getValue()) return 1;
Jose* pJose = createRing();
process();
cout<<"\nThe winner is "<<pCur->code<<"\n";
delete[] pJose;
getch();
}

bool getValue()
{
cout<<"please input boyNumber, startPosition, intervalNumber: \n";
cin>>n>>s>>m;
if(n>=2 && s>=1 && s<=n && m>=1 && m<=m) return true;
cerr<<"failed in bad boyNumber or startPosition or intervalNumber.\n";
return false;
}

Jose* createRing()
{
Jose* px = new Jose[n];
for(int i=1; i<=n; ++i)
{ px[i-1].next = &px[i%n];
px[i-1].code = i;
}
cout<<"There are "<<n<<" boys.\n";
pivot = & px[n-2];
pCur = &px[n-1];
countBoy(s-1);
return px;
}

void countBoy(int m)
{
for(int i=0; i<m; ++i)
{ pivot = pCur;
pCur = pivot->next;
}
}

void process()
{
for(int i=1; i<n; ++i)
{ countBoy(m);
static int line=0;
cout<<" "<<pCur->code;
if(!(++line%10)) cout<<"\n";
pivot->next = pCur->next;
pCur = pivot;
}
}
这个应该就是你说的功能了。本回答被提问者和网友采纳
第2个回答  2008-11-01
#include<iostream.h>
main()
{
int a,b;
int array[10];
for(int i=0;i<10;i++)
cin>>array[i];
for(b=9;b>0;b++)
for(i=0;i<b;i++)
if(array[i]>array[i+1])
{
a=array[i];
array[i]=array[i+1];
array[i+1]=a;
}
for(i=0;i<10;i++)
cout<<endl<<array[i];
}
第3个回答  2008-11-01
很多,很古老的问题了啊,可以在网络上找到一大堆答案的。