|
#include <stdio.h> int main( ){ char s[40], c; int n, k=0; printf("n = "); scanf("%d", &n); while(n > 0){ s[k] = n % 2; /*あ*/; k++; } while(k > 0){ k--; printf("%d", s[k]); } printf("\n"); fflush(stdin); getchar( ); return 0; }
|
キー入力された自然数を2進表示する左記のプログラムを完成せよ。
|
☆ 「s1[i] = s[k-i] + '0';」 とすると 「printf("%s\n", s1);」
① 10進固定小数点でキー入力された正の実数の2進表示は?
|
#include <stdio.h> int main( ){ int m[10], k, n; double a, v, y; for(y = k = 0; k < 10; k++){ printf("m[%d] = ", k); scanf("%d", /*か*/); y += m[k]; if(m[k] == 0){break;} } if(k == 0){return 0;} /*き*/; a = y / n; for(y = k = 0; k < n; k++){ y += /*く*/*(m[k] - a); } v = y / n; printf("%f, %f\n", a, v); fflush(stdin); getchar( ); return 0; }
|
キー入力された整数の平均値 a と分散 v を表示する左記のプログラムを完成せよ。
|
☆ 空白文字で区切って1行に複数のデータを入力できる (書式付入力)。
① while 文による等価なプログラムは?
② 一つの for 文で平均値と分散を求めるプログラムは?
|
#include <stdio.h> int main( ){ char s[80]="Hello, world."; int n=0; while(s[n] != 0){n++;} if(n > 75){return 0;} for(/*さ*/){ s[k+4] = s[k]; } for(k = 0; k < 4; k++){ s[k] = /*し*/; } printf("%s\n", s); fflush(stdin); getchar( ); return 0; }
|
s[0] から始まる文字列の先頭に4個のスペースを挿入する左記のプログラムを完成せよ。
|
☆ 領域が重なるとき、コピーする順序に注意。
① 「char s[80]=" Hello, world.";」と初期化されているとき、「'H'」より前のスペースを削除するプログラムは?
|
#include <stdio.h> int main( ){ int m[10], n1, n2, n3, k; for(k = 0; k < 10; k++){ printf("m[%d] = ", k); scanf("%d", &m[k]); } /*た*/ for(k = 3; k < 10; k++){ if(m[n1] >= m[k]){ /*ち*/ }else if(m[n2] >= m[k]){ /*つ*/ }else if(m[n3] >= m[k]){ /*て*/ } } if(m[n3] > m[n2] && m[n2] > m[n1]) { printf("ブービーは %d\n", n2); }else{ printf("ブービーはなし\n"); } fflush(stdin); getchar( ); return 0; }
|
配列 m[10] にあるデータで2番目に小さい値をもつ要素を求める左記のプログラムを完成せよ。
|
☆ 「if(m[n1] >= m[2]){n3 = n2; n2 = n1; n1 = k;}else if(m[n2] >= m[2]){□}else{□}」
① 「>=」を「>」に変えても同じ? なぜ?
|
#include <stdio.h> int main( ){ double x[10], y; int m[10], n, k; printf("y = "); scanf("%lf", &y); printf("n = "); scanf("%d", &n); if(n > 1000){return 0;} x[0] = y; m[0] = 1; for(k = 0; n > m[k]; k++){ x[k+1] = x[k]*x[k]; m[k+1] = m[k]*2; } /*な*/ for(y = 1; n > 0; k--){ if(n >= m[k]){ y *= x[k]; /*に*/ } } printf("y^n = %e\n", y); fflush(stdin); getchar( ); return 0; }
|
y のべき乗を求める左記のプログラムを完成せよ。
|
☆ y13 = y8 * y4 * y
※コメント投稿者のブログIDはブログ作成者のみに通知されます