第5回 練習課題
練習課題1
1.以下を入力し実行せよ。
-------------------
#include < stdio.h >
void main()
{
int i,sum;
sum = 0;
for ( i=1; i<=10 ; i++ )
{
sum = sum+i;
printf("%d, %d\n",i,sum);
}
}
-------------------
2.1から1000までの和を求めるプログラムに変更せよ
3.1から1000までの「1の位が3」である数のみを足すプログラムに変更せよ (ヒント:答えは49800)
4.1から1000までの「10の位が3」である数のみを足すプログラムに変更せよ (ヒント:答えは48450)
練習課題2
1.以下のプログラムを実行せよ。
-------------------
#include < stdio.h >
void main()
{
int i,j;
for ( i=1; i<=10 ; i++ )
{
for ( j=1; j<=i ; j++ )
{
printf("*");
}
printf("\n");
}
}
-------------------
2.何をするプログラムか?
3.*の数が10から1まで順に減るプログラムに書きかえよ。
4.上記3のプログラムをdo〜while()を使って書き換えよ
練習課題3
1.練習課題2を参考にし、下記のプログラムを補って、図aを表示するプログラムを作成せよ。
-------------------
#include < stdio.h >
void main()
{
int i,j;
for ( i=0; i<10 ; i++ )
{
この部分を書く!!!
}
}
-------------------
--------図a--------
**********
*********
********
*******
******
*****
****
***
**
*
-------------------
ヒント:for文は1つとは限らない
2.同様に、図bを表示するプログラムを作成せよ。
--------図b--------
*
**
***
****
*****
******
*******
********
*********
**********
-------------------
3.同様に、図cを表示するプログラムを作成せよ。
--------図c--------
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
-------------------
4.同様に、図dを表示するプログラムを作成せよ。
--------図d--------
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
-------------------
5.同様に、図dを表示するプログラムを作成せよ。
--------図d--------
******************* *
***************** ***
*************** *****
************* *******
*********** *********
********* ***********
******* *************
***** ***************
*** *****************
* *******************
-------------------
6.同様に、図dを表示するプログラムを作成せよ。
--------図d--------
********************
***************** **
*************** ****
************* ******
*********** ********
********* **********
******* ************
***** **************
*** ****************
* ******************
-------------------
7.同様に、図dを表示するプログラムを作成せよ。
--------図d--------
********** ********
********* ** *******
******** **** ******
******* ****** *****
****** ******** ****
***** ********** ***
**** ************ **
*** ************** **
** **************** *
* *******************
-------------------
練習課題4
1.以下のプログラムを実行せよ。
-------------------
#include < stdio.h >
#include < stdlib.h >
#include < time.h >
#define MAX_TRY 1000 //マクロ定義
void main()
{
int i,count;
double x,y,pi;
srand(time(0));
count = 0;
for (i=1 ; i<=MAX_TRY ; i++)
{
// RNAD_MAXはrand()関数で生成される乱数の最大値を表す
// 以下では、rand()の値をRAND_MAXで割ることで
// 結果として、0以上1以下の実数の乱数を生成している
x = ((double)rand()) / ((double)RAND_MAX);
y = ((double)rand()) / ((double)RAND_MAX);
if ( x*x+y*y <= 1 )
{
count = count + 1;
}
pi = ((double)count) / ((double)i) * 4.0;
if ( i % ((MAX_TRY)/100) == 0 )
printf("x=%f, y=%f, pi=%f\n",x,y,pi);
}
}
-------------------
注意:
プログラム5行目 #define MAX_TRY 1000 は"MAX_TRY"という文字列があれば、
"1000"に置き換えてコンパイルすることを命令するマクロ定義である。
つまり、16行目のfor文中、また、31行目のif文中ににあるMAX_TRYを1000に置き換えている。
2.5行目の「#define MAX_TRY 1000」を「#define MAX_TRY 100000」に変更して実行せよ。さらに、10000000に変更して実行せよ。
3.何を求めるプログラムか?(実行結果から推定せよ)
練習課題5
5個の数を入力させ,昇順に表示するプログラムを作成せよ
練習課題6
1.クレジットカードで20万円のものを20回払(20ヶ月)で購入した.年利15%とした時,月々の支払額と総額はいくらになるか?計算するプログラムを作成せよ
2.リボ払いで月1万円,年利15%としたとき,支払い完了まで何ヶ月かかるか.また,月々の支払額と総額はいくらになるか?計算するプログラムを作成せよ
3.金額・年利・分割かリボ払いか・リボ払いの場合は月々の支払額を入力させるプログラムに変更せよ.
提出課題(基本課題)
3以上の整数を入力させ、入力された数以下の素数を全て表示するプログラムを作成せよ。
ヒント1:
素数とは、その数と1以外では割り切れない数のことである。
ヒント2:
ある数Nに対して、Nを2以上N-1以下の数で割ったときの余りが全て0以外ならば、素数。
2以上N-1以下の数で割ったときの余りが0になった回数を数えて、その回数が0ならば素数。
Nを3から入力された数まで動かせばよい。
-----実行例--------
3以上の整数を入力してください:50
素数は以下の数です:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
続行するには何かキーを押してください . . .
-------------------
提出課題(発展課題)
3以上の整数を入力させ、素因数分解の結果を表示するプログラムを作成せよ。
注意:
基本課題か発展課題のどちらか一方だけを提出すること。
-----実行例--------
3以上の整数を入力してください:1974
1974 = 2×3×7×47
続行するには何かキーを押してください . . .
-------------------