2014-02-17 107 views
0

即時消息試圖從我的表中打印和計算某個數組。我想打印'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 
☺ ☺ 

回答

2

您打印poste[i]=='O'。你想要做的是如下:

for (i = 0; i < 9; i++) 
    if (poste[i] == 'O') 
     printf ("%c", poste[i]); 
+0

THX,我完全忘記了==跡象意味着真正等於1。 – user3268216

0

你的線printf("%c",poste[i]=='O')正在打印一個字符。哪個角色?那麼,poste[i]=='O'是一個條件。條件返回truefalse。當這些值被轉換成一個字符時,它們將首先被轉換爲一個int,10,然後是一個字符'☺'(它是ascii值爲1的字符)或'null'。

你想要的是與if語句和檢查條件,那麼在printf實際字符:

if (poste[i] == 'O') { 
    printf ("%c", poste[i]); 
} 
0
printf("%c",poste[i]=='O'); 

這裏poste[i] == 'O',這個計算結果爲1(真,poste[i]等於'O')或0(錯誤,不等於)。

此結果的類型爲int,但您要告訴printf這是char。由於int s和char s不是同一類型,而且尺寸也不相同,這會導致奇怪,並且未定義的行爲。在這種情況下,電腦開始像一個瘋子咧嘴笑起來。

如果要打印1或0以指示相等更改%c%i(或%d)。如果您想打印一個'O'每次它是相等的,那麼將其更改爲

if(poste[i] == 'O'){ 
    printf("%c", poste[i]); 
} 

需要注意的是,那時你可能也只是打印

printf("O"); 

,因爲你知道它會只打印「0'的

0

您正在打印表達式poste[i]=='O'的結果。
更換printf("%c",poste[i]=='O');
if (poste[i] == 'O') printf("O");