c语言中字符输出

来源:百度知道 编辑:UC知道 时间:2024/06/26 05:41:30
#include "stdio.h"
void main(){
int i,j;
for(i=0;i<8;i++){
for(j=0;j<8;j++){
if((i+j)%2==0) printf("%c%c",219,219);
else printf(" ");
printf("\n");
}
}
}
这程序中printf("%c%c",219,219),输出的到底是什么啊,这程序是我在网上看别人的,他说是个国际象棋棋盘,但在我电脑上输出的是没个乱字啊,谁能帮我详解一下?笑笑

简单的分析一下,其实就是当行号和列号的和相加为偶数的时候,就输出两个ASCII码为219的字符,否则输出空格。但由于219超出了127,所以不同的编译器会输出不同的结果。

也就是说,第0行0、2、4、6格,第1行1、3、5、7格……会输出那两个字符。根据我对国际象棋的了解,最右下角的格子是白格,也就是说7行7格是白。所以,那两个字符应该是用来表示白格的。(不过我也觉得奇怪,我猜那个字符应该是比较粗的竖线,这样就是个黑格了,而空格应该是用来表示白格,也许应该调换一下,也就是if((i+j)%2==0) printf(" ");
else printf("%c%c",219,219); )

printf("%c%c",219,219)输出ASCII码值为219的字符

输出的到底是什么啊,

答:你运行一下就知道了

本来就不能显示出来,因为ASCII码只有127个。128以后的是扩展ASCII码,一般在欧洲语言中表示一般特殊字母或符号,在中国用来把两个这样的码拼成一个汉字。
128-255是非打印字符

换成printf("%c%c", '\xA1', '\xF6');

这和编译器有关.
你如果用的是VC++,那么恭喜,你所说的这种状况就会在你的机器上出现.
而用TC2.0,真正的国际象棋棋盘才会显示出来.
实际上ASCII码不止128个,超出部分,不同的编译器会有不同显示结果.