#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i < 26; ++i)
printf("%26.*s%s\n", i + 1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ" , "ZYXWVUTSRQPONMLKJIHGFEDCBA" + 26 - i);//
return 0;
}
我试了一下:
printf("%26.*s%s\n", i + 1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ" , "ZYXWVUTSRQPONMLKJIHGFEDCBA" + 26 - i);
其中,*是i+1的占位符,也就是说i+1的值会放到*中去,%26.*s的意思好像是说输出26的前*个,
26的意思应该是从屏幕的第26个位置开始向前输出*(i+1)个char字符,也就是靠右输出,你应该懂的。
后面的"ABCDEFGHIJKLMNOPQRSTUVWXYZ"相当于一个char指针数组,长度为26,
"ZYXWVUTSRQPONMLKJIHGFEDCBA" + 26 - i,既是把前面的数组后移26-i位输出后面的,
说的有点乱,你理解一下吧,如果有什么不对的地方还请指教。
*是i+1的占位符,%26.*s是"ABCDEFGHIJKLMNOPQRSTUVWXYZ"的占位符,%s是"ZYXWVUTSRQPONMLKJIHGFEDCBA" + 26 - i的占位符。
[
本帖最后由 shmilyflf 于 2013-3-14 21:45 编辑 ]