【C言語】入力した論理回路の真理値表(全6種類)を表示するプログラム

This article was updated on 2026/10/31

目次

はじめに

どうも! みなためです。

この記事では、C言語でユーザーが入力した論理回路名に対応する「真理値表」を表示させるためのプログラムを紹介しています。

表示する論理回路は次の6種類です。

  • AND
  • OR
  • NAND
  • NOR
  • XOR
  • XNOR

それではさっそく、ソースコード(例)と実行結果(例)を確認していきましょう。

入力した回路の真理値表を表示するプログラムの例

ソースコード

#include<stdio.h>

int main(void)
{
  int a,b,x;
  char table[5] = {0}; //配列の要素全体を0で初期化。

  printf("真理値表を表示します。回路名を入力してください\n");
  printf("(AND、OR、NAND、NOR、XOR、XNORの6種類です。)。>");
  scanf("%s",&table);

  printf("%s回路の真理値表(入力:A、B 出力:X)\n",table);
  printf("A B X\n");
  printf("------\n");
	
  if(table[0]=='A' && table[1]=='N' && table[2]=='D' && table[3]==0 && table[4]==0) //AND回路
  {
    for(a=0; a<=1; a=a+1)
    {
      for(b=0; b<=1; b=b+1)
      {
        x = a & b; //AND演算
        printf("%d %d %d\n",a,b,x);
      }
    }
  }

  else if(table[0]=='O' && table[1]=='R' && table[2]==0 && table[3]==0 && table[4]==0) //OR回路
  {
    for(a=0; a<=1; a=a+1)
    {
      for(b=0; b<=1; b=b+1)
      {
        x = a | b; //OR演算
        printf("%d %d %d\n",a,b,x);
      }
    }
  }

  else if(table[0]=='N' && table[1]=='A' && table[2]=='N' && table[3]=='D' && table[4]==0) //NAND回路
  {
    for(a=0; a<=1; a=a+1)
    {
      for(b=0; b<=1; b=b+1)
      {
        x = !(a & b); //NAND演算
        printf("%d %d %d\n",a,b,x);
      }
    }
  }

  else if(table[0]=='N' && table[1]=='O' && table[2]=='R' && table[3]==0 && table[4]==0) //NOR回路
  {
    for(a=0; a<=1; a=a+1)
    {
      for(b=0; b<=1; b=b+1)
      {
        x = !(a | b); //NOR演算
        printf("%d %d %d\n",a,b,x);
      }
    }
  }

  else if(table[0]=='X' && table[1]=='O' && table[2]=='R' && table[3]==0 && table[4]==0) //XOR回路
  {
    for(a=0; a<=1; a=a+1)
    {
      for(b=0; b<=1; b=b+1)
      {
        x = a ^ b; //XOR演算
        printf("%d %d %d\n",a,b,x);
      }
    }
  }

  else if(table[0]=='X' && table[1]=='N' && table[2]=='O' && table[3]=='R' && table[4]==0) //XNOR回路
  {
    for(a=0; a<=1; a=a+1)
    {
      for(b=0; b<=1; b=b+1)
      {
        x = !(a ^ b); //XNOR演算
        printf("%d %d %d\n",a,b,x);
      }
    }
  }

  else
  {
    printf("入力した回路の真理値表はありません。別の名称で試してください。\n");
  }

  return(0);
}

ここで、table[0]が(table配列の)1文字め、table[1]が2文字め、table[2]が3文字め、table[3]が4文字め、table[4]が5文字めに該当します。

それでは、実行結果を確認していきます。

実行結果の例

真理値表を表示します。回路名を入力してください
(AND、OR、NAND、NOR、XOR、XNORの6種類です。)。>XOR
XOR回路の真理値表(入力:A、B 出力:X)
A B X
------
0 0 0
0 1 1
1 0 1
1 1 0

今回は「XOR」を入力しました。

すると、真理値表が正しく表示されました!

それでは、ifやelse ifの条件に該当しない回路名を入力してみます。

真理値表を表示します。回路名を入力してください
(AND、OR、NAND、NOR、XOR、XNORの6種類です。)。>HOT
HOT回路の真理値表(入力:A、B 出力:X)
A B X
------
入力した回路の真理値表はありません。別の名称で試してください。

このように、HOT回路という名前の論理回路は存在せず、条件に該当しませんので、「入力した回路の真理値表はありません。別の名称で試してください。」と表示されました。

この記事はここまでです。

お疲れ様でした!