Ex06Ans
From Prog0
演習第6回
Contents |
解答例
A問題
A-1 break, continueの利用
ファイル名: ex06a1.c
#include <stdio.h> int main() { int i; int count; int score; int L = 50; int U = 80; count = 0; printf("点数を入力して下さい\n"); for(i = 0; i < 15; i++){ scanf("%d", &score); if (score < 0) break; if (score < L || score >= U) continue; count++; } printf("%d点以上、%d点未満の答案の数は%dです\n", L, U, count); return 0; }
A-2 階乗の計算
ファイル名: ex06a2.c
#include <stdio.h> int main() { int i, n; int fact = 1; printf( "階乗を計算したい数を入力して下さい: " ); scanf( "%d", &n ); if( n >= 13 || n < 0 ) { printf( "計算できません\n" ); } else { for( i = n; i > 0; i-- ) { fact *= i; } printf( "%d\n", fact ); } return 0; }
B問題
B-1 特定の条件を満たす数
ファイル名: ex06b1.c
#include <stdio.h> int main() { int n; int i; printf("整数を入力してください:"); scanf("%d", &n); /* 解答例1 */ for(i = 1; i <= n; i+= 3) { printf("%d\n", i); } /* 解答例2 */ for (i=0; i*3+1<=n; i++) printf("%d\n", i*3+1); } return 0; }
B-2 アスキーアート
ファイル名: ex06b2.c
#include <stdio.h> int main() { int i, j, n; printf("1から9までの整数を入力してください:"); scanf("%d", &n); if( n < 1 || n > 9 ) { printf( "入力する数は1から9までです\n" ); } else { for(i = 1; i < n; i++){ /*1から入力された数値まで増加 ※別解:下記コメント*/ for(j = 0; j < i; j++){ /*その数字の回数だけ表示を繰り返し,その後改行*/ printf("%d", i); } printf("\n"); } for(i = n; i > 0; i--){ /*入力された数値から1まで減少 ※*/ for(j = 0; j < i; j++){ printf("%d", i); } printf("\n"); } } return 0; }
/* ※別解 for(i = 1; i < n; i++){ ... for(i = n; i > 0; i--){ は for(i = 1; i <= n; i++){ ... for(i = n-1; i > 0; i--){ などと書いてもOK */
B-3 利子の複利計算
ファイル名: ex06b3.c
#include <stdio.h> int main() { int i, p, n; int debt = 10000; printf( "利率と期間を整数で入力して下さい:" ); scanf( "%d%d", &p, &n ); for( i = 1; i <= n; i++ ) { debt = debt * (1 + (double)p/100); } printf( "%dヶ月後の借金は %d円です\n", n, debt ); return 0; }
Extra問題
E-1 素数判定
ファイル名: ex06e1.c
#include <stdio.h> int main(){ int i, j; int n; int c = 0; int is_prime; for(i = 0; i < 5; i++) { printf("%d個目の整数を入力してください:", i+1); scanf("%d", &n); if (n <= 0) { printf("入力は正の整数にしてください\n"); continue; } if (n == 1) { printf("入力された整数が 1 なのでスキップします\n"); continue; } is_prime = 1; for(j = 2; j <= n-1; j++) { if (n % j == 0) { is_prime = 0; break; } } if (is_prime == 1) { printf("%d は素数\n", n); c++; } } printf("素数は %d 個ありました\n", c); return 0; }