该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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行的四则计算器.(支持括号)加入了非法字符的检测相关推荐

  1. c语言非法字符空格,98行的四则计算器.(支持括号)加入了非法字符的检测

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include double s2n(char **tem)//字符串转为数字 { double tem_s=ato ...

  2. c语言遇到非法字符,98行的四则计算器.(支持括号)加入了非法字符的检测

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include double s2n(char **tem)//字符串转为数字 { double tem_s=ato ...

  3. c语言非法字符有哪些,98行的四则计算器.(支持括号)加入了非法字符的检测

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include double s2n(char **tem)//字符串转为数字 { double tem_s=ato ...

  4. R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战

    R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战 目录

  5. C语言试题四十六之将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

    1. 题目 请编写一个函数function,它的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试 ...

  6. C语言详解文件操作(一):文件操作基础概念、按照字符、按照行块、按照格式化和随机位置读写文件

    文章目录 一.文件操作基础概念 二.文件读写:按照字符方式读写 三.文件读写:按行和块读写 四.文件读写:格式化和随机位置 一.文件操作基础概念 C语言中的文件操作的好处:       一个文件通常是 ...

  7. (mfc)将字符串中的字符逐个按行输出_C语言中字符串输入输出

    在C语言中没有字符串类型,用字符数组处理字符串 定义 字符数组定义:char 数组名 [常量表达式][常量表达式] 一维字符数组,用于存储和处理一个字符串 . 二维字符数组,用于同时存储和处理多个字符 ...

  8. C语言 统计含有中文的字符串中的字数、 字符数和行数

    输人一段含西文字符和中文字符的正文 ,统计字数. 字符数和行数.字是指一个中文字符或一个西文字符串(由空白符分隔);字符是指一个西文字符或一个中文字 符;空白符是指空格或回车或水平制表Tab #inc ...

  9. C语言:输出n行由大写字母A开始构成的三角形字符阵列。

    实验4-2-6 输出三角形字符阵列(15 分) 本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列. 输入格式: 输入在一行中给出一个正整数n(1≤n<7). 输出格式: 输出n行由 ...

最新文章

  1. 通过sql语句对MySql数据库的基本操作
  2. Linux cron 定时执行任务
  3. 数据结构:二分查找python实现
  4. 前端学习(511):两列布局的第一种方式
  5. redis5 外部不能连接_【硬见小百科】PCB连接的方法
  6. 图解 IDEA 中 springboot 项目 MyBatis Generator 逆向生成实体类及 mapper 配置文件
  7. 导航无限级菜单 java,Element NavMenu 无限级菜单
  8. 安卓应用安全指南 4.4.1 创建/使用服务 示例代码
  9. Mysql日期差的函数
  10. Mysql Workbench中EER Diagram逆向生成表
  11. os库的基本使用(复习)
  12. Java基础篇之什么是本机方法
  13. HTML5 — 知识篇总结《I》【入门知识】
  14. 大厂面试八股文——数据库mysql
  15. [1]Mpush架构图及源码分析
  16. scala怎么取绝对值
  17. linux下关闭acpi电源管理模块
  18. 在选用矿物质防火电缆的时候应该注意什么?
  19. 博客PV突破300万暨两次线上活动圆满结束
  20. 数据挖掘中的模式发现(七)GSP算法、SPADE算法、PrefixSpan算法

热门文章

  1. linux -rpm,linux 的rpm命令
  2. Win7下的内置FTP组件的设置详解
  3. float js 正则 验证_爬虫篇 | 200 行代码实现一个滑动验证码
  4. MySQL的Limit子句
  5. 基于类和对象的高精度算法封装
  6. TCP/IP网络编程之多种I/O函数
  7. 【java】详解java多线程
  8. FastJSON、Gson和Jackson性能对比
  9. IOS之Objective-C学习 ARC下的单例模式
  10. wxAdditions使用小结