c语言编程题
关注:184 答案:4 手机版
解决时间 2021-01-19 19:18
提问者十年不久我陪你走
2021-01-18 22:09
有两道c语言的编程题,麻烦高手帮帮忙了
第一道:17个人围坐一圈,顺序编号为1,2,3,…,17。现在从第一个人开始数起,每数到7时,这个人就从圈里出来,再从下一个数重新开始数1,2,…,7,数到第7的这个人也从圈里出来,直到全部17个人从圈里出来为此。例如,前面站出来的4个人是7,14,4和12。编程输出从圈里出来的人的顺序。(利用数组)
第二道:.编写函数,将n个整数的数列进行重新排放,重新排放后的结果为:前段都是奇数,后段都是偶数,并编写主函数完成:
①输入10个整数;
②调用此函数进行重排;
③输出重排后的结果。
谢谢了!
最佳答案
二级知识专家冷月花魂
2021-01-18 23:00
第一个其实用循环链表更方便……不过既然要求数组那就数组吧
#include "stdio.h"
main()
{
int a[17]={0};
int i,j,m=-1;
for(i=0;i<17;i++)
{
for(j=0;j<7;j++)
{
m++;
m=m%17;
if(a[m]==1)
{
j--;
continue;
}
}
a[m]=1;
printf("%d ",m+1);
}
return 0;
}
第二个还可以吧,用了快速排序的思想
#include "stdio.h"
fun(int *a)
{
int i=0,j=9;
int m;
while(i
{
while(i
while(i
m=a[i];
a[i]=a[j];
a[j]=m;
}
return 0;
}
main()
{
int a[10]={0};
int i,j,m=-1;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
fun(a);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
system("pause");
return 0;
}
希望给分,谢谢
全部回答
1楼亲亲兔耳朵
2021-01-19 03:23
先提一下(1)的思路;
数组元素内容存放下一个出列的元素的下标,从而构成一个出列元素的顺序链表,然后输出这个顺序链表即可
这样逻辑结构比较复杂,要==
2楼劳资喜欢你
2021-01-19 02:07
#include
void main()
{
int a,b,c,n=0,num[1000];
for(a=1;a<=5;a++)
for(b=1;b<=5;b++)
for(c=1;c<=5;c++)
if(a!=b&&a!=c&&b!=c) num[n++]=a*100+b*10+c;
printf("一共有%d个这样的三位数,它们是:\n",n);
for(a=0;a
{
printf("%5d",num[a]);
if((a+1)%10==0)printf("\n");
}
}
3楼椥揂濃
2021-01-19 00:36
给你答一道吧:
#include "stdio.h"
main()
{
int ren[18]; // 1 表示在座,0 表示出局
int i;
// 开始都在座
for ( i = 1; i <= 17; i++)
{
ren[i] = 1;
}
// 开始报号
int wz = 1;// 当前报号位置
for( i=1; i<=17; i++)
{
int bhrs = 0; // 第i次已报号人数
while ( true )
{
bhrs += ren[wz];
if ( bhrs == 7)
{
break;
}
wz++;
if (wz == 18)
{
wz = 1;
}
}
printf("第 %2d 个出局: 位置号 %2d \n", i, wz);
ren[wz] = 0; // 出局
wz++; //下一个开始报数
if (wz == 18)
{
wz = 1;
}
}
return 0;
}
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看