#include <stdio.h>
int main(){
int number_distribution[10] = {0};
int number;
do{
printf("0~9の数字を入力してください:");
}while(scanf("%d", &number) != EOF && ++number_distribution[number]);
printf("\n-----分布-----\n");
int i, j;
for(i = 0; i < 10; i++){
printf("%d :", i);
for(j = 0; j < number_distribution[i]; j++){
printf("*");
}
printf("\n");
}
return 0;
}
演習 8-9
#include <stdio.h>
int main(){
int line_count = 0;
char line[256];
do{
printf("入力してください. : ");
}while(scanf("%s", line) != EOF && ++line_count);
printf("\n入力された行数は%d行でした.", line_count);
return 0;
}
int main(){
int line_count = 0;
char line[256];
do{
printf("入力してください. : ");
}while(scanf("%s", line) != EOF && ++line_count);
printf("\n入力された行数は%d行でした.", line_count);
return 0;
}
演習 8-8
#include <stdio.h>
int gcd(int x, int y){
if(x < y) x ^= y ^= x ^= y;
return !(x % y) ? y : gcd(y, x % y);
}
int main(){
int x, y, n;
printf("一つ目の整数を入力してください : "); scanf("%d", &x);
printf("二つ目の整数を入力してください : "); scanf("%d", &y);
n = gcd(x, y);
printf(" %d と %d の最大公約数は %d です.", x, y, n);
return 0;
}
int gcd(int x, int y){
if(x < y) x ^= y ^= x ^= y;
return !(x % y) ? y : gcd(y, x % y);
}
int main(){
int x, y, n;
printf("一つ目の整数を入力してください : "); scanf("%d", &x);
printf("二つ目の整数を入力してください : "); scanf("%d", &y);
n = gcd(x, y);
printf(" %d と %d の最大公約数は %d です.", x, y, n);
return 0;
}
演習 8-7
#include <stdio.h>
int factorial(int n){
if (n > 0){
return n*factorial(n - 1);
}
else{
return 1;
}
}
int combination(int n, int r){
if (n > r){
return factorial(n) / (factorial(n - r)*factorial(r));
}
else if (n == r){
return 1;
}
else{
return NULL;
}
}
int main(){
int n, r;
printf("異なるn個の整数からr個の整数を取り出す組み合わせの数のnCrを求めます\n");
printf("非負整数n:"); scanf("%d", &n);
printf("非負整数r:"); scanf("%d", &r);
printf("異なる%d個の整数から%d個の整数を取り出す組み合わせの数は%d個です\n", n, r, combination(n, r));
return 0;
}
int factorial(int n){
if (n > 0){
return n*factorial(n - 1);
}
else{
return 1;
}
}
int combination(int n, int r){
if (n > r){
return factorial(n) / (factorial(n - r)*factorial(r));
}
else if (n == r){
return 1;
}
else{
return NULL;
}
}
int main(){
int n, r;
printf("異なるn個の整数からr個の整数を取り出す組み合わせの数のnCrを求めます\n");
printf("非負整数n:"); scanf("%d", &n);
printf("非負整数r:"); scanf("%d", &r);
printf("異なる%d個の整数から%d個の整数を取り出す組み合わせの数は%d個です\n", n, r, combination(n, r));
return 0;
}
演習 8-6
#include <stdio.h>
int main(){
int i, num, kaijo = 1;
printf("整数を入力して下さい:");
scanf("%d", &num);
for (i = 1; i <= num; i++){
kaijo *= i;
}
printf("%dの階乗は%dです\n", num, kaijo);
return 0;
}
int main(){
int i, num, kaijo = 1;
printf("整数を入力して下さい:");
scanf("%d", &num);
for (i = 1; i <= num; i++){
kaijo *= i;
}
printf("%dの階乗は%dです\n", num, kaijo);
return 0;
}
演習 8-5
#include <stdio.h>
enum { Right, Left, Up, Down };
int main(){
int course;
int r = 0, l = 0, u = 0, d = 0;
printf("あなたは真っ暗な迷路に迷い込みました。\n");
printf("好きな方向に進んでください。\n");
printf("\n---- 右:0 -- 左:1 -- 上:2 -- 下:3 ----\n");
while(1){
scanf("%d", &course);
switch (course){
case Right:printf("右に進みました\n"); r++; l--; break;
case Left:printf("左に進みました\n"); l++; r--; break;
case Up:printf("上に進みました\n"); u++; d--; break;
case Down:printf("下に進みました\n"); d++; u--; break;
default:printf("0~3を入力してください。\n");
}
if (r == 2 && u == 2) break;
}
printf("\a\nおめでとうございます!!\n");
printf("迷路を抜けました!!\n");
return 0;
}
enum { Right, Left, Up, Down };
int main(){
int course;
int r = 0, l = 0, u = 0, d = 0;
printf("あなたは真っ暗な迷路に迷い込みました。\n");
printf("好きな方向に進んでください。\n");
printf("\n---- 右:0 -- 左:1 -- 上:2 -- 下:3 ----\n");
while(1){
scanf("%d", &course);
switch (course){
case Right:printf("右に進みました\n"); r++; l--; break;
case Left:printf("左に進みました\n"); l++; r--; break;
case Up:printf("上に進みました\n"); u++; d--; break;
case Down:printf("下に進みました\n"); d++; u--; break;
default:printf("0~3を入力してください。\n");
}
if (r == 2 && u == 2) break;
}
printf("\a\nおめでとうございます!!\n");
printf("迷路を抜けました!!\n");
return 0;
}
演習 8-4
#include <stdio.h>
#define NUMBER 5
void bsort(int a[], int n){
int i, j;
for (i = n - 1; i > 0; i--){
for (j = 0; j < i; j++){
if (a[j + 1] < a[j]){
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main(){
int i;
int height[NUMBER];
printf("%d人の身長を入力してください\n",NUMBER);
for (i = 0; i < NUMBER; i++){
printf("%2d番:", i + 1);
scanf("%d", &height[i]);
}
bsort(height,NUMBER);
puts("昇順にソートしました。");
for (i = 0; i < NUMBER; i++){
printf("%2d番:%d\n", i + 1, height[i]);
}
return 0;
}
#define NUMBER 5
void bsort(int a[], int n){
int i, j;
for (i = n - 1; i > 0; i--){
for (j = 0; j < i; j++){
if (a[j + 1] < a[j]){
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main(){
int i;
int height[NUMBER];
printf("%d人の身長を入力してください\n",NUMBER);
for (i = 0; i < NUMBER; i++){
printf("%2d番:", i + 1);
scanf("%d", &height[i]);
}
bsort(height,NUMBER);
puts("昇順にソートしました。");
for (i = 0; i < NUMBER; i++){
printf("%2d番:%d\n", i + 1, height[i]);
}
return 0;
}
演習 8-3
#include <stdio.h>
#define swap(int, x, y) z = x; x = y; y = z;
int main(){
int x, y, z;
printf("整数x:"); scanf("%d", &x);
printf("整数y:"); scanf("%d", &y);
swap(int, x, y);
printf("x = %d, y = %d\n", x, y);
return 0;
}
#define swap(int, x, y) z = x; x = y; y = z;
int main(){
int x, y, z;
printf("整数x:"); scanf("%d", &x);
printf("整数y:"); scanf("%d", &y);
swap(int, x, y);
printf("x = %d, y = %d\n", x, y);
return 0;
}
演習 8-2
max(max(a, b), max(c, d))
max((a) > (b) ? (a) : (b), (c) > (d) ? (c) : (d))
max(((a) > (b) ? (a) : (b)) > ((c) > (d) ? (c) : (d)) ? ((a) > (b) ? (a) : (b)) : ((c) > (d) ? (c) : (d)))
1.aとbの大きいほうの値とcとdの大きいほうの値が求められる。
2.1の大きいほうの値のうち大きいほうの値が求められる。
max(max(max(a, b), c), d)
max(max((a) > (b) ? (a) : (b), c), d)
max(((a) > (b) ? (a) : (b)) > (c) ? ((a) > (b) ? (a) : (b)) : (c)), d)
((a) > (b) ? (a) : (b)) > (c) ? ((a) > (b) ? (a) : (b)) : (c)) > (d) ? ((a) > (b) ? (a) : (b)) > (c) ? ((a) > (b) ? (a) : (b)) : (c)) : (d)
1.aとbの大きいほうの値が求められる。
2.1の大きいほうの値とcとが比べられその大きいほうの値が求められる。
3.2の大きいほうの値とdとが比べられその大きいほうの値が求められる。
max((a) > (b) ? (a) : (b), (c) > (d) ? (c) : (d))
max(((a) > (b) ? (a) : (b)) > ((c) > (d) ? (c) : (d)) ? ((a) > (b) ? (a) : (b)) : ((c) > (d) ? (c) : (d)))
1.aとbの大きいほうの値とcとdの大きいほうの値が求められる。
2.1の大きいほうの値のうち大きいほうの値が求められる。
max(max(max(a, b), c), d)
max(max((a) > (b) ? (a) : (b), c), d)
max(((a) > (b) ? (a) : (b)) > (c) ? ((a) > (b) ? (a) : (b)) : (c)), d)
((a) > (b) ? (a) : (b)) > (c) ? ((a) > (b) ? (a) : (b)) : (c)) > (d) ? ((a) > (b) ? (a) : (b)) > (c) ? ((a) > (b) ? (a) : (b)) : (c)) : (d)
1.aとbの大きいほうの値が求められる。
2.1の大きいほうの値とcとが比べられその大きいほうの値が求められる。
3.2の大きいほうの値とdとが比べられその大きいほうの値が求められる。
登録:
投稿 (Atom)