c语言编写 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到4报数),凡报到4的人退出圈子,
答案:2 悬赏:0 手机版
解决时间 2021-03-23 14:43
- 提问者网友:树红树绿
- 2021-03-22 14:13
c语言编写 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到4报数),凡报到4的人退出圈子,
最佳答案
- 五星知识达人网友:逐風
- 2021-03-22 15:23
从1开始编号吗追问恩。是的追答好的大概十几分钟追问好的。麻烦你了追答比我想的难了点,可能多需要一些时间,不过做出来我就发给你追问恩。好的。没事,你慢慢做嘛太感谢你了追答对了,能不能给两个测试的数字,比如4个人的时候剩下的是2,5个人的时候应该是多少?追问5的时候是16的时候是5追答#include
int len(int a[999]){
int i;
for(i=0;a[i]!=0;i++);
return i;
}
void del(int a[999],int n){
int i;
for(i=n;i a[i]=a[i+1];
}
int main(){
int a[999]={0},n,i,j,m=-1;
printf("请输入人数:");
scanf("%d",&n);
for(i=0;i a[i]=i+1;//原始编号
for(i=0;len(a)!=1;i++){
for(j=0;j<4;j++){
m++;
if(a[m]==0)
m=0;
}
//每次运行后结果
del(a,m);
m--;
}
printf("是原来的第%d位",a[0]);
return 0;
}你可以测试一下了追问恩。测试了。非常感谢追答满意请采纳追问你帮我看看。程序没错 但就是输出结果不对追答不符合答案的数字?追问如果输入12个人的话就随机输出了一个数有些输入的数输出是对的,有些输出不对。追答数组长度每次运算都会变你考虑到了没那个i
int len(int a[999]){
int i;
for(i=0;a[i]!=0;i++);
return i;
}
int main() {
int a[100]={0}, b[100]={0};
int i = 0, j = 0;
int n, s = 1;
int k = 0;
printf("please input num:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
a[i] = s;
s++;
}
while (n > 1) {
for (i = 0; i < n; i++) {
k++;
if (k != 4) {
b[j] = a[i];
j++;
}
if (k == 4) {
k = 0;
}
}
n--;
for (i = 0; i < len(a); i++) {
a[i] = b[i];
}
j = 0;
}
for(j=0;j printf("%d ",a[j]);
puts("");
for(j=0;j printf("%d ",b[j]);
puts("");
printf("the num leave is %d \n", a[0]);
return 0;
}加了个东西每次可以显示你a和b数组里面的内容应该可以帮到你追问恩。好的,我先看看追答嗯追问怎么输入10以上的数就不可以了??
追答数组中出现0了,应该是算法的问题吧追问输入9也是这种情况。追答好吧,那你算法是什么?就是怎么编出这个程序的追问就是报数报到4的删除,没有报到4的就存在数组b中,循环下去,直到只有一个数的时候追答好吧,对不起我不知道应该怎么改,不过我觉得需要注意的就在于删除一个数字之后的处理追问循环一次。然后把数组b赋给a又从a数组中报数,报数报到4的删除,没有报到4的又就存在数组b中,循环下去恩。好的,我是初学。不是太懂,我自己在看看。麻烦你了。谢谢我改了,之前报数然后计数不对。现在对了。追答嗯,恭喜你啊
int len(int a[999]){
int i;
for(i=0;a[i]!=0;i++);
return i;
}
void del(int a[999],int n){
int i;
for(i=n;i
}
int main(){
int a[999]={0},n,i,j,m=-1;
printf("请输入人数:");
scanf("%d",&n);
for(i=0;i
for(i=0;len(a)!=1;i++){
for(j=0;j<4;j++){
m++;
if(a[m]==0)
m=0;
}
//每次运行后结果
del(a,m);
m--;
}
printf("是原来的第%d位",a[0]);
return 0;
}你可以测试一下了追问恩。测试了。非常感谢追答满意请采纳追问你帮我看看。程序没错 但就是输出结果不对追答不符合答案的数字?追问如果输入12个人的话就随机输出了一个数有些输入的数输出是对的,有些输出不对。追答数组长度每次运算都会变你考虑到了没那个i
int len(int a[999]){
int i;
for(i=0;a[i]!=0;i++);
return i;
}
int main() {
int a[100]={0}, b[100]={0};
int i = 0, j = 0;
int n, s = 1;
int k = 0;
printf("please input num:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
a[i] = s;
s++;
}
while (n > 1) {
for (i = 0; i < n; i++) {
k++;
if (k != 4) {
b[j] = a[i];
j++;
}
if (k == 4) {
k = 0;
}
}
n--;
for (i = 0; i < len(a); i++) {
a[i] = b[i];
}
j = 0;
}
for(j=0;j
puts("");
for(j=0;j
puts("");
printf("the num leave is %d \n", a[0]);
return 0;
}加了个东西每次可以显示你a和b数组里面的内容应该可以帮到你追问恩。好的,我先看看追答嗯追问怎么输入10以上的数就不可以了??
追答数组中出现0了,应该是算法的问题吧追问输入9也是这种情况。追答好吧,那你算法是什么?就是怎么编出这个程序的追问就是报数报到4的删除,没有报到4的就存在数组b中,循环下去,直到只有一个数的时候追答好吧,对不起我不知道应该怎么改,不过我觉得需要注意的就在于删除一个数字之后的处理追问循环一次。然后把数组b赋给a又从a数组中报数,报数报到4的删除,没有报到4的又就存在数组b中,循环下去恩。好的,我是初学。不是太懂,我自己在看看。麻烦你了。谢谢我改了,之前报数然后计数不对。现在对了。追答嗯,恭喜你啊
全部回答
- 1楼网友:酒醒三更
- 2021-03-22 16:13
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯