源题目出自 http://kssd.pediy.com/ 第11篇 编程篇->编程语言->C语言
这个题目既然出自C语言里面。那么自然就使用C语言来回答。汇编以及其他语言就不用了。

循环有 for(;;) while() do while() 
不使用循环,不使用If,将其逆序输出。
例如:
输入:124578ABc (长度限制为100吧,无限输入还是不现实)
输出:cBA875421

下面是我的作答。我采用递归算法,加switch结束。总共代码21行。
不过,不知道还有没有更简单的,希望大家能给出更简单的。
语言的话都整C语言吧。



#include<stdio.h>
#include<string.h>
char c[100];
void daoxu(int n)
{
 printf("%c",c[n]);
switch(n)
{
case 0:break;
default:daoxu(n-1);
}
}
int main()
{
scanf("%s",&c);
int i;
i=strlen(c);
daoxu(i-1);
printf("\n");
return 0;
}

  • 标 题:答复
  • 作 者:飞心男孩
  • 时 间:2011-12-08 12:45:15

int f(char * pchar)
{
    return (pchar[0])&&(((pchar[0])&&f(pchar+1))|| ((pchar[0])&&!printf("%c",pchar[0])));
}
int main()
{
  char *a = "12345";
  return  f(a);
}

  • 标 题:答复
  • 作 者:search
  • 时 间:2011-12-14 17:08:21

#include<stdio.h>
int f(char * pchar)
{
    return (pchar[0])&&(((pchar[0])&&f(pchar+1))||((pchar[0])&&!printf("%c",pchar[0])));
}
int main()
{
  char c[100];
  scanf("%s",&c);
  f(c);
  printf("\n");
 return 0;
}
很不错的递归代码加了逻辑与和或的判断
printf("%c",pchar[0]);打印成功返回0;
指针为空返回0,指针非空为真。
非0为真,执行。
还有没有更牛逼的代码啊

  • 标 题:答复
  • 作 者:yaneng
  • 时 间:2012-02-01 12:59:32

优化一下
void f(char * pchar)
{
    pchar[0] && (f(pchar+1), printf("%c",pchar[0]));
}