スライド 1

高度プログラミング演習
(04)
先週の練習問題回答例
1年 0.01% の利子がつく複利預金で、入力したお金が目標金額に達する年を求
めるプログラムを作成せよ。
include <stdio.h>
void main()
{
int year;
double nyukin,now,goal;
printf("入金 : ");
scanf("%lf",&nyukin);
printf("目標 : ");
scanf("%lf",&goal);
for(year=1,now=nyukin;now < goal; year++){
now = now + now * 0.01/100;
}
printf("%10.0f 円に毎年0.01%%利子がついて%10.0f円になるには%d 年かかります\n",
nyukin,goal,year);
}
先週の練習問題回答例
入力した10進数を2進数で表示するプログラムを作成せよ。
include <stdio.h>
void main()
{
int shin=2,num;
printf(" 元の数字を入力して下さい: ");
scanf("%d",&num);
while(num > shin-1){
printf("%d ",num%shin); // num - (num/shin)*sshin ;
num = num/shin;
}
printf("%d \n",num);
}
2
6
0
3
1
1
演習問題回答例
ある数字は1日ごとに3倍になるとする。入力した数字が、入力した日数後にいくらに
なっているかを表示するプログラムを作成せよ。
include <stdio.h>
void main()
{
int shoki,day,nannichi,now;
printf("初期値を入力して下さい。: ");
scanf("%d",&shoki);
now = shoki;
printf("何日後の結果が見たいですか?: ");
scanf("%d",&nannichi);
for(day=1;day<=nannichi;day++)
now = now * 3;
printf("初期値%d は毎日3倍されると%d日後には%dになります。\n",
shoki,nannichi,now);
}
演習問題回答例
n
Σ(i*i) >= X
i=1
を満たす、Σ(i*i)の値が一番小さい n の値を求めなさい
#include <stdio.h>
void main()
{
int i,sum,max;
printf("目標値を入力して下さい。: ");
scanf("%d",&max);
for(i=1;sum < max;i++)
sum = sum + i * i;
printf("%d 回繰り返せば %d を越えます。その時の値は %d です。\n",
i,max,sum);
}
今日の目標
• 変数の配列というものを理解し、使えるように
なる。
配列
• 100個の数字を扱いたい
– int a[100];
• a[0] から a[99] までが有効。
• 2×2 の行列
– int a[2][2];
乱数
• rand()
• 100未満の数の乱数
– rand() % 100
• 100個の100未満の数の乱数を作る。
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i=0;
int data[100];
for(i=0;i<100;i++)
data[i]=rand()%100;
}
練習問題
1. 100未満の100個の乱数を作りその平均値
を求めるプログラムを作成せよ。
2. 10つの数字を入力してその平均値を求める
プログラムを作成せよ。
printf() のけたそろえ
• printf(“%5d %5d”,a,b);
#include<stdio.h>
void main()
{
int a=0,b=0;
scanf(“%d %d”,&a,&b);
printf(“%d %d\n”,a,b);
printf(“%5d %5d\n”,a,b);
}
練習問題
• 3×3 の行列の要素を100未満の乱数で作成
し、それをフォーマットをそろえて表示するプ
ロラムを作成せよ。
78 98 9
4 12 11
23 1 1
78 98 9
4 12 11
23 1 1
練習問題
• 2×3 の行列と3×1の行列をそれぞれ入力で
き、それらの行列の掛け算をするプログラム
を作成せよ。
演習問題
1. 入力した2×2の行列の行列式の値を求め
るプログラムを作成せよ。
2. 2つの3×3 の行列の各要素を入力でき、そ
れらの行列の足し算および引き算をするプ
ログラムを作成せよ。