首页
社区
课程
招聘
[原创]不用循环和if判断解决倒序问题
发表于: 2011-12-7 17:26 7052

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

2011-12-7 17:26
7052

源题目出自 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;
}


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 6
支持
分享
最新回复 (7)
雪    币: 81
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
char * __cdecl strrev(char *);不就好了吗?
2011-12-7 21:10
0
雪    币: 20
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
原型: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;
}
也是使用了判断加循环。呵呵。
2011-12-8 11:53
0
雪    币: 300
活跃值: (179)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
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);
}
2011-12-8 12:45
0
雪    币: 20
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
#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为真,执行。
还有没有更牛逼的代码啊
2011-12-14 17:08
0
雪    币: 169
活跃值: (132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主 弱弱的问一句
在main主函数里面的daoxu(i-1); 是什么意思 有什么用 请教
2012-1-30 05:42
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
调用一个自定义函数。就是倒序显示字符串函数。
2012-1-30 07:47
0
雪    币: 76
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
优化一下
void f(char * pchar)
{
    pchar[0] && (f(pchar+1), printf("%c",pchar[0]));
}
2012-2-1 12:59
0
游客
登录 | 注册 方可回帖
返回
//