質問編集履歴

2

2021/05/21 07:51

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 下記のプログラムについて各質問の解説をお願いします
1
+ Hahdjsokasuihjsii
test CHANGED
File without changes

1

2021/05/21 07:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,87 +1 @@
1
- 次に示す「身体検査データを構造体で処理する」プログラム
2
-
3
- #include <stdio.h>#define VMAX 21 /* 視力の最大値 2.1 × 10 */ /*--- 身体検査データ型 ---*/
4
-
5
- typedef struct{ char name[20];/* 氏名 */
6
-
7
- int height; /* 身長 */
8
-
9
- double vision; /* 視力 */
10
-
11
- }
12
-
13
- PhysCheck; /*--- 身長の平均値を求める ---*/ double ave_height(PhysCheck *dat) {
14
-
15
- int n=0;
16
-
17
- double sum = 0.0;
18
-
19
- while(dat->height >= 0){ sum += (dat++)->height; n++;
1
+ haihduxoajgfruwiahzgdiwkqghakxuhxhsuwijdbxyxojagdhxudhdjoxiah
20
-
21
- }
22
-
23
- return (sum/n);
24
-
25
- } /*--- 視力の分布を求める ---*/
26
-
27
- void dist_vision(PhysCheck *dat, int dist[]) {
28
-
29
- int vision;
30
-
31
- while((vision=(int)(10*((dat++)->vision)+0.5))>= 0){
32
-
33
- if (vision <VMAX) ++*(dist + vision);
34
-
35
- }
36
-
37
- 1
38
-
39
- } int main(void) {
40
-
41
- PhysCheck *y, x[] = {
42
-
43
- {"AKASAKA Tadao", 162, 0.3},
44
-
45
- {"KATOH Tomiaki", 173, 0.7},
46
-
47
- {"SAITOH Syouji", 175, 2.0},
48
-
49
- {"TAKEDA Shinya", 171, 1.5},
50
-
51
- {"NAGAHAMA Masaki", 168, 0.4},
52
-
53
- {"HAMADA Tetsuaki", 174, 1.2},
54
-
55
- {"MATSUTOMI Akio", 169, 0.8},
56
-
57
- {"", −1, -1.0} /*フラグ*/ };
58
-
59
- int *z, vdist[VMAX]={}; /* 視力の分布 */ puts("■□■ 身体検査一覧表 ■□■");
60
-
61
- puts("氏名 身長 視力 ");
62
-
63
- puts("----------------------------");
64
-
65
- for(y = x; y->height >= 0; y++) printf("%-18.18s%4d%5.1f\n", y->name, y->height, y->vision);
66
-
67
- printf("\n 平均身長:%5.1fcm\n", ave_height(x)); dist_vision(x, vdist); /* 視力の分布を求める */ printf("\n 視力の分布\n");
68
-
69
- for (z = vdist ; z <vdist + VMAX ; z++)
70
-
71
- if (*z >0) printf("%3.1f~:%2d 人\n", (z - vdist)/10.0, *z);
72
-
73
- return (0); 2
74
-
75
-
76
-
77
- (ア) 関数 dist_vision の中の while ループが開始される直前の dat->name[2]の値はいくらですか. (イ) 関数 dist_vision の中の while の条件判断部分の(vision=(int)(10*((dat++)->vision)+0.5))>=0 が偽となり,while 文から抜けた時の vision の値はいくらですか.
78
-
79
-
80
-
81
- 2)下線部1の++*(dist + vision)の命令は何回実行されますか.
82
-
83
-
84
-
85
-
86
-
87
- 上記の3問について解説をお願いしたいです