7-12 两个数的简单计算器 (C语言)

本文介绍了一个简单的计算器程序设计,该程序能够根据输入的运算符,对两个整数进行加、减、乘、除或求余运算。文章详细解释了输入格式、输出格式,并通过示例演示了合法和非法运算符的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7-12 两个数的简单计算器 (10 分)本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
输入样例1:
-7 / 2

输出样例1:
-3

输入样例2:
3 & 6
输出样例2:
ERROR

#include<stdio.h>
int main()
{
 int i,j,k;
 char c;
 scanf("%d %c %d",&i,&c,&j);
 if(c=='+')
  {
   k=i+j;
   printf("%d",k);
  }
 else if(c=='-')
  {
   k=i-j;
   printf("%d",k);
  }
 else if(c=='*')
  {
   k=i*j;
   printf("%d",k);
  }
 else if(c=='/'&&j!=0)
  {
   k=i/j;
   printf("%d",k);
  }
 else if(c=='%'&&j!=0)
  {
   k=i%j;
   printf("%d",k);
  }
 else
  printf("ERROR");
 return 0;
}
<think>嗯,用户问的是关于C语言实现个数简单计算器,并且提到了PTA。首先,我得确认PTA的题目要求,通常PTA的题目会有具体的输入输出格式和功能要求。可能用户需要处理个数乘除,并且要考虑除数为零的情况,或者输入格式的问题。 首先,我需要回忆C语言的基本结构,比如如何读取输入,进行条件判断,处理不同的运算符。然后,常见的计算器结构大概是:输入个数一个运算符根据运算符执行相应的计算,输出结果。如果遇到除法,除数不能为零,这时候需要提示错误,比如输出“Error”之类的。 接下来,用户可能遇到的常见错误有哪些呢?比如,输入的顺序,可能是先输入个数,再输入运算符,或者反过来。需要明确题目中的输入顺序。比如,PTA题目可能要求输入的是num1 op num2,例如“3 + 5”这样的形式。这时候需要用scanf读取这三个值,注意运算符一个字符,可能会有空格的问题,所以格式化字符串要正确。 然后,运算符的判断,使用switch或者if-else结构。除法的时候,如果第二个数是0,要处理错误情况。另外,输出格式可能需要保留位小数,或者整数输出,根据题目具体要求。比如,如果题目要求除法结果保留位小数,而其他运算可能输出整数或浮点,这时候需要注意输出格式的控制。 另外,可能要考虑运算符是否有效,比如用户输入了非乘除的符号,这时候也要输出错误提示。例如,如果输入的是“3 & 5”,这时候应该提示错误。 然后,测试用例的情况,比如正常情况下的乘除,除数为零,无效运算符,这些情况都需要处理。例如: 输入:5 / 0,输出Error; 输入:4 # 6,输出Error; 输入:3 + 8,输出11; 输入2.5 * 4,输出10.00(假设要求位小数)。 需要确保程序能处理这些情况。 然后,关于数据类型的选择,可能输入的数字可以是整数或浮点数,所以应该用double类型来存储,这样更通用。scanf用%lf读取,printf用%.2f输出位小数。 然后,代码结构的大致流程: 1. 读取个数字和一个运算符,注意中间可能有空格,所以scanf的格式字符串应该是"%lf %c %lf"。 2. 判断运算符是否是+、-、*、/中的一个,否则输出错误。 3. 如果是除法,检查第二个数是否为零,如果是,输出错误。 4. 根据运算符计算结果,并按照要求的格式输出。 然后,编写代码的时候需要注意运算符的判断顺序,以及错误处理的优先级。比如,先检查运算符是否有效,再检查除数是否为零。 可能的错误点: - 输入格式不正确,导致无法正确读取三个变量。比如,用户输入时可能有多个空格,但scanf中的空格会处理任意数量的空白字符,所以格式字符串中的空格没问题。 - 使用字符变量读取运算符时,注意前面的空格,但如果在格式字符串中使用%c前面空格,可以避免换行符或空格的问题。比如,格式字符串中的" %c"中间的空格会跳过前面的空白字符,正确读取运算符。 测试样例: 比如输入3 + 2,输出5.00; 输入5 / 0,输出Error; 输入4 * 2,输出8.00; 输入10 - 5,输出5.00; 输入6 / 3,输出2.00; 输入2 ^ 3,输出Error。 然后,代码的大致框架可能是这样的: #include <stdio.h> int main() { double a, b; char op; scanf("%lf %c %lf", &a, &op, &b); switch(op) { case '+': printf("%.2f\n", a + b); break; case '-': printf("%.2f\n", a - b); break; case '*': printf("%.2f\n", a * b); break; case '/': if (b == 0) { printf("Error\n"); } else { printf("%.2f\n", a / b); } break; default: printf("Error\n"); } return 0; } 但需要检查题目是否要求输出位小数,或者是否有其他格式要求。比如,PTA可能要求除法输出位小数,而其他运算可能输出整数部分,但通常题目会统一输出位小数,所以上面的代码可能适用。 另外,需要考虑浮点数比较的问题,比如b是否等于0,但由于题目中的输入是用户直接输入的,可能直接判断b == 0即可,不需要考虑精度问题,因为输入的0会被正确读取为0.0。 此外,关于运算符是否为乘号,用户可能输入的是小写的x或者其他符号,但题目中应该明确运算符是*,所以按照题目要求处理。 总结步骤: 1. 读取输入,确保正确获取个操作数和运算符2. 判断运算符是否属于四种中的一种,否则输出错误。 3. 如果是除法,检查除数是否为零,是的话输出错误。 4. 计算并输出结果,保留位小数。 这样应该满足PTA题目的要求。</think>要实现C语言个数简单计算器(PTA题目),可按照以下步骤进行: --- ### **步骤1:明确题目要求** - **输入格式**:个数一个运算符,如 `3 + 5`。 - **输出格式**: - 计算结果(保留位小数)。 - 若为除法且第二个数为0,输出 `Error`。 -运算符无效,输出 `Error`。 --- ### **步骤2:代码框架设计** ```c #include <stdio.h> int main() { double num1, num2; char op; scanf("%lf %c %lf", &num1, &op, &num2); // 读取输入 // 后续处理 return 0; } ``` --- ### **步骤3:处理运算符** 使用 `switch` 结构判断运算符: ```c switch (op) { case '+': printf("%.2f\n", num1 + num2); break; case '-': printf("%.2f\n", num1 - num2); break; case '*': printf("%.2f\n", num1 * num2); break; case '/': if (num2 == 0) { printf("Error\n"); // 除数为0 } else { printf("%.2f\n", num1 / num2); } break; default: printf("Error\n"); // 无效运算符 } ``` --- ### **步骤4:完整代码** ```c #include <stdio.h> int main() { double a, b; char op; scanf("%lf %c %lf", &a, &op, &b); switch(op) { case '+': printf("%.2f\n", a + b); break; case '-': printf("%.2f\n", a - b); break; case '*': printf("%.2f\n", a * b); break; case '/': if (b == 0) { printf("Error\n"); } else { printf("%.2f\n", a / b); } break; default: printf("Error\n"); } return 0; } ``` --- ### **关键点说明** 1. **输入格式**:`scanf` 使用 `%lf %c %lf` 确保正确读取个数运算符2. **浮点数比较**:直接通过 `b == 0` 判断除数是否为0。 3. **输出保留位小数**:通过 `%.2f` 实现。 4. **错误处理**:覆盖除数为0和无效运算符的情况。 --- ### **测试用例** | 输入 | 输出 | |------------|--------| | `5 / 0` | `Error`| | `4 * 2` | `8.00` | | `3 + 8` | `11.00`| | `10 - 5` | `5.00` | | `6 / 3` | `2.00` | | `2 ^ 3` | `Error`| --- 通过以上步骤,即可实现符合PTA要求的简单计算器程序
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值