以下の問に答えよ。
正の整数 n を入力として受け取って、 1 から n までの整数を空白で区切って表示するが、
正の整数を入力して下さい: 10↵ !1 !2 3 !4 5 6 !7 8 9 !10実行例 2:
正の整数を入力して下さい: 25↵ !1 !2 3 !4 5 6 !7 8 9 !10 11 !12 !13 14 15 !16 !17 18 !19 20 21 !22 23 24 !25
下に示すように、0 以上の段数 n を入力として受け取って、 以下の条件をみたす数
を 10 で割った余りを表示して、与えられた段数の三角形を表示するプログラムを作成せよ。
何段ですか:5↵ 1 34 567 7890 90123
何段ですか:7↵ 1 34 567 7890 90123 123456 3456789
何段ですか: 0↵
int 型の引数 a, n を受け取り、 初項は \(a_1 = a\)、それ以外の項は \(a_k = 2 \times a_{k - 1} - 1\) \((k \ge 2)\) で定義される数列の、\(a_1\) から \(a_n\) までを空白区切りで出力する関数 void foo(int a, int n) を定義せよ。nは 1 以上と仮定してよい。
main 関数は、以下のコードを使用して、確認せよ。
/* … 略 … */ int main(void) { int a, n; printf("初項を入力してください: "); scanf("%d", &a); printf("項数を入力してください: "); scanf("%d", &n); foo(a, n); putchar('\n'); return 0; }
出力例は、以下のようになる。
実行例 1:初項を入力してください: 2↵ 項数を入力してください: 5↵ 2 3 5 9 17実行例 2:
初項を入力してください: -1↵ 項数を入力してください: 10↵ -1 -3 -7 -15 -31 -63 -127 -255 -511 -1023実行例 3:
初項を入力してください: 3↵ 項数を入力してください: 6↵ 3 5 9 17 33 65実行例 4:
初項を入力してください: 10↵ 項数を入力してください: 1↵ 10
2 つのint 型の(同じ要素数の)配列 va, vb と、 これら 2 つの配列の要素数を表す int 型の引数 noをこの順に受け取り、 同じ添字の要素を比べて va のほうが vb より大きくなる (va[i] > vb[i] となる)回数を数える関数 int countLarger(const int va[], const int vb[], int no) を定義せよ。
main 関数は、countLarger を適用した結果を表示するようにせよ。
#include <stdio.h> /* countLarger の定義 */ void printArr(int arr[], int no) { int j; printf("{"); for (j = 0; j < no; j++) { printf("%d, ", arr[j]); } printf("};\n"); } #define N … int main(void) { int va[N] = { … }; int vb[N] = { … }; printf("va = "); printArr(va, N); printf("vb = "); printArr(vb, N); printf("va が勝ったのは %d 回です。\n", countLarger(va, vb, N)); return 0; }
実行例 1:(#define N 10)
va = {9, 2, 3, 7, 0, 1, 5, 4, 6, 8, }; vb = {2, 8, 7, 0, 1, 9, 5, 6, 4, 3, }; va が勝ったのは 4 回です。
実行例 2:(#define N 5)
va = {5, 4, 3, 2, 1, }; vb = {5, 4, 3, 2, 1, }; va が勝ったのは 0 回です。
実行例 3:(#define N 6)
va = {2, 4, 5, 10, 3, 8, }; vb = {1, 3, 4, 9, 2, 7, }; va が勝ったのは 6 回です。