Report#3

  • サンプルプログラム
    • sample#1.c:while文、if,if-else,if-else if-else文、真(TRUE)と偽(FALSE)
      #include <stdio.h>
      
      #define FALSE 0
      #define TRUE  !FALSE
      
      int main(){
        int  value,c, count;
        char line[128];
      
        count = 0;
      
        while(TRUE){
          count++;
          if(count > 5) break;
      
          printf("Enter a HexValue ===> ");
          fgets(line, sizeof(line), stdin);
          sscanf(line, "%x", &c);
      
          printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c);
          if(0x20 <= c && c <= 0x7e)
            printf("-%%c(%c)\n",c);
          else
            printf("-Not Printable character\n");
      
          if      (0x20 <= c && c <= 0x2f){
            puts("====> Scope_A\n");
          }else if(0x30 <= c && c <= 0x39){
            puts("====> Scope_B\n");
          }else if(0x3a <= c && c <= 0x40){
            puts("====> Scope_C\n");
          }else if(0x41 <= c && c <= 0x5a){
            puts("====> Scope_D\n");
          }else{
            puts("====> Scope_E\n");
          }
        }
      
        return(0);
      }
      
      /*
      Enter a HexValue ===> 56
      Colum=01:%d( 86)-%x(56)-%c(V)
      ====> Scope_D
      
      Enter a HexValue ===> 07
      Colum=02:%d(  7)-%x( 7)-Not Printable character
      ====> Scope_E
      
      Enter a HexValue ===> ff
      Colum=03:%d(255)-%x(ff)-Not Printable character
      ====> Scope_E
      
      Enter a HexValue ===> 7f
      Colum=04:%d(127)-%x(7f)-Not Printable character
      ====> Scope_E
      
      Enter a HexValue ===> 7e
      Colum=05:%d(126)-%x(7e)-%c(~)
      ====> Scope_E
      */
  • sample#2.c:while文&for文
    #include <stdio.h>
    
    #define FALSE 0
    #define TRUE  !FALSE
    
    int main(){
      int  count;
    
      count = 0;
      while(TRUE){
        count++;
        if(count > 5) break;
        printf("While-Count=%2d\n",count);
      }
    
      for(count=1; count<=5; count++){
        printf("for  -Count=%2d\n",count);
      }
    
      return(0);
    }
    
    /*
    While-Count= 1
    While-Count= 2
    While-Count= 3
    While-Count= 4
    While-Count= 5
    for  -Count= 1
    for  -Count= 2
    for  -Count= 3
    for  -Count= 4
    for  -Count= 5
    */
  • sample#3.c:文字コード(16進数&文字)出力
    #include <stdio.h>
    
    int main(){
      int c;
    
      for(c = 0x20; c<=0x40; c++){
        if((c % 4) == 0) printf("\n");
        printf("%%x(%x)-%%c(%c) | ",c,c);
      }
      printf("\n");
    
      return(0);
    }
    
    /*
    %x(20)-%c( ) | %x(21)-%c(!) | %x(22)-%c(") | %x(23)-%c(#) |
    %x(24)-%c($) | %x(25)-%c(%) | %x(26)-%c(&) | %x(27)-%c(') |
    %x(28)-%c(() | %x(29)-%c()) | %x(2a)-%c(*) | %x(2b)-%c(+) |
    %x(2c)-%c(,) | %x(2d)-%c(-) | %x(2e)-%c(.) | %x(2f)-%c(/) |
    %x(30)-%c(0) | %x(31)-%c(1) | %x(32)-%c(2) | %x(33)-%c(3) |
    %x(34)-%c(4) | %x(35)-%c(5) | %x(36)-%c(6) | %x(37)-%c(7) |
    %x(38)-%c(8) | %x(39)-%c(9) | %x(3a)-%c(:) | %x(3b)-%c(;) |
    %x(3c)-%c(<) | %x(3d)-%c(=) | %x(3e)-%c(>) | %x(3f)-%c(?) |
    %x(40)-%c(@) | 
    */
  1. sample#1.c を解析し、ASCIIコード(0x00〜0x7f)の各範囲(Scope)を判断するプログラムを作成せよ。範囲例)数字:figures、英大文字:capital letter、英小文字:small letter、非表示文字:Not Printable character、その他:misc.等
  2. sample#2.c のプログラムの動作を考察せよ。
  3. sample#3.c を解析し、表示可能な文字によるASCIIコード表を作成せよ。
  4. 文字(文字列では無い)の演算について考察せよ。例)('a'-'A')?、('f'-'a')?

解説

  • boolean型(ブール型)、論理型
    • Pascal言語やJava言語にはboolean型【真(TRUE)と偽(FALSE)の2種類の値だけを扱う】が用意されているが、C言語にはない。
    • 偽(FALSE)の値はどの処理系でも"0"と定められているが、真(TRUE)の値は"1"、"-1"…と定まっていない。
    • C言語では偽(FALSE)の値は"0"、真(TRUE)の値は"0"以外という処理が行われている。但し、値"0"の否定値を出力すると"1"となる。「偽(FALSE)の値"0"の否定値="1"」というのがC言語固有の事情である。
    • 従って、#defineで真(TRUE)と偽(FALSE)の値を定義し、置換するためには次のような記述を行う。
      #define FALSE 0
      #define TRUE  !FALSE
  • 文法
    • #define:PP.137(文字列の置き換え)
    • while文:PP.78
    • if文:PP.75
    • for文:PP.109


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-04-21 (火) 11:01:40 (1584d)