C语言一维数组问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 17:56:52
有100个数,从1开始,第3个去掉,一直这样下去,最后的被去掉的是第几个。例:1、2、(3)、4、5、(6)、7、8、(9)、10.....100 括号是去掉的。 到最后只剩2个数。

程序如下:
#include "stdio.h"
main()
{int num[100],i,k,*p=num,quit_num;
for(i=0;i<100;i++)
*(p+i)=i+1;
quit_num=0;
i=0;
k=0;
while(quit_num<100-3)
{if(*(p+i)!=0)k++;
if(k==3)
{quit_num++;
*(p+i)=0;
k=0;
}
i++;
if(i==100){i=0;k=0;}
}
p=p+2;
while(*p==0)p++;
printf("the last number is %d",*p);
}我运行过了,结果为95;最后只剩下1,2.

最后肯定是剩下 1 和 2

太难了,做了一个小时都做不出.

假如你的数组是a[i]
i%3==0
用个循环把他减掉不就行了

我们这里认为去掉就是把那个元素赋值为0,则代码如下;
#include <stdio.h>
int main()
{
int a[100],j;
for(i=0;i<100;i++)
a[i]=i+1;
for(i=1;a[1+i]=!0;i++)
for(j=i+1;j<100;j=j+3)
a[j]=0;
for(i=0;i<100;i++)
if(a[i]!=0)
printf("%d ",a[i]);
}

输出为1 2