• 締切済み

C言語の簡単なプログラム

簡単な足し算のみの電卓をC言語で作っています。 /が入力されるまで足し算を繰り返すものです。 コンパイルをして、足し算を繰り返すところまでは上手くいったのですが、 /を入力してのループの抜け方がわかりません。 #include<stdio.h> int main(void) { int x=0,z; printf("数値を入力\n"); printf("終了は/を入力\n"); printf("\n結果 %d\n",x); while(1){ scanf("%d",&z); x=x+z; /* 足し算の計算 */ printf("結果 %d\n",x); /* 現在の計算結果を表示 */ } printf("終了 結果: %d\n",x); /* 計算の終了、合計値の表示 */ return 0; } while文のなかにifでいれればいいのでしょうか? その場合、 if(z=='/') break; でいいんでしょうか? if文以外のやり方がある場合も教えていただけたらと思います。 よろしくお願いします。

みんなの回答

  • koara1457
  • ベストアンサー率37% (9/24)
回答No.1

キー入力を数値として受け取ろうとしているので"/"は、受け取れません。 "/"入力で終了するのであれば、キー入力をコードで受け取るべきです。 確認していないですが、たぶん以下のような感じで行けるのでは。。。 #include <stdio.h> void main(void) { char buff[16]; char c; int num,ct,total; ct=0; total=0; memset(buff,0,sizeof(buff)); while((c=getchar())!=EOF){ if(c=='/')break; if(c>='0' && c<='9'){ buff[ct]=c; ct++; } else{ num=atoi(buff); ct=0; total=total+num; printf("total=%d\n",total); memset(buff,0,sizeof(buff)); } } printf("total=%d\n",total); }

関連するQ&A