读书人

超级恶心的面试题解决办法

发布时间: 2012-03-12 12:45:33 作者: rapoo

超级恶心的面试题
只允许使用一个循环
先输出1至10内的奇数
然后输出其中的偶数
结果应该是这样的
1
3
5
7
9
2
4
6
8
大家可以竭尽全力的想啊


[解决办法]
怎么感觉得先保存呢?弄个字符串把奇数里面插吧...,偶数直接附加到后面去,最后再输出。
这样是不是有点儿复杂?
[解决办法]
#include <stdio.h>

void main(()
{
int i;
int num[10];
char output[20];

for(i=1;i<10;i++)
{
if (i%2!=0)
num[i/2] = i;
else
num[5+i/2 -1] = i;
}
sprintf(output, "%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",
num[0],num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8]);

printf(output);
}

[解决办法]
for(i=1;i <10;i++)
{
if (i<=5)
cout<<(2*i-1)<<endl;
else
cout<<(2*i-10)<<endl;
}
这样就好了。
[解决办法]
做的不好不要笑。。。

C/C++ code
#include <stdio.h>int main(void){  int a[10];  int i, flag;  for(i=0; i<10; ++i)  {a[i]=i+1;}  for(i=0, flag=0; ; i+=2, ++flag)  {    if(i<10)      printf("%d ", a[i]);    else      printf("%d ", (i%10)+2);    if(flag==9)      break;   }  system("pause");  return 0; }
[解决办法]
恶心也没法,谁叫别人是大爷.
甭管恶不恶心, 给它先弄出来.
[解决办法]
C/C++ code
#include <stdio.h>//6楼的错了int main(void){  int a[10];  int i, flag;  for(i=0; i<10; ++i)  {a[i]=i+1;}  for(i=0, flag=0; ; i+=2, ++flag)  {    if(i<10)      printf("%d ", a[i]);    else      printf("%d ", a[(i%10)+1]);    if(flag==9)      break;   }  system("pause");  return 0; }
[解决办法]
对的
[解决办法]
探讨
大家注意啊
利用Windows的操作系统特性有个很恶心的解法
除了循环不用做任何的额外计算

[解决办法]
3楼的对了
[解决办法]
#define N  9

int main()
{
int i;
for(i=1; i <= N; i++)
{
if(i <= (N+1)/2)
printf("%d ", 2*i-1);
else
printf("%d ", 2*i-((N+1)/2)*2);
}
return 0;
}

读书人网 >C++

热点推荐