無題
Posted: 2010年9月01日(水) 00:04
基本課題 10..3
基本問題8.2で作成したアスタリスクで作成した直角三角形 を印字するプログラムを関数を使って作り直してみよう。指定された文字を指定 された回数だけ連続して印字する処理を関数化する。この関数の宣言を
int run(char c, int length);
とする。すなわち、関数runは文字cを長さlengthだけ印字する。 戻り値は印字した文字の個数(すなわち、length)とする。
この関数runを作成し、キーボードより入力された任意の正の整数を高さと する直角三角形を印字するプログラムを作成せよ。
% decWithFunc
正の整数: 15
1: ***************
2: **************
3: *************
4: ************
5: ***********
6: **********
7: *********
8: ********
9: *******
10: ******
11: *****
12: ****
13: ***
14: **
15: *
%
という課題で、わからないことがあります。
/* ここからコピー */
#include <stdio.h>
# define BUFFER_SIZE (256)
int get_int(void)
{
char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin);
return atoi(buf);
}
/* ここまでコピー */
int run(char c,int length)
{
int j;
for(j=1;j<=length;j++)
{
printf("%c",c);
}
printf("\n"); ←ーーー①
return length;
}
int main(void)
{
int a,i,kat;
printf("正の整数:");
a = get_int();
//正の整数でないといけないから
if(a>0)
{
int b,c,d;
for(b=0;b<a;b++)
{
printf("%d",b+1);
for(d=0;d<b;d++)
{
printf(" ");
}
kat =run('*',a-b);
//printf("\n"); ←ーーーー②
}
}
return 0;
}
①の場所で改行すればうまくいくのに②の場所で改行してもうまくいかないのはなぜ?
基本問題8.2で作成したアスタリスクで作成した直角三角形 を印字するプログラムを関数を使って作り直してみよう。指定された文字を指定 された回数だけ連続して印字する処理を関数化する。この関数の宣言を
int run(char c, int length);
とする。すなわち、関数runは文字cを長さlengthだけ印字する。 戻り値は印字した文字の個数(すなわち、length)とする。
この関数runを作成し、キーボードより入力された任意の正の整数を高さと する直角三角形を印字するプログラムを作成せよ。
% decWithFunc
正の整数: 15
1: ***************
2: **************
3: *************
4: ************
5: ***********
6: **********
7: *********
8: ********
9: *******
10: ******
11: *****
12: ****
13: ***
14: **
15: *
%
という課題で、わからないことがあります。
/* ここからコピー */
#include <stdio.h>
# define BUFFER_SIZE (256)
int get_int(void)
{
char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin);
return atoi(buf);
}
/* ここまでコピー */
int run(char c,int length)
{
int j;
for(j=1;j<=length;j++)
{
printf("%c",c);
}
printf("\n"); ←ーーー①
return length;
}
int main(void)
{
int a,i,kat;
printf("正の整数:");
a = get_int();
//正の整数でないといけないから
if(a>0)
{
int b,c,d;
for(b=0;b<a;b++)
{
printf("%d",b+1);
for(d=0;d<b;d++)
{
printf(" ");
}
kat =run('*',a-b);
//printf("\n"); ←ーーーー②
}
}
return 0;
}
①の場所で改行すればうまくいくのに②の場所で改行してもうまくいかないのはなぜ?