スライド 1

高度プログラミング演習
(05)
演習問題
• 2×3 の行列と3×1の行列をそれぞれ入力で
き、それらの行列の掛け算をするプログラム
を作成せよ。
for(j=0;i<1;j++)
a00 a01 a02
a10 a11 a12
for(i=0;i<2;i++)
b00
b10
b20
a00*b00+a01*b10+a02*b20
a10*b00+a11*b10+a12*b20
for(k=0;k<3;k++)
for(i=0;i<2;i++)
for(j=0;j<1;j++){
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j] += a[i][k]*b[k][j];
}
演習問題
1. 入力した2×2の行列の行列式の値を求め
るプログラムを作成せよ。
2. 2つの3×3 の行列の各要素を入力でき、そ
れらの行列の足し算および引き算をするプ
ログラムを作成せよ。
行列式の値を求める
include<stdio.h>
void main()
{
int a[2][2];
int i,j,k;
printf(" 2 x 2 行列の入力をします。\n");
for(i=0;i<2;i++)
for(j=0;j<2;j++){
printf("(%d %d) 成分を入力してください。: ",i+1,j+1);
scanf("%d",&a[i][j]);
}
for(i=0;i<2;i++){
for(j=0;j<2;j++)
printf("%3d ",a[i][j]);
printf("\n");
}
printf("行列式の値は %d です。\n",a[0][0]*a[1][1]-a[0][1]*a[1][0]);
}
条件分岐と場合分け
• if 条件
– 処理
• 他の条件
– 処理
• 場合わけ
– ある場合の処理
– 別の場合の処理
条件分岐
if (条件){
.....;
} else if (条件){
.....;
} else {
.....;
}
等しい ==
等しくない !=
かつ &&
または ||
#include <stdio.h>
void main()
{
int num=0;
scanf(“%d”,&num);
if(num>0){
printf(“%d > 0\n”,num);
}else if(num<0){
printf(“%d < 0\n”,num);
}else{
printf(“%d == 0\n”,num);
}
}
練習問題
• 数当てゲームのプログラムを作成せよ。
– プログラムの実行時に乱数で1から1000まで範
囲で数字(答え)を決める。
– 入力した数字に対して答えのある範囲を狭めて
ゆく
• 0 < X < 1001
• 100 < X < 1001
• 100 < X < 500
– 何回目で正解が出るか表示する
場合わけ
switch (変数){
case 場合 :
.....;
break;
case 場合:
.....;
break;
default:
}
#include <stdio.h>
void main(){
int num=0;
scanf(“%d”,&num);
if(num<16){
switch (num){
case 15:
printf(“F\n”);
break;
case 14:
printf(“E\n”);
break;
case 13:
printf(“D\n”);
break;
case 12:
printf(“C\n”);
break;
case 11:
printf(“B\n”);
break;
case 10:
printf(“A\n”);
break;
default:
printf(“%d\n”,num);
}
}
}
文字型の変数
• char a;
#include <stdio.h>
void main()
{
char data[128];
int n=0,j=0;
#include <stdio.h>
void main()
{
char a;
a=getchar();
printf(“%c\n”,a);
}
while(n<128){
data[n]=getchar();
if(data[n]=='.'){
if(n<127)
n++;
break;
}
n++;
}
for(j=0;j<n;j++){
if (data[j]>='a'&&data[j]<='z')
data[j] =data[j]+('A'-'a');
printf("%c",data[j]);
}
printf("\n");
}
練習問題
1. 16進数を10進数に変換するプログラムを
作成せよ。
2. 入力した文字列に a,b,c という文字がそれ
ぞれいくつあるか表示するプログラムを作
成せよ。
if 文、case 文を用いてそれぞれ作成すること。
演習問題
1. 2次方程式 a*x*x + b*x + c =0 を解くプロ
グラムを作成せよ。ただし、x が虚数となる
場合は、解がない旨表示するようにせよ。
2. 入力した文字列に アルファベットの各文字
がそれぞれいくつあるか表示するプログラ
ムを作成せよ。(if文、case文両方使ったも
のをそれぞれ作成すること。)
 This is a pen.
 a:1,e:1,h:1,i:2,n:1,p:1,s:2,T:1