我试图从我的表中打印并计算某个数组。我想打印'O'并计算弹出的次数。计数部分我得到了它但是以表格格式打印'O'我不能。每当我试图打印'O'时,它就会给我带来快乐的面孔。
char poste[]={'A','P','A','P','A','O','P','P','O'};
for(i=0;i<9;i++)
{
if(poste[i]=='O') count++;
}
printf("Number of operators :%d\n", count);
printf("Poste\n");
for(i=0; i<9;i++)
{
printf("%c",poste[i]=='O');
}
执行给了我这些幸福的面孔
Poste
A
P
A
P
A
O
P
P
O
number of operators :2
Poste
☺ ☺
答案 0 :(得分:2)
您正在打印poste[i]=='O'
。你想要做的是如下:
for ( i = 0; i < 9; i++ )
if ( poste[i] == 'O' )
printf ( "%c", poste[i] );
答案 1 :(得分:0)
您的专线printf("%c",poste[i]=='O')
正在打印一个字符。哪个角色?好吧,poste[i]=='O'
是一个条件。条件返回true
或false
。当这些值转换为字符时,它们将首先转换为int 1
或0
,然后转换为char,'☺'(这是ascii值为1的字符)或'NULL'。
你想要的是用if语句检查条件,然后printf实际的字符:
if ( poste[i] == 'O' ) {
printf ( "%c", poste[i] );
}
答案 2 :(得分:0)
printf("%c",poste[i]=='O');
这里poste[i] == 'O'
,评估为1(真,poste[i]
等于'O'
)或0(假,它不相等)。
此结果属于int
类型,但您告诉printf
它是char
。由于int
和char
s的类型不同且大小不相同,因此会导致奇怪的未定义的行为。在这种情况下,计算机开始像疯子一样咧着嘴笑。
如果要打印1或0以表示相等更改为%c
至%i
(或%d
)。如果您想在每次相等时打印'O'
,请将其更改为
if(poste[i] == 'O'){
printf("%c", poste[i]);
}
请注意,到那时你也可以打印
printf("O");
因为你知道它只会打印'O's
答案 3 :(得分:0)
您正在打印表达式poste[i]=='O'
的结果
替换printf("%c",poste[i]=='O');
与if (poste[i] == 'O') printf("O");