2012年4月1日日曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) の8章(他の制御文)8.1(for文)実習8-2を解いてみる。

8-2.

サイズが5の配列(文字列)のインデックスは0から4なのに、問題のコードは1から5を指定して定義したりfor文でアクセスしたりしているから適切な結果を得られない。

コードを修正。

コード(TextWrangler)

#include <stdio.h>
char line[100];   /* 入力行 */
int seven_count;  /* リスト中の7の数 */
int data[5];      /* 3と7を含むデータリスト */
int three_count;  /* リスト中の3の数 */
int i;            /* リストのインデックス */
int main(){
  seven_count = 0;
  three_count = 0;
  printf("Enter 5 numbers\n");
  fgets(line, sizeof(line), stdin);
  sscanf(line, "%d %d %d %d %d",
    &data[0], &data[1], &data[2],
    &data[3], &data[4]);
  
  for(i = 0; i <= 4; ++i){
    if(data[i] == 3){
      ++three_count;
    }
    if(data[i] == 7){
      ++seven_count;
    }
  }
  printf("Threes %d Sevens %d\n", three_count, seven_count);
  return (0);
}

入出力結果(Terminal)

$ cc -g -o c_program c_program.c
$ ./c_program
Enter 5 numbers
3 7 3 0 2
Threes 2 Sevens 1
$ ./c_program
Enter 5 numbers
7 3 7 0 2
Threes 1 Sevens 2
$ ./c_program
Enter 5 numbers
3 3 3 3 3
Threes 5 Sevens 0
$ ./c_program
Enter 5 numbers
7 3 3 7 7
Threes 2 Sevens 3
$

0 コメント:

コメントを投稿