C语言编写字符串求值函数 c语言表达式求值编程

c语言,用函数计算字符串长度

getchar()函数的原型是 int getchar( void )

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的曲松网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

返回值是整型的

功能是:从标准输入中读取一个字符,也就是键盘敲击字符,只接收单个字符

可以用gets()函数来接收多个字符

这里的 s 接收的是该字符的ASCII码,非长度。

如果从原基础上改可以这样

int i;

char s[20]; /*字符串需要长度*/

gets( s );

i = num( s );

int num( char *s ) /* 这里的指针 ,后面学得到*/

{

}

套上去就可以了

C语言字符串表达式求值

#include stdio.h

int main(void)

{

long long x;

int t,i,a;

char c;

for(scanf("%d%lld\n",t,x),i=1;i=t;i++)

{

while((c=getchar())!='\n'c!=EOF)

{

scanf("%d",a);

switch(c)

{

case '+':x+=a;break;

case '-':x-=a;break;

case '*':x*=a;break;

case '/':x/=a;break;

default:break;

}

}

printf("Case #%d:%lld\n",i,x);

}

return 0;

}

C语言 在一个数组或指针里有一个算式(字符串),如何对它求值?

这是一种利用了栈技术的逆波兰算法,算法思想本身不难,难是难在下面这两点:

数据互换,比如char 与double、int互换.或 double、int与string互换等(它们互换都很繁琐).

提取数字含双精度类型(尤其是表达式里提取双精度数据类型是比较繁琐的)。当然也可只提取正整数(若是含有小数则不处理该表达式)。

下面是我写的一个逆波兰算法,由于代码较多发不上来(百度限制了提交),多达500行代码左右。如果你有兴趣想拿去研究的话,可以发给你。主要是用C\C++混合编写。

当然,如果你是使用C#编程语言的话,那么你将不会面对上述的繁琐问题,因为C#有强制型的数据转换功能。

下面是运行效果截图以及主函数的部分调用代码:

逆波兰算法主要是分为两步:

第一步:中缀表达式转为后缀表达式

第二步:对后缀表达式进行计算。

下面对算法原理进行逐一讨论:

逆波兰算法中的中缀转后缀的算法原理是这样的:

第一种情况:由表达式左边开始往右遍历,如果是数字则输出拼到后缀表达式里(出栈的元素也是一 样)。

第二种情况:如果是+-*/四则运算则判断栈顶元素的运算符是否大于当前的符号.(乘除优先于加减),

  模拟:如果当前元素是+(或-),而栈顶元素是*(或除),那么,此时栈顶元素依此出栈直至栈顶元素 的优先级不大于当前元素。然后当前元素进栈。

第三种情况:如果当前元素是左括号"(",则进栈。--因为它待与右括号匹配。

第四种情况:如果当前元素是右括号")"则栈顶元素依此出栈,直至与它匹配的左括号"("出栈为止。

对后缀表达式进行计算原理是这样的:

对后缀表达式由左往右方向进行扫描,遇到数字则进栈,遇到运算符号则在栈里依此出栈两组数字进行计算,计算结果依然进栈,反复此操作。最后栈底部最后一个元素就是该表达式的运算结果。

c语言编一个函数计算字符串长度,子函数说明符为:int mylength(char s[])

#include stdio.h

int mylength(char s[])

{

int i;

for(i=0;s[i]!='\0';i++);

return i;

}

void main()

{

char *s="awedfgwttfwdy66t6t63ttdsf";

printf("Length: %d\n",mylength(s));

}

c语言编程 编写求字符串长度的函数int strlen(char*s),在主函数中调用该函数输出指定字符串的长度

思路:因为字符串都是以'\0'作为结束标志,所以可以从字符串的第一个位置开始遍历,直到出现'\0'停止遍历,并每次下标后移,字符串的长度加1,最后返回字符串长度。

参考代码:

#include "stdio.h" 

int strlen(char *s){//求字符串长度函数 

int n;

for(n=0;s[n]!='\0';n++);

return n;

int main() {

char a[100];

gets(a); 

printf("%d\n",strlen(a));

return 0;

}

/*

运行结果:

wqerqew

*/


分享标题:C语言编写字符串求值函数 c语言表达式求值编程
文章来源:http://pwwzsj.com/article/hjdjsh.html