#include
int main()
{
int num1, num2, sum;
char ys, a;
int i, j, cf, t;
i = 0;
j = 0;
printf("请输入数字。\n");
for (;;)
{
scanf("%d%c%d", &num1, &ys, &num2);
if (ys == '+')//加法
{
sum = num1 + num2;
}
else if (ys == '-')//减法
{
sum = num1 - num2;
}
else if (ys == '')//乘法
{
sum = num1 * num2;
}
else if (ys == '/')//除法
{
sum = num1 / num2;
}
else if (ys == '^')//次方
{
i = num2;
cf = num1;
for (i; i > 1; i--)
{
sum = cf * num1;
cf = sum;
}
}
else if(ys!='^'&&ys!='/'&&ys!=''&&ys!='-'&&ys!='+')//输入其他符号
{
printf("您输入的符号错误,请重新输入。\n");
t=1;
continue;
}
else
{
printf("%d\n", sum);
}
for(t; t>1; i--)
{
printf("继续请输入o或退出请输入x。\n");
}
scanf("%c", &a);
if (a == 'o')//继续
{
printf("请输入数字。\n");
i++;
continue;
}
else if (a == 'x')//退出
{
return 0;
}
}
return 0;
}
你这代码问题多了
1.除法没有判断除数不为0
2.该用switch要用switch,不要写一大堆if,else,而且你最后一个if改为else多好,这么写不累吗,改switch那么最后一个if可以用default代替
3.乘方可以调用pow来做
4.for(t; t>1; i--)这是啥玩意,标准死循环
5.先写伪代码,感觉逻辑没问题了再翻译成代码,你写了一大堆,自己都绕晕了,根本搞不清干了什么
我给你改进下,你的判断有问题的,你的最后一个else肯定不会 执行的。最后判断符号不对的话应该写if语句而不是else if 语句
int main(void)
{
int num1, num2, sum;
char ys, a;
int i, j, cf, t;
i = 0;
j = 0;
printf("请输入数字。\n");
for (;;)
{
scanf("%d %c %d", &num1, &ys, &num2);
if (ys == '+') //加法
{
sum = num1 + num2;
}
else if (ys == '-') //减法
{
sum = num1 - num2;
}
else if (ys =='*') //乘法
{
sum = num1 * num2;
}
else if (ys == '/') //除法
{
sum = num1 / num2;
}
else if (ys == '^') //次方
{
i = num2;
cf = num1;
for (i; i > 1; i--)
{
sum = cf * num1;
cf = sum;
}
}
if (ys != '^' && ys != '/' && ys !='*'&& ys != '-' && ys != '+') //输入其他符号
{
printf("您输入的符号错误,请重新输入。\n");
t = 1;
continue;
}
else
{
printf("%d\n", sum);
}
printf("继续请输入o或退出请输入x。\n");
scanf("%c", &a);
if (a == 'o') //继续
{
printf("请输入数字。\n");
i++;
continue;
}
else if (a == 'x') //退出
{
break;
}
}
return 0;
}
scanf("%c", &a);之前加个getchar()接收换行符