使用printf而不使用任何循环或分支?
答案 0 :(得分:2)
递归是你的朋友:
int print_char_by_char(char * p)
{
*p && print_char_by_char(p+1);
printf("%c", *p);
return 1;
}
int main(void)
{
print_char_by_char("alk");
return 0;
}
答案 1 :(得分:1)
扩展@alk的答案,你可以使用递归和指针来运行,以避免使用逻辑运算符:
#include <stdio.h>
void dummy(char *p);
void print(char *p);
void (*fp[])(char *) = {dummy, print};
void dummy(char *p)
{
(void)p;
}
/**
* Read *p as bool (0 or 1) using bitwise operators
* Call print() recursively if 1
* Call dummy() if 0 and exits from function
*/
void print(char *p)
{
char i = *p;
i |= i >> 4;
i |= i >> 2;
i |= i >> 1;
printf("%c", *p);
fp[i & 1](p + 1);
}
int main(void)
{
print("Hello world\n");
return 0;
}
答案 2 :(得分:0)
嗯,你的问题是
如何逐字符地打印C字符串?
使用printf而不使用任何循环或分支?
最简单的答案是
#include<stdio.h>
int main()
{
char a[]="blablabla";
printf("%s",a);
return 0;
}
这是你问题的答案。如果这不是您想要的,那么指定您的确切问题,提供更多详细信息。
答案 3 :(得分:0)
@ qwe2004,告诉你的教授Stack Overflow社区同意它无法完成。如果他说可以做到,我们都有兴趣看到他聪明而狡猾的做法,并学习。 (告诉他我们也会批评隐藏的分支和逻辑测试。)