平成 27 年 7 月 28 日 2015 年度前期プログラム設計期末試験問題 試験時間 1時間30分 1. スタックとキューについて、50 字以内で記述せよ。 2.成績をおさめた構造体プログラムがある。①これを用いて各人の MATH と ENG の平均点を計算す る関数、double get_ave(SK s) を記述せよ。②構造体として記述されている 3 人の学籍番号(number)、 名前(name)、ENG と MATH の平均点数を画面に表示するプログラムを for 文を使って記述せよ。 #include <stdio.h> typedef struct seiseki{ int number; char *name; int ENG; int MATH; double ave; } SK; double get_ave(SK s); int main(void){ int i; SK s[3] ={ {1001, "yamada", 90, 80, 0.0}, {1002, "aoki", 80,70, 0.0}, {1003, "kawai", 85, 65,0.0}, }; for(i=0; i<=2; i++) s[i].ave = get_ave(s[i]); printf("number¥tname¥taverage ¥n"); } /*3 人の学籍番号、名前、ENG return(1); と MATH の平均点数を画面に表示する*/ 3.バブルソートを用いて、文字を辞書順に並べるプログラムを完成させるために、①データを交換す る部分、②ソートして、その結果を画面に出力するプログラムを記述せよ。 #include <stdio.h> #include <string.h> void bublesort(char *a, int n) { char temp; while(n > 0){ int bdone = 0 ; int i = 1; /*maximum value moves the end of the right*/ while(i < n){ if(a[i-1] > a[i]){ /*①データを交換する*/ bdone = 1; } i++; } if(bdone == 0) break; n--; } } void bublesort(char *a, int n); int main(void){ char a[] = "yamadatakashi"; int n = strlen(a) ; /*②ソートして結果を表示する*/ } return(1); 1 4.2分探索木のプログラムがある。解答用紙の空欄を記述することによって、①データを小さい値か ら順に表示する関数 void printdata(NODE *root) を記述せよ。また、②データを大きい順から表示 する関数 void printdata(NODE *root)を記述せよ。 bin11.cpp NODE state4 = { 30, NULL, NULL}; NODE state5 = { 45, NULL, NULL}; NODE state6 = { 80, NULL, NULL}; NODE state7 = { 55, NULL, NULL}; root= &state1; state1.left=&state2; state1.right=&state3; state2.left=&state4; state2.right=&state5; state3.left=&state7; state3.right=&state6; #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct data{ int key; struct data *left; struct data *right; }NODE; void printdata(NODE *root); int main(void){ NODE *root; /*分岐点へのポインタ*/ NODE state1 = {50 ,NULL,NULL}; NODE state2 = {40 ,NULL,NULL}; NODE state3 = {60 ,NULL,NULL}; printdata(root); } return(1); 5 以下に示すリスト構造に aoki のデータを追加するためのプログラムを作成する。 ①解答用紙の空欄を記述することによって、データを追加する関数 void addlist(LIST *head, LIST *addata)を記述せよ。 ②for 文を用いてポインタ*p を辿ってリスト構造にある全データを画面に出力するプログラムを記述せ よ。 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct name_list{ struct name_list *next; char *name; }LIST; void addlist(LIST *head, LIST *addata); int main(void){ LIST name0= {NULL, NULL}; LIST name1= {NULL, "deguchi"}; LIST name2={NULL, "itoh"}; LIST name3={NULL, "kurata"}; LIST name4={NULL, "ouchi"}; LIST addata = {NULL, "aoki"}; LIST *p; /*LIST pointer */ LIST *head; /*LIST head*/ head=&name0; /*LIST head*/ name0.next=&name1; name1.next=&name2; name2.next=&name3; name3.next=&name4; addlist(head, &addata); /*リスト構造にある全データを画面に出力*/ return(0); } 6 下記のプログラムで、出力結果が 12 になるように空欄を記述せよ。 int x; int *p; p= ; *p = 12; printf( "%d", x ); 7 下記のプログラムの出力結果を示せ。 int a[5]={2,4,6,8,10}; printf("%d¥n", *(a+3)); printf("%d", *a+3); 2
© Copyright 2025 ExpyDoc