我寫了代碼來計算操作爲+
,-
,*
, /
,階乘和其他。問題是我的代碼有一次很好用。它顯示:問題C中的多重條件
Zadajte operaciu
這意味着 「寫你想要做什麼」。但第一次循環結束後。它顯示:
Zadajte operaciu:Zadajte operaciu:
兩次,我不知道爲什麼。
這裏是我的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a,b,vysledok;
char s;
do{
printf("Zadajte operaciu:");
s=getchar();
if(s=='+' || s== '-' ||s== '*' || s=='/' ||s== '^')
{
puts("Operacia je binarna.\nZadaj prvy operand: ");
scanf("%d",&a);
puts("Zadaj druhy operand: ");
scanf("%d",&b);
switch (s){
case '+':
printf("Vysledok je %d.\n",a+b);
break;
case '-':
printf("Vysledok je %d.\n",a-b);
break;
case '/':
if(b==0)
puts("CHYBA: nulou sa delit neda.\n");
else
printf("Vysledok je %d.\n",a/b);
break;
case '*':
printf("Vysledok je %d.\n",a*b);
break;
case '^':
for(a;a>0;a--)
b=b*b;
printf("Vysledok je %d.\n",b);
break;
}}
else if(s== '!' || s=='s')
{
puts("Operacia je unarna.\nZadaj prvy argument: ");
scanf("%d",&a);
switch (s){
case '!':
vysledok=a;
for(a;a>0;a--)
vysledok=vysledok*a;
printf("Vysledok je %d.\n",vysledok);
break;
case 's':
vysledok=sqrt(a);
printf("Vysledok je %f.\n",(float)vysledok);
break;
}}
else if(s=='q')
puts("Zadany prikaz quit. Ukoncujem.");
} while (s!='q');
return 0;
}
謝謝,現在我明白的地方是問題:) – Peter2235 2014-10-17 14:11:36