Powered by SmartDoc

ソフトウェア概論B (2011/06/17)
Ver. 1.0

2011年6月17日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2011/soft/soft.html
ソフトウェア概論 A2011年6月17日 の資料

目次

講義資料

当日の OHP 資料

当日のOHP資料です。

追加ファイル

講義で利用するサンプルプログラム

sample-001

Download : sample-001.c ( SJIS 版 )

sample-001.c
/*
 * 2011/06/17 sample-001.c
 */

/*
 * double
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

#define	ABC	123		/* 定数名 「ABC」を定義し、その値を「123」としている */
#define	MYNAME	"栗野俊一"	/* 定数名 「MYNAME」を定義し、その値を「"栗野俊一"」としている */

/*
 *
 */

int main ( void ) {

  s_print_int ( 123 );		/* もちろん、「123」と出力される */
  s_print_newline ();

  s_print_int ( ABC );		/* 定数名 「ABC」の参照、上記と同じく「123」と出力される */
  s_print_newline ();

  s_print_string ( MYNAME );	/* 「"MYNAME"」でない事に注意 */
  s_print_newline ();

  return 0;
}

/*
 *
 */
sample-001.c の実行結果
C:\usr\c\> sample-001
123
123
栗野俊一
C:\usr\c\> 

sample-002

Download : sample-002.c ( SJIS 版 )

sample-002.c
/*
 * 2011/06/17 sample-001.c
 */

/*
 * double
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

int main ( void ) {

  s_print_string ( "小数点数付きの数をキーボードから入力してください。その数を二倍にします : " );
  s_print_double ( s_input_double() * 2.0 );
  s_print_newline();

  return 0;
}

/*
 *
 */
入力例
12.34
sample-002.c の実行結果
C:\usr\c\> sample-002
C:\usr\c\> 

sample-003

Download : sample-003.c ( SJIS 版 )

sample-003.c
/*
 * 2011/06/17 sample-003.c
 */

/*
 * double
 */

#include <stdio.h>
#include <math.h>	/* 数学関数を利用する場合はこれを追加する */
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

void plot_dot_sub ( double pos, double value ) {

  if ( pos >= value ) {			/* 印刷位置まだきた */
	s_print_char ( '*' );			/* 「点」を出力 */
	s_print_newline ();			/* この行は終り */
  } else {
	s_print_char ( ' ' );			/* 空白を出力 */
	plot_dot_sub ( pos + 1.0, value );	/* 続きを計算 */
  }
}

/*
 *	0 〜 79 で、 -1.0 〜 1.0 を表現するには、
 *		x | -1.0 〜 1.0 |       x
 *		--+-------------+---------------
 *		y |    0 〜  79 | ( x + 1 ) * 40 
 */

#define	WIDTH	80.0			/* 一行の中のカラム数を定義 */

void plot_dot ( double value ) {

  plot_dot_sub ( 0.0, ( value + 1.0 ) * WIDTH/2.0 );
}

/*
 *
 */

void print_sin_curve( double top, double end, double step ) {

  if ( top >= end ) {
	/* 何もする必要はない */
  } else {
	plot_dot ( sin ( top ) );			/* sin は正弦関数 */
	print_sin_curve ( top + step, end, step );	/* 次のステップを実行 */
  }

}

/*
 *
 */

#define	PI	3.141592

int main ( void ) {

  print_sin_curve( 0, 2 * PI, 0.1 );	/* PI は 円周率 */

  return 0;
}

/*
 *
 */
sample-003.c の実行結果
C:\usr\c\> sample-003
                                        *
                                            *
                                                *
                                                    *
                                                        *
                                                            *
                                                               *
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
                                                                *
                                                             *
                                                          *
                                                      *
                                                  *
                                              *
                                          *
                                      *
                                  *
                              *
                          *
                       *
                   *
                *
             *
          *
        *
      *
    *
  *
 *
 *
 *
 *
 *
  *
   *
     *
       *
          *
            *
               *
                  *
                      *
                          *
                             *
                                 *
                                     *
C:\usr\c\> 

sample-004

Download : sample-004.c ( SJIS 版 )

sample-004.c
/*
 * 2011/06/17 sample-004.c
 */

/*
 * double
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

int main ( void ) {

  s_print_string ( "13/3 = " );
  s_print_int ( 13/3 );	/* 整数同士の割り算の結果は整数になる */
  s_print_newline ();

  s_print_string ( "13.0/3.0 = " );
  s_print_double ( 13.0/3.0 );	/* 浮動小数点数同士の割り算の結果は浮動小数点数同士になる */
  s_print_newline ();

  s_print_string ( "13.0/3 = " );
  s_print_double ( 13.0/3 );	/* 浮動小数点数が含まれると、整数は浮動小数点に変換されてから計算される */
  s_print_newline ();

  s_print_string ( "13/3.0 = " );
  s_print_double ( 13/3.0 );	/* 浮動小数点数が含まれると、整数は浮動小数点に変換されてから計算される */
  s_print_newline ();

  return 0;
}

/*
 *
 */
sample-004.c の実行結果
C:\usr\c\> sample-004
C:\usr\c\> 

sample-005

Download : sample-005.c ( SJIS 版 )

sample-005.c
/*
 * 2011/06/17 sample-005.c
 */

/*
 * double
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

int main ( void ) {

  /* int */
  s_print_string ( "Int Print : \n" );
  s_print_int ( 1.0 );		/* 浮動小数点数を整数として出力しても... うまくゆかない */
  s_print_newline ();

  s_print_int ( (int)1.0 );	/* 「(int)」で、キャスト(型変換)すればよい */
  s_print_newline ();

  /* double */
  s_print_string ( "Double Print : \n" );
  s_print_double ( (double)1 );	/* 「(double)」で、キャスト(型変換)すればよい */
  s_print_newline ();

  s_print_double ( 1 * 1.0 );		/* 浮動小数点数との計算をしても自動的に変換される */
  s_print_newline ();

  return 0;
}

/*
 *
 */
sample-005.c の実行結果
C:\usr\c\> sample-005
C:\usr\c\> 

sample-006

Download : sample-006.c ( SJIS 版 )

sample-006.c
/*
 * 2011/06/17 sample-006.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

int main ( void ) {

  s_print_char ( * "abc" );	/* 文字列 「"abc"」の最初の文字を取り出す */
  s_print_newline();

  s_print_char ( * ( "abc" + 1 ) );	/* 文字列 「"abc"」の次の文字を取り出す */
  s_print_newline();

  s_print_char ( "abc"[0] );	/* 文字列 「"abc"」の最初の文字を取り出す */
  s_print_newline();

  s_print_char ( * ( "abc" + 1 ) );	/* 文字列 「"abc"」の次の文字を取り出す */
  s_print_newline();

  s_print_int ( * ( "abc" + 3 ) );	/* 文字列 「"abc"」の末尾には、'\0' == 0 が入っている。 */
  s_print_newline();

  return 0;
}

/*
 *
 */
sample-006.c の実行結果
C:\usr\c\> sample-006
a
b
a
b
0
C:\usr\c\> 

sample-007

Download : sample-007.c ( SJIS 版 )

sample-007.c
/*
 * 2011/06/17 sample-007.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

#define	EOS	'\0'		/* End Of String */

void my_print_string ( char *str ) {

  if ( *str == EOS ) {
	/* もうプリントする文字は存在しない */
  } else {
	s_print_char ( *str );			/* 先頭の文字を出力し .. */
	my_print_string ( str + 1 );		/* 残りを出せばよい */ 	
  }

}

/*
 *
 */

int main ( void ) {

  my_print_string ( "abc" );
  s_print_newline();
  my_print_string ( "xyz" );
  s_print_newline();

  return 0;
}

/*
 *
 */
sample-007.c の実行結果
C:\usr\c\> sample-007
abc
xyz
C:\usr\c\> 

sample-008

Download : sample-008.c ( SJIS 版 )

sample-008.c
/*
 * 2011/06/17 sample-008.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

#define	EOS	'\0'

void print_address_and_char ( char *string ) {

  if ( *string == EOS ) {		/* 文字列の最後 */
	s_print_hex ( string );	/* アドレスの表示 */
	s_print_string ( " : " );
	s_print_int ( *string );	/* 文字コードの表示 */
	s_print_newline();
  } else {
	s_print_hex ( string );	/* アドレスの表示 */
	s_print_string ( " : " );
	s_print_int ( *string );	/* 文字コードの表示 */
	s_print_string ( " : " );
	s_print_char ( *string );	/* 文字の表示 */
	s_print_newline();
	print_address_and_char ( string + 1 );	/* 残りの表示 */
  }

}

/*
 *
 */

int main ( void ) {

  s_print_string ( "abc" );
  s_print_newline();
  print_address_and_char ( "abc" );

  s_print_string ( "1234" );
  s_print_newline();
  print_address_and_char ( "1234" );

  return 0;
}

/*
 *
 */
sample-008.c の実行結果
C:\usr\c\> sample-008
abc
8048b27 : 97 : a
8048b28 : 98 : b
8048b29 : 99 : c
8048b2a : 0
1234
8048b2b : 49 : 1
8048b2c : 50 : 2
8048b2d : 51 : 3
8048b2e : 52 : 4
8048b2f : 0
C:\usr\c\> 

sample-009

Download : sample-009.c ( SJIS 版 )

sample-009.c
/*
 * 2011/06/17 sample-009.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

#define	EOS	'\0'

int string_to_int_sub ( char *string, int value ) {

  if ( *string == EOS ) {		/* 文字列の最後 */
	return value;
  } else {
	return string_to_int_sub ( string + 1, value * 10 + ( *string - '0' ) );
  }

}

int string_to_int ( char *string ) {

  return string_to_int_sub ( string, 0 );

}

/*
 *
 */

int main ( void ) {

  s_print_int ( string_to_int ( "123" ) );
  s_print_newline();

  return 0;
}

/*
 *
 */
sample-009.c の実行結果
C:\usr\c\> sample-009
123
C:\usr\c\> 

sample-010

Download : sample-010.c ( SJIS 版 )

sample-010.c
/*
 * 2011/06/17 sample-010.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

void too_may_int_args (
   int v0,
   int v1,
   int v2,
   int v3,
   int v4,
   int v5,
   int v6,
   int v7,
   int v8,
   int v9 )
{

  s_print_int ( v0 );
  s_print_newline();

  s_print_int ( v1 );
  s_print_newline();

  s_print_int ( v2 );
  s_print_newline();

  s_print_int ( v3 );
  s_print_newline();

  s_print_int ( v4 );
  s_print_newline();

  s_print_int ( v5 );
  s_print_newline();

  s_print_int ( v6 );
  s_print_newline();

  s_print_int ( v7 );
  s_print_newline();

  s_print_int ( v8 );
  s_print_newline();

  s_print_int ( v9 );
  s_print_newline();

}

/*
 *
 */

int main ( void ) {

  too_may_int_args ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );

  return 0;
}

/*
 *
 */
sample-010.c の実行結果
C:\usr\c\> sample-010
0
1
2
3
4
5
6
7
8
9
C:\usr\c\> 

sample-011

Download : sample-011.c ( SJIS 版 )

sample-011.c
/*
 * 2011/06/17 sample-010.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

void too_may_int_args (
   int v0,
   int v1,
   int v2,
   int v3,
   int v4,
   int v5,
   int v6,
   int v7,
   int v8,
   int v9 )
{

s_print_hex ( &v0 );	/* v0 には 0 が入っているが、その 0 が入っている場所 (アドレス) は &v0 で得られる */
  s_print_newline();

  s_print_hex ( &v1 );	/* 変数 v1 は、メモリのどこの部分(アドレスで示される)に対応するかが判る */
  s_print_newline();

  s_print_hex ( &v2 );
  s_print_newline();

  s_print_hex ( &v3 );
  s_print_newline();

  s_print_hex ( &v4 );
  s_print_newline();

  s_print_hex ( &v5 );
  s_print_newline();

  s_print_hex ( &v6 );
  s_print_newline();

  s_print_hex ( &v7 );
  s_print_newline();

  s_print_hex ( &v8 );
  s_print_newline();

  s_print_hex ( &v9 );
  s_print_newline();

}

/*
 *
 */

int main ( void ) {

  too_may_int_args ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );

  return 0;
}

/*
 *
 */
sample-011.c の実行結果
C:\usr\c\> sample-011
bfaf7950
bfaf7954
bfaf7958
bfaf795c
bfaf7960
bfaf7964
bfaf7968
bfaf796c
bfaf7970
bfaf7974
C:\usr\c\> 

sample-012

Download : sample-012.c ( SJIS 版 )

sample-012.c
/*
 * 2011/06/17 sample-010.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

void too_may_int_args (
   int v0,
   int v1,
   int v2,
   int v3,
   int v4,
   int v5,
   int v6,
   int v7,
   int v8,
   int v9 )
{

  s_print_string ( "&v0" );
  s_print_newline();
  s_print_hex ( &v0 );
  s_print_newline();

  s_print_string ( "&v0+1" );
  s_print_newline();
  s_print_hex ( &v0 + 1 );
  s_print_newline();

  s_print_string ( "&v1" );
  s_print_newline();
  s_print_hex ( &v1 );
  s_print_newline();

  s_print_string ( "v1" );
  s_print_newline();
  s_print_int ( v1 );
  s_print_newline();
  s_print_int ( *(&v1) );	/* '*' を付けると、その場所の、その型のデータを取り出す */
  s_print_newline();		/* v1 は int 型の変数なので &v1 は int 型のデータがある場所のアドレスになる */
  				/* 「*(&v1)」は v1 のアドレスの所にある v1 と同じ型のデータを取り出すので、 */
				/*  「v1」と同じ意味 */

s_print_int ( *(&v0 + 1) );	/* 「&v0」は v0 のアドレスになる / v0 は int 型なので int \
    のデータが入っている*/
				/*  「&v0 + 1」 は、int 型なので、アドレスは 4 ( int が一つ入るサイズ ) だけ増える */
				/*  このアドレスは、実は、次の変数である 「&v1」と同じもの */
				/*  結局 「*(&v0 + 1)」==「*(&v1)」==「v1」と同じ */
}

/*
 *
 */

int main ( void ) {

  too_may_int_args ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );

  return 0;
}

/*
 *
 */
sample-012.c の実行結果
C:\usr\c\> sample-012
&v0
bf844c90
&v0+1
bf844c94
&v1
bf844c94
v1
1
1
1C:\usr\c\> 

sample-013

Download : sample-013.c ( SJIS 版 )

sample-013.c
/*
 * 2011/06/17 sample-012.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

void print_int_args ( int *top ) {

  if ( *top == 9 ) {		/* 最後は 9 が入っているはず.. */
	s_print_int ( *top );
	s_print_newline();
  } else {
	s_print_int ( *top );
	s_print_newline();
	print_int_args ( top + 1 );
  }
}

/*
 *
 */

void too_may_int_args (
   int v0,
   int v1,
   int v2,
   int v3,
   int v4,
   int v5,
   int v6,
   int v7,
   int v8,
   int v9 )
{

  print_int_args ( &v0 );

}

/*
 *
 */

int main ( void ) {

  too_may_int_args ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );

  return 0;
}

/*
 *
 */
sample-013.c の実行結果
C:\usr\c\> sample-013
0
1
2
3
4
5
6
7
8
9
C:\usr\c\> 

sample-014

Download : sample-014.c ( SJIS 版 )

sample-014.c
/*
 * 2011/06/17 sample-014.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

int main ( void ) {

  s_print_string ( "abc" );	/* 「abc」が出力される */
  s_print_newline();

  s_print_string ( "abc" + 1 );	/* 1文字みじかくなった 「bc」が出力される */
  s_print_newline();

  s_print_string ( "abc" + 2 );	/* 「c」が出力される */
  s_print_newline();

  s_print_string ( "abc" + 3 );	/* 「」が出力される */
  s_print_newline();

  return 0;
}

/*
 *
 */
sample-014.c の実行結果
C:\usr\c\> sample-014
abc
bc
c

C:\usr\c\> 

sample-015

Download : sample-015.c ( SJIS 版 )

sample-015.c
/*
 * 2011/06/17 sample-015.c
 */

/*
 * char *
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

void print_top_of_string ( char *string ) {	/* char (*string) */

s_print_char ( *string );		/* print_top_of_string ( "abc" ); => \
    s_print_char ( * "abc" ); */
 
}

void print_top_of_string2 ( char *string ) {	/* char (*string) */

s_print_char ( string[0] );		/* print_top_of_string ( "abc" ); => \
    s_print_char ( * "abc" ); */

  /*
	X[0]	==	*X	==	*(X+0)
	X[n]	==	*(X+n)

	X[n] : X が何かの並びの時の n + 1 番目の要素 ( n は 0 から始まり、0 の時先頭の要素 )
	特に、「文字列」は、「文字の並び」なので、[n] で (n+1) 番目の文字が得られる
  */
 
}

/*
 *
 */

int main ( void ) {

  print_top_of_string ( "abc" );
  s_print_newline();

  print_top_of_string ( "xyz" );
  s_print_newline();

  print_top_of_string2 ( "abc" );
  s_print_newline();

  print_top_of_string2 ( "xyz" );
  s_print_newline();

  return 0;
}

/*
 *
 */
sample-015.c の実行結果
C:\usr\c\> sample-015
a
x
a
x
C:\usr\c\> 

sample-016

Download : sample-016.c ( SJIS 版 )

sample-016.c
/*
 * 2011/06/17 sample-016.c
 */

/*
 * 桁数を求める
 */

#include <stdio.h>
#include "s_print.h"
#include "s_input.h"

/*
 *	num は非負の整数とする
 */

int keta ( int num ) {

  if ( num < 10 ) {	/* 10 より小さい場合は */
	return 1;	/* 1 桁 */
  } else {		/* そうでない場合は.. */
	return 1 + keta ( num / 10 );	/* 一桁目を取り除いた数の桁を求めて 1 を加えれば全体の桁数 */
  }

}

/*
 *
 */

int main ( void ) {

  s_print_string ( "123 は " );
  s_print_int ( keta ( 123 ) );
  s_print_string ( "桁です。" );
  s_print_newline();

  s_print_string ( "99999 は " );
  s_print_int ( keta ( 99999 ) );
  s_print_string ( "桁です。" );
  s_print_newline();

  return 0;
}

/*
 *
 */
sample-016.c の実行結果
C:\usr\c\> sample-016
123 は 3桁です。
99999 は 5桁です。
C:\usr\c\> 

sample-017

Download : sample-017.c ( SJIS 版 )

sample-017.c
/*
 * 2011/06/17 sample-017.c
 */

/*
 *
 */

#include <stdio.h>
#include "s_print.h"

/*
 *				+----------+
 *	"abc" --->  0x80487cf	|    'a'   |
 *				+----------+
 *				|    'b'   |	0x80487cf + 1   <-------+
 *				+----------+				|
 *				|    'c'   |	0x80487cf + 2		|
 *				+----------+				|
 *				|   '\0'   |	0x80487cf + 3		|
 *				+----------+				|
 *				|          |				|
 *     "abc" + 1 == 0x80487cf + 1 == 0x80487d0 -------------------------+
 */

int main ( void ) {

  s_print_hex ( "abc" );	/* 文字列 "abc" のある場所(アドレス)の出力 */
  s_print_newline();

  s_print_char ( *((char*)0x80487cf+1) );
  s_print_newline();

  return 0;
}

/*
 *
 */
sample-017.c の実行結果
C:\usr\c\> sample-017
80487cf
b
C:\usr\c\> 

sample-018

Download : sample-018.c ( SJIS 版 )

sample-018.c
/*
 * 2011/06/17 sample-018.c
 */

#include <stdio.h>
#include "s_print.h"

#define	EOS	'\0'

/*
 *	課題 2 は
 *		"abc" -> 3 文字
 *		"日本語" -> 6 文字でよい
 *
 *	でも、漢字一文字は一文字と感ぞえたい場合は、例えば、次のようにする。
 */

int count_warry_about_japanese ( char *str ) {

  if ( *str == EOS ) {	/* この時は、SJIS でも ASCII でも 0 文字 */
	return 0;
  } else {
	if ( (unsigned char)*str < 128 ) {	/* 128 より小さいならば ASCII Code だろう.. */
	  return count_warry_about_japanese ( str + 1 ) + 1;
	} else {		/* ASCII でないので、漢字と信じる事にする */
	  return count_warry_about_japanese ( str + 2 ) + 1;	/* 2 文字分短くする */
	}			/* 厳密には、「半角カナ」があるので、これだと正しくない.. */
  }

}

main()
{
  s_print_int ( count_warry_about_japanese ( "abc" ) ); /* => 3 */
  s_print_newline();

  s_print_int ( count_warry_about_japanese ( "日本" ) ); /* => 2 */
  s_print_newline();
}
sample-018.c の実行結果
C:\usr\c\> sample-018
3
2
C:\usr\c\> 

本日の課題

課題 20110617-01

Download : 20110617-01.c ( SJIS 版 )

20110617-01.c
/*
 * 20110617-1-QQQQ.c
 *	cos のグラフ
 */

#include <stdio.h>
#include <math.h>	/* 数学関数を利用する場合はこれを追加する */
#include "s_print.h"
#include "s_input.h"

/*
 *
 */

void plot_dot_sub ( double pos, double value ) {

  if ( pos >= value ) {			/* 印刷位置まだきた */
	s_print_char ( '*' );			/* 「点」を出力 */
	s_print_newline ();			/* この行は終り */
  } else {
	s_print_char ( ' ' );			/* 空白を出力 */
	plot_dot_sub ( pos + 1.0, value );	/* 続きを計算 */
  }
}

/*
 *	0 〜 79 で、 -1.0 〜 1.0 を表現するには、
 *		x | -1.0 〜 1.0 |       x
 *		--+-------------+---------------
 *		y |    0 〜  79 | ( x + 1 ) * 40 
 */

#define	WIDTH	80.0			/* 一行の中のカラム数を定義 */

void plot_dot ( double value ) {

  plot_dot_sub ( 0.0, ( value + 1.0 ) * WIDTH/2.0 );
}

/*
 *
 */

void print_cos_curve( double top, double end, double step ) {

  if ( top >= end ) {
	/* 何もする必要はない */
  } else {

	/*
	**	 この部分を完成させなさい
	*/

  }

}

/*
 *
 */

#define	PI	3.141592

int main ( void ) {

  print_cos_curve( 0, 2 * PI, 0.1 );	/* PI は 円周率 */

  return 0;
}

/*
 *
 */
20110617-01.c の実行結果
C:\usr\c\> 20110617-01
*
*
*
*
*
*
*
*
*
*
                                                              *
                                                           *
                                                       *
                                                   *
                                               *
                                           *
                                       *
                                   *
                               *
                            *
                        *
                    *
                 *
              *
           *
        *
      *
    *
   *
  *
 *
 *
 *
 *
  *
   *
     *
       *
         *
           *
              *
                  *
                     *
                        *
                            *
                                *
                                    *
                                        *
                                            *
                                                *
                                                    *
                                                        *
                                                           *
                                                               *
*
*
*
*
*
*
*
*
*
C:\usr\c\> 

課題 20110617-02

Download : 20110617-02.c ( SJIS 版 )

20110617-02.c
/*
 * 20110617-2-QQQQ.c
 *	
 */

#include <stdio.h>
#include "s_print.h"

/*
 *
 */

#define	EOS	'\0'		/* End Of String */

int my_string_length ( char *str ) {

  if ( *str == EOS ) {		/* "" は 長さ 0 */

	/*
	**	 この部分を完成させなさい	return 0;	/* 長さは 0 */
	*/

  } else {			/* 残りの長さ + 1 */

	/*
	**	 この部分を完成させなさい	return ????;
	*/

  }

}

/*
 *
 */

int main ( void ) {

   s_print_int ( my_string_length ( "abc" ) );	/* 3 と表示されるはず */
   s_print_newline();

  return 0;
}

/*
 *
 */
20110617-02.c の実行結果
C:\usr\c\> 20110617-02
3
C:\usr\c\> 

Links