回答編集履歴

1

ソースの変更

2018/12/26 06:18

投稿

退会済みユーザー
test CHANGED
@@ -1,14 +1,4 @@
1
- 今回の場```while```文より```do~while```文の方が向い
1
+ 小計と計をそれぞれ```sum```,```total_sum```にわけ計算しした
2
-
3
- .```do~while```文を使うことで少なくとも一回は入力を受け付け```n > 0```を満たすときはずっと入力を受け付けてくれます。そして初めて```n = 0```となるときループから抜け出し総合計を求めることができます。
4
-
5
-
6
-
7
- ただの```while```文だと最初に変数```n```を初期化する必要がありますが```do~while```文の場合は
8
-
9
- 初期化の必要はありません。文の中でデータの個数を入力することで```n```の値が決まり最後の判定でループを再度行うかどうか決まります。
10
-
11
-
12
2
 
13
3
  ```c
14
4
 
@@ -32,17 +22,27 @@
32
22
 
33
23
  int tmp;
34
24
 
35
- int sum = 0;
25
+ int sum;
26
+
27
+ int total_sum = 0;
36
28
 
37
29
 
38
30
 
39
- do{
31
+ while(1){
40
32
 
41
33
  printf("何個のデータがありますか?");
42
34
 
43
35
  fgets(buf,BUFSIZE,stdin);
44
36
 
45
- n = strtol(buf,NULL,10); //文字列を数値(int型)に変換
37
+ n = strtol(buf,NULL,10);
38
+
39
+ if(n <= 0){
40
+
41
+ break;
42
+
43
+ }
44
+
45
+ sum = 0;
46
46
 
47
47
  for(i = 0; i < n; i++){
48
48
 
@@ -58,9 +58,11 @@
58
58
 
59
59
  printf("小計:%d\n",sum);
60
60
 
61
- }while(n > 0);
61
+ total_sum += sum;
62
62
 
63
+ }
64
+
63
- printf("総合計:%d\n",sum);
65
+ printf("総合計:%d\n",total_sum);
64
66
 
65
67
 
66
68