ca1ming 2022-09-29 13:25 采纳率: 100%
浏览 26
已结题

纯纯初学者,之前做了一个C语言的计算器,有什么问题吗?

#include<stdio.h>
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;
}

  • 写回答

3条回答 默认 最新

  • 於黾 2022-09-29 13:44
    关注

    你这代码问题多了
    1.除法没有判断除数不为0
    2.该用switch要用switch,不要写一大堆if,else,而且你最后一个if改为else多好,这么写不累吗,改switch那么最后一个if可以用default代替
    3.乘方可以调用pow来做
    4.for(t; t>1; i--)这是啥玩意,标准死循环
    5.先写伪代码,感觉逻辑没问题了再翻译成代码,你写了一大堆,自己都绕晕了,根本搞不清干了什么

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月7日
  • 已采纳回答 9月29日
  • 创建了问题 9月29日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程