C*****6

C言語講座第6回
~演習回
演習1
int型の半径rを手入力させてそこから円の円周、
面積、球の体積を関数を使って求めるプログラム
を作成せよ。
なお、関数の型はdouble型とし、出力結果は小数
点以下2桁での表示とする。
#define P 3.14
演習1解答
演習2
配列を作り、大きい順に並び替えるバブルソート
プログラムをつくりなさい
int n1=5, data1[]={5,2,1,4,3};
int n2=9, data2[]={5,2,1,4,3,9,6,7,8};
演習2解答
#include <stdio.h>
void print_array(int v[],int n);
void bsort(int v[],int n);
int main(){
int n1=5, data1[]={5,2,1,4,3};
int n2=9, data2[]={5,2,1,4,3,9,6,7,8};
}
printf("\n");
}
void bsort(int v[],int n){
int i,j,tmp;
for(j=0;j<n-1;j++){
for(i=n-2; j<=i ;i--){
if(v[i]<v[i+1]){
printf("元の配列\n");
print_array(data1,n1);
print_array(data2,n2);
printf("ソートします.....\n");
bsort(data1,n1);
bsort(data2,n2);
print_array(data1,n1);
print_array(data2,n2);
tmp=v[i+1];
v[i+1]=v[i];
v[i]=tmp;
}
}
void print_array(int v[],int n){
int i;
for(i=0;i<n;i++){
printf("%d ",v[i]);
}
}
}
演習2解答
演習3
ユークリッドの互除法を用いて任意に入力された
2つの値の最大公約数を求めよ
15と9の最大公約数は3であるがこれをユークリッドの互除法で求めると
15 ÷ 9 の余りは6
割る数(9)を余り(6)で割る
9 ÷ 6の余りは3
割る数(6)を余り(3)で割る
6 ÷ 3の余りは0
余りが0になった時の割る数(3)が最大公約数
演習3解答
#include <stdio.h>
c = a % b;
void input(int *a, int *b){
int tmp;
if(c == 0)
return b;
else
>");
>");
return calcEuclid(b, c);
printf("一つ目の値を入力してください
scanf("%d",a);
printf("二つ目の値を入力してください
scanf("%d",b);
}
int main(){
int a, b;
input(&a, &b);
printf("%dと%dの最大公約数は%d\n“
, a, b, calcEuclid(a, b));
if(a<b){
tmp = *a;
*a = *b;
*b = tmp;
}
}
int calcEuclid(int a, int b){
int c;
return 0;
}
演習3解答
演習4
CPUと自分(手入力)で1~3の数値を交互に
言って行き、合計値が30になったほうが負ける
ゲームをプログラミングせよ。このとき、CPUが
言う数値は乱数を使うこと。
余裕のある人は先攻か後攻を決められるようにせ
よ。
演習4 実行結果例
演習4解答例(main文のみ)
演習4解答例(自作関数)