int i , j ; for( i = 0 ; i < 3 ; i++ ) { ~~~~A ~~~~B ~~C for( j = 0 ; j < 3 ; j++ ) { ~~~~D ~~~~E ~~F if ( j > i ) ~~~~G break ; printf( "%d\n" , i + j ) ; ~~~~~~~~~~~~~~~~~~~~~~~H } }
上記のプログラムにおいて、式A〜Hまでの評価の順序に記号を次々と書き並べ、 その下に変数の内容の変化を書き加えよ。
なお、追試の際には(これと同程度の内容の)違うプログラムを 1つ出題する。
2つのサイコロで、2つの目の差が、 ちょうど3になる 組み合わせを(3,6),(1,4),...の様に、表示するプログラムを作成せよ。
ただしプログラムはすべての組み合わせを、しらみ潰しに試し、 条件に合うものだけ、表示するようなプログラムとすること。
追試の時には、条件部を少し替えて出題する。 ただし、回答は実行結果とプログラムリストとする。
データ件数が最大20件の数値の集合について、以下のようなデータ構造で プログラムを作成する。
#include <stdio.h> #define MAX 20 /* 集合 a */ int asize = 5 ; int aarray[ MAX ] = { 1,2,8,3,19 } ; /* 集合 b */ int bsize = 8 ; int barray[ MAX ] = { 2,4,8,12,16,18,19,20 } ; void main() { /* 集合 a,b の和,差,積 集合の要素を印刷 */ }上記のような配列asize,aarray[] , bsize,barray[]において、 下記のプログラムについて出題する。
追試の時には、上記集合演算のうちの1つを出題する。
ただし、実際にコンピュータに打ち込み、
出来上がったプログラムリストを印刷して、
実行結果とともに出力し回答とする。
(ただしこの出題に対する回答には、
新たな関数や構造体等は一切、使用しないこと)
前述のプログラムのデータ構造を、次のような構造体を使って書き換えよ。
struct Vector { int size ; int array[ 20 ] ; } ; struct Vector a = { 5 , { 1,2,8,3,19 } } ; struct Vector b = { 8 , { 2,4,8,12,16,18,19,20 } } ; void main() { /* 集合 a,b の和,差,積 集合の要素を印刷 */ }ただし、この出題に対する回答には、新たな関数を定義せずに、記述せよ。
void conj( struct Vector* ans , struct Vector* x , struct Vector* y ) { /* 集合 x と y の和集合を ans に格納せよ */ }