解答例
#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 文を書かなければいけない。