PAT|中国大学MOOC-翁恺-C语言程序设计习题集21-24

本文介绍了PAT考试中的几道C语言编程题目,包括实现一个简单计算器,处理加减乘除运算,优先级从左到右;字符串字母大小写的转换,以及计算单词长度和数字的拼音输出。通过这些题目,读者可以提升C语言编程和字符串处理能力。
摘要由CSDN通过智能技术生成

06-1. 简单计算器(20)

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:
1+2*10-10/2=
输出样例:
10

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int len, i, j, a, sum, n,begin,flag;
char sign[200];
float num[200];
char str[400];
gets(str);
len=strlen(str);
n = 0;
begin = 0;
flag = 0;
for (i = 0; i < len; i++)
{
if (str[i] >= 48 && str[i] <= 57 || str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/' || str[i] == '=')//如果字符是‘0’-‘9’‘+’‘-’‘*’‘/’‘=’则合法
{
if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/' || str[i] == '=')//当遇到加减乘除的时候,计算出每一位的数字
{
sum = 0;
for (j = begin; j < i; j++)
{
a = (str[j] - '0')*pow(10.0, i - 1 -j);
sum = sum + a;
}
num[n] = sum;//记录数字
sign[n] = str[i];//记录符号
begin = i + 1;
n++;
}
}
else//否则不合法,提示出错
{
printf("ERROR");
flag = 1;
break;
}
}
if (flag == 0)//当全部字符合法,则进行计算
{
for (i = 0; i <= n-1 ; i++)//将所有数字提出来计算,将计算好的数字放在下一位,方便后来的计算,最后一位则为结果
{
if (sign[i] == '+')
{
num[i + 1] = num[i] + num[i + 1];
}
else if (sign[i] == '-')
{
num[i + 1] = num[i] - num[i + 1];
}
else if (sign[i] == '*')
{
num[i + 1] = num[i] * num[i + 1];
}
else if (sign[i] == '/')
{
if (num[i + 1] == 0)//当被除数为0,提示错误
{
pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值