c语言非法字符判别,98行的四则计算器.(支持括号)加入了非法字符的检测
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
double s2n(char **tem)//字符串转为数字
{
double tem_s=atof(*tem);
while(isdigit(*++(*tem))||**tem=='.');
return tem_s;
}
bool error_found(const char *now)//检测错误的输入
{
while(*now++!='\0'&&isdigit(*now)||*now=='('||*now==')'||*now=='+'||*now=='-'||*now=='*'||*now=='/')
;
return (*now=='\0')? false:true;
}
double cacl( char **tem)//计算函数
{
char *now=*tem,*temp=now;
double left=0.0,right=0.0;
while(*now!='\0'&&*now!=')')
{
if(*now>='0'&&*now<='9')
left=s2n(&now);
else if(*now=='*'||*now=='/')
{
if(*(now+1)>='0'&&*(now+1)<='9')
{
switch(*now)
{
case '*':right=s2n(&(++now));left*=right;break;
case '/':right=s2n(&(++now));left/=right;break;
}
}
else if(*(now+1)=='(')
{
temp=now;
now+=2;
right=cacl(&now);
switch(*temp)
{
case '*':left*=right;break;
case '/':left/=right;break;
}
}
}
else if(*now=='+'||*now=='-')
{
if(*(now+1)>='0'&&*(now+1)<='9')
{
temp=now;
right=s2n(&(++now));
if(*now=='*'||*now=='/')
{
now=temp;
right=cacl(&(++now));
if(*now!='\0')
now--;
}
switch(*temp)
{
case '+':left+=right;break;
case '-':left-=right;break;
}
}
else if(*(now+1)=='(')
{
temp=now;
now+=2;
right=cacl(&now);
switch(*temp)
{
case '+':left+=right;break;
case '-':left-=right;break;
}
}
}
else if(*now=='(')
left=cacl(&(++now));
}
*tem=(*now==')')?now+1:now;
return left;
}
int main(void)
{
char *in,*temp;
temp=in=(char*)malloc(sizeof(100));
while(1)
{
fputs("输入:",stdout);
gets(in);
if(error_found(in))
{printf("非法字符\n");
continue;
}
printf("----\n",cacl(&in));
in=temp;
}
}
c语言非法字符判别,98行的四则计算器.(支持括号)加入了非法字符的检测相关推荐
- c语言非法字符空格,98行的四则计算器.(支持括号)加入了非法字符的检测
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include double s2n(char **tem)//字符串转为数字 { double tem_s=ato ...
- c语言遇到非法字符,98行的四则计算器.(支持括号)加入了非法字符的检测
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include double s2n(char **tem)//字符串转为数字 { double tem_s=ato ...
- c语言非法字符有哪些,98行的四则计算器.(支持括号)加入了非法字符的检测
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include double s2n(char **tem)//字符串转为数字 { double tem_s=ato ...
- R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战
R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战 目录
- C语言试题四十六之将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
1. 题目 请编写一个函数function,它的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试 ...
- C语言详解文件操作(一):文件操作基础概念、按照字符、按照行块、按照格式化和随机位置读写文件
文章目录 一.文件操作基础概念 二.文件读写:按照字符方式读写 三.文件读写:按行和块读写 四.文件读写:格式化和随机位置 一.文件操作基础概念 C语言中的文件操作的好处: 一个文件通常是 ...
- (mfc)将字符串中的字符逐个按行输出_C语言中字符串输入输出
在C语言中没有字符串类型,用字符数组处理字符串 定义 字符数组定义:char 数组名 [常量表达式][常量表达式] 一维字符数组,用于存储和处理一个字符串 . 二维字符数组,用于同时存储和处理多个字符 ...
- C语言 统计含有中文的字符串中的字数、 字符数和行数
输人一段含西文字符和中文字符的正文 ,统计字数. 字符数和行数.字是指一个中文字符或一个西文字符串(由空白符分隔);字符是指一个西文字符或一个中文字 符;空白符是指空格或回车或水平制表Tab #inc ...
- C语言:输出n行由大写字母A开始构成的三角形字符阵列。
实验4-2-6 输出三角形字符阵列(15 分) 本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列. 输入格式: 输入在一行中给出一个正整数n(1≤n<7). 输出格式: 输出n行由 ...
最新文章
- 通过sql语句对MySql数据库的基本操作
- Linux cron 定时执行任务
- 数据结构:二分查找python实现
- 前端学习(511):两列布局的第一种方式
- redis5 外部不能连接_【硬见小百科】PCB连接的方法
- 图解 IDEA 中 springboot 项目 MyBatis Generator 逆向生成实体类及 mapper 配置文件
- 导航无限级菜单 java,Element NavMenu 无限级菜单
- 安卓应用安全指南 4.4.1 创建/使用服务 示例代码
- Mysql日期差的函数
- Mysql Workbench中EER Diagram逆向生成表
- os库的基本使用(复习)
- Java基础篇之什么是本机方法
- HTML5 — 知识篇总结《I》【入门知识】
- 大厂面试八股文——数据库mysql
- [1]Mpush架构图及源码分析
- scala怎么取绝对值
- linux下关闭acpi电源管理模块
- 在选用矿物质防火电缆的时候应该注意什么?
- 博客PV突破300万暨两次线上活动圆满结束
- 数据挖掘中的模式发现(七)GSP算法、SPADE算法、PrefixSpan算法