首页
论坛
课程
招聘
雪    币: 15
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝

[原创]不用循环和if判断解决倒序问题

2011-12-7 17:26 5305

[原创]不用循环和if判断解决倒序问题

2011-12-7 17:26
5305
源题目出自 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;
}

HWS计划·2020安全精英夏令营来了!我们在华为松山湖欧洲小镇等你

最新回复 (7)
雪    币: 59
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
ccnyou 活跃值 2011-12-7 21:10
2
0
char * __cdecl strrev(char *);不就好了吗?
雪    币: 15
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
search 活跃值 2011-12-8 11:53
3
0
原型:extern char *strrev(char *s);
        
用法:#include <string.h>
  
功能:把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)。
  
说明:返回指向颠倒顺序后的字符串指针。

char *strrev(char *s)
{
    if (s == NULL || s[0] == '\0')
        return s;

    for (char t, *p = s, *q = s + strlen(s) - 1; p < q; p++, q--)
        t = *p, *p = *q, *q = t;

    return s;
}
也是使用了判断加循环。呵呵。
雪    币: 284
活跃值: 活跃值 (14)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
飞心男孩 活跃值 2 2011-12-8 12:45
4
0
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);
}
雪    币: 15
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
search 活跃值 2011-12-14 17:08
5
0
#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为真,执行。
还有没有更牛逼的代码啊
雪    币: 179
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
KID基德 活跃值 2012-1-30 05:42
6
0
楼主 弱弱的问一句
在main主函数里面的daoxu(i-1); 是什么意思 有什么用 请教
雪    币: 25
活跃值: 活跃值 (12)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
邋遢鬼 活跃值 2012-1-30 07:47
7
0
调用一个自定义函数。就是倒序显示字符串函数。
雪    币: 70
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yaneng 活跃值 2012-2-1 12:59
8
0
优化一下
void f(char * pchar)
{
    pchar[0] && (f(pchar+1), printf("%c",pchar[0]));
}
游客
登录 | 注册 方可回帖
返回