编程请教

来源:百度知道 编辑:UC知道 时间:2024/05/13 04:16:08
我在C语言中编了1个可是结果是错误的清高手帮忙!
问题是:1到100中每次抽出奇数不要然后把偶数在重新排列一直着样到1个元素问着个元素是几?我编的程序结果是3不知道怎么了而答案是64,我编的如下:
#include "stdio.h"
int f(int a[],int n)
{
int i,j;
if(n!=1)
{
for(i=0;i<n/2;i++)
{
j=2*i+1;
a[i]=a[j];
n=n/2;
f(a,n);
}
}
else
return (a[0]);
}

main()
{
int a[100];
int i,b;
for(i=0;i<100;i++)
a[i]=i+1;
b=f(a,100);
printf("%d",b);

}
请帮我修改修改,如果我想任意输入个数字安着个方法求结果怎么样编,谢谢了

#include "stdio.h"
int f(int a[],int n)
{
int i,j;
if(n!=1)
{
for(i=0;i<n/2;i++)
{
j=2*i+1;
a[i]=a[j];
} // 上移了两行!!!!!!!!!!!

n=n/2;
f(a,n);

}
else
return (a[0]);
}

main()
{
int a[100];
int i,b;
for(i=0;i<100;i++)
a[i]=i+1;
b=f(a,100);
printf("%d",b);

}

以下程序经调试通过,运行结果为64。

main()
{
int a[100];
int i;
int flag=1;//判断奇偶标志位
int last;
bool canloop=true;
for(i=0;i<100;i++) a[i]=i+1;

while(canloop)
{
canloop=false;
flag=1;
for(i=0;i<100;i++)
{
if(a[i]!=0) //没有被舍弃
{
if(flag==1)
{
last=a[i];
a[i]=0; //是奇数则舍弃
flag=2;
}
else
{
flag=1; //是偶数则跳过
canloop=true;
}
}