利用printf的变长参数输出N王后
*
可以作为printf函数第一个参数中的占位符 例如 printf("%*.*f\n", 10, 4, 1234.56); //不输出10和4而输出1234.5600
,它在输出字符串时也适用。 例如
for(int i=0;i<8;i++)
printf("%.8s\n","-------Q-------"+i);```
输出:
-------Q ------Q- -----Q-- ----Q--- ---Q---- --Q----- -Q------ Q-------
现假设我们把各行王后的棋子位置存入一个数组,就可以输出图形了。
#include #include
void printq(int s[],int n) { for(int x=0;x<n;x++) printf("%.*s\n",n,"---------Q---------"+(10-n)+(int)round(log(s[x])/log(2))); } int main() { int s[10]={1,4,16,64,2,8,32}; //log(2,n)代表位置 printq(s,7);
int s1[10]= {2,8,32,1,4,16}; printq(s1,6); return 0; }
输出
------Q ----Q-- --Q---- Q------ -----Q- ---Q--- -Q-----
----Q- --Q--- Q----- -----Q ---Q-- -Q----