こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VSC 2015 電卓プログラムに関して

Visual studio community 2015の C++をやっているのですが、電卓プログラムを作ろうと思い、
http://saeki-ce.xsrv.jp/C_src/dentaku01.html
よりプログラムを引っ張ってきて、それを繰り返せるようにしたいのですが、上手くいきません。
一応プログラムを張っておくと(これは試行錯誤中のものです)(所々敬行がおかしくなっているかもしれませんが、コピペをした時に起ってしまったものです)
#include <stdio.h>
#include <stdlib.h>
void main()
{
int b;

while( b== 1) {


int x = 0, y = 0, z = 0, i = 0, j;
char c[128], c1[128], op;

printf("\n電卓(Ver.1.0)\n");
printf("\n計算式: "); gets_s(c); // 計算式入力

//--1つめの数--
for (j = 0; c[i] >= '0' && c[i] <= '9'; i++)
{
c1[j] = c[i]; j++;
} // 1文字取り出す
c1[j] = '\0'; x = atoi(c1); // 整数値に変換

//--演算子--
op = c[i]; i++; // 演算子を取り出す

//--2つめの数--
for (j = 0; c[i] >= '0' && c[i] <= '9'; i++)
{
c1[j] = c[i]; j++;
} // 1文字取り出す
c1[j] = '\0'; y = atoi(c1); // 整数値に変換

//--計算実行--
switch (op)
{
case '+': z = x + y; break;
case '-': z = x - y; break;
case '*': z = x*y; break;
case '/': z = x / y; break;
case '%': z = x%y; break;
default: printf("\a"); // ブザー
}

printf("\n答: %d\n", z);
printf("もう一度やるには1を、やめるには2を押してください。\n");
scanf_s("%d", &b);

}
}
こんな風にしてみたのですが、2回目以降が、計算式を入力していないのに1回分が終わってしまいます。(画像のような無限ループをしてしまいます。)
上の状態だと、エラーで、「初期化されていないローカル変数’b’が使用されます」と出てしまいます。
どう改善すればいいでしょうか?
教えてください

投稿日時 - 2017-02-03 19:39:56

QNo.9289377

すぐに回答ほしいです

質問者が選んだベストアンサー

エラーメッセージ通りです。
'b'が初期化されていません。

int b;

int b = 1;

ローカル変数は宣言しただけでは値は不定です。つまり何が入っているか分からない。

投稿日時 - 2017-02-03 23:31:23

お礼

ありがとうございます。
解決しました。(この件に関してはですが)

投稿日時 - 2017-02-04 17:27:18

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問