Q:

期待通りの出力結果が得られないです。

C言語に慣れてないため、お知恵を貸して頂けると嬉しいです。
whiteとblackのいずれかを入力して、
whiteが2つになったら、pass
blackが3つになったら、failure
にするようにしたいです。
一応コードを書いてみましたが、
期待通りの出力結果が得られないです。
■入力例
4
black
black
white
black

■出力例
black
black
white
failure ←4回目にblackが入力され、その時点でblackが3つになったため、failureを出力する。

#include <stdio.h>
#include <string.h>

int blackcount; 
int whitecount; 

void count_black(void) {
    if(blackcount == 3)
    {
        printf("failure"); 
    }
    else{
        printf("black");
    }

}

void count_white(void) {
    if(whitecount == 2)
    {
        printf("pass"); 
    }
    else{
        printf("white"); //strike!
    }
}

int main(void){

    int i,num;
    char Judgment[10];
    char *s1 = "black";

    scanf("%d",&num);

    if((3<=num)&&(num<=6)){
        for(i=1; i<=num; i++){

            scanf("%s", Judgment);

            if (strcmp(Judgment,s1) == 0)
            {
                count_black();
                blackcount++;
            }
            else{
                count_white();
                whitecount++;
            }
        }
    }
    return 0;
}

宜しくお願い致します。

A:

カウントしてから count_black count_white を実行することで、期待通りの出力が得られます。
この回答ではそれぞれの count_ 内部での white 及び black の数を出力しています。
#include <stdio.h>
#include <string.h>

int blackcount;
int whitecount;

void count_black(void) {
  if(blackcount == 3) {
    printf("failure\n");
  } else {
    printf("[%d]white [%d]black\n", whitecount, blackcount);
  }
}

void count_white(void) {
  if(whitecount == 2) {
    printf("pass\n");
  } else {
    printf("[%d]white [%d]black\n", whitecount, blackcount);
  }
}

int main(void){
  int i,num;
  char Judgment[10];

  scanf("%d",&num);

  if((3<=num)&&(num<=6)){
    for(i=1; i<=num; i++){

      scanf("%s", Judgment);

      if (strcmp(Judgment, "black") == 0) {
          blackcount++;
          count_black();
      } else{
        whitecount++;
        count_white();
      }
    }
  }
  return 0;
}

また、回答とは外れるコメントとなりますが、 blackcount 及び whitecount をグローバルに置くならばそれぞれの関数の中でカウントするほうが分かりやすくなるかと思います。

