❝今天君君在知乎看到一个眼前一亮的回答,分享给大家。❞
问题是这样的:
头尾部都没有','符号,用C语言实现。
我感觉用if感觉太复杂了,有没有更简单的?
例如:
输入:
a[6]={1,2,3,4,5,6}
输出:
1,2,3,4,5,6
下面是"谷雨同学"的回答,挺值得回味的:
#include <stdio.h>
int main(void) {
int a[6] = {1, 2, 3, 4, 5, 6}, i;
for (i = 0; i < 6; i++) {
printf(",%d" + !i, a[i]);
}
return 0;
}
上面回答中,利用了字符指针的偏移。机智地去除了第一个,符号。
当i「等于」0时:
printf(",%d" + !i, a[i]);
=>
printf(",%d" + !0, a[0]);
=>
printf(",%d" + 1, a[0]);
=>
printf("%d", a[0]);
当i「不等于」0时:
printf(",%d" + !i, a[i]);
=>
printf(",%d" + !2, a[2]); // 这里以i = 2为例。
=>
printf(",%d" + 0, a[2]);
=>
printf(",%d", a[2]);
问题链接: https://www.zhihu.com/question/412135686
"谷雨同学"回答链接: https://www.zhihu.com/question/412135686/answer/1396323238