解答例
#include <stdio.h> int main(void) { int i, n; printf("正の整数を入力して下さい: "); scanf("%d", &n); for (i=1; i<=n; i++) { int j; for (j=1; j<=i; j++) { if (i%j==0) { putchar('*'); } else { putchar('_'); } } putchar('\n'); } return 0; }
プログラミングⅠ の範囲の問題である。
剰余の % 演算子は何度も演習で使っているのだが、 忘れている人がいるようだった。
解答例
#include <stdio.h> void countBang(const char *str) { int i=1; for ( ; *str; str++) { if (*str=='!') { printf("%d", i++); } else { putchar(*str); } } } int main(void) { countBang("! little, ! little, ! little Indians.\n"); countBang("! ! !, dah.\n"); countBang("!!!!!!!!!!!!.\n"); return 0; }
*str!=NULL は 1 点減点とする。(ポインタでないものとポインタを比べている)
解答例
#include <stdio.h>
struct ratio {
int n;
int d;
};
void bakerTransformation(struct ratio *p) {
int n = p->n, d = p->d;
if (n*2 > d) {
n = d-n;
}
p->n = 2*n ;
}
int main(void) {
struct ratio r;
int i, n;
printf("初期値を ?/? の形式で入力して下さい。 ");
scanf("%d/%d", &r.n, &r.d);
printf("繰返し回数は? ");
scanf("%d", &n);
for (i=0; i<n; i++) {
printf("%d/%d ", r.n, r.d);
baker(&r);
}
printf("\n");
return 0;
}
解答例で赤色になっているところの; を忘れている人が多い。
関数 bakerTransformation の頭部(“void bakerTransformation(struct ration *p)” という部分) をうまく書けない人が多かったようだ。戻り値の型は void にする、または void 以外の型にしたときは return 文を書かなければいけない。