当前位置:首页 » 编程语言 » C语言字符串加减乘除
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

C语言字符串加减乘除

发布时间: 2022-01-29 20:34:56

‘壹’ c语言中加减乘除是字符吗可不可以用在case选择语句中

加上单引号括起来就是字符了,例如'+'。可以用在case中

‘贰’ 在c语言中字符串不会进行加减乘除等算术运算式吗

不行,只有int,float等数值类型可以进行算数运算,字符串不可以,但是字符串可以通过加号进行拼接

‘叁’ c语言,用字符串计算十进制的加减乘除,自己输入数字。急求。

字符串表达式计算四则运算涉及到数据结构与栈的算法了,这种算法称为逆波兰算法。曾经写个一个,楼主需要的话可以给你。算法本身不复杂,就是在提取浮点数时有点繁琐。

‘肆’ 从键盘上输入一个运算符字符串,要求进行计算。(完成加减乘除)用C语言编的代码啊啊啊啊!!!急求我是

#include <stdio.h>
int calculator() //定义一个函数。完成计算功能
{
int a,b, i;
char c;
for(i=0;;i++)
{
printf("请输入所要计算的两个数,以及所要执行的计算符号\n");
scanf("%d %d %c", &a,&b,&c);

switch (c)
{
case '+':
printf("所要计算的式子:%d+%d\n",a,b);
a = a + b;printf("计算结果为:%d\n\n",a);
break;
case '-':
printf("所要计算的式子:%d-%d\n",a,b);
a = a - b;printf("计算结果为:%d\n\n",a);
break;
case '*':
printf("所要计算的式子:%d*%d\n",a,b);
a = a * b;printf("所要计算的式子:%d*%d\n",a,b);printf("计算结果为:%d\n\n",a);
break;
case '/':
printf("所要计算的式子:%d/%d\n",a,b);
a = a / b;printf("所要计算的式子:%d/%d\n",a,b);printf("计算结果为:%d\n\n",a);
break;
}
}
}
int main()
{

calculator();
}

‘伍’ C语言:输入两个数和一个字符,根据操作符进行加减乘除运算,并输出结果的表达式。。


#include <stdio.h>


int main(){

int a, b;//两个数

char op;//操作符


printf("输入一个表达式,例如5*4: ");

scanf("%d%c%d", &a, &op, &b);

switch(op){

case '+':

printf("%d%c%d=%d", a, op, b, a+b);

break;

case '-':

printf("%d%c%d=%d", a, op, b, a-b);

break;

case '*':

printf("%d%c%d=%d", a, op, b, a*b);

break;

case '/':

printf("%d%c%d=%f", a, op, b, a*1.0/b);

break;

}

return 0;

}

‘陆’ 在知道里搜索到你关于“c语言中如何对字符型进行加减乘除”的答案

gethex对你没有用,你看下面的小例子自己想吧

int a='2',b='3';
int c= (a-'0')*(b-'0');
cout<<c<<endl;// 6
从char'2'转为普通的数字2都这么转

‘柒’ C语言中如何实现加减乘除运算

实现方法如下:

读入的时候用%x读入,然后在程序里面直接用+,-,*,/运算就行了,输出的时候再用%x。

‘捌’ C语言字符串四则运算的实现!求指导

以前写过一个,支持四则运算以及括号运算,采用栈实现
#include<stdio.h>
#include<malloc.h>
#define null 0
#define max 100
typedef struct date /*定义字符栈*/
{
char sk[max];
int top;
}seqstack;
typedef struct da /*定义数据栈*/
{
int sk[max];
int top;
}stack;
void push(seqstack *s,char x) /*进栈*/
{
if(s->top==max-1)
{
printf("out of space.\n");
}
s->top++;
s->sk[s->top]=x;
}
void spush(stack *s,int x) /*进栈*/
{
if(s->top==max-1)
{
printf("sout of space.\n");
}
s->top++;
s->sk[s->top]=x;
}
char pop(seqstack *s ,char c) /*出栈*/
{
if(s->top==-1)
{
printf("no element.\n");return 0;
}
else
{
c=s->sk[s->top];
s->top--;
return c;
}
}
int spop(stack *s ,int c) /*出栈*/
{
if(s->top==-1)
{
printf("sno element.\n");return 0;
}
else
{
c=s->sk[s->top];
s->top--;
return c;
}
}
int pp(char c) /*判断字符*/
{
switch(c)
{
case '#':return 0;break;
case '+':return 2;break;
case '-':return 2;break;
case '*':return 3;break;
case '/':return 3;break;
case '(':return 1;break;
case ')':return 4;break;
default:return 9;break;
}
}
int yunsuan(int a,char b,int c) /*运算*/
{
switch(b)
{
case '+':return a+c;break;
case '-':return a-c;break;
case '*':return a*c;break;
default:
if(c==0) return 0; //除数为0
return a/c;break;
}
}
char bijiao(seqstack *f,char c) /*比较优先级*/
{
int m,n;
char w;
m=pp(c);
w=f->sk[f->top];
n=pp(w);
if(n<m) return '>';
return '<';
}
void main()
{
int x,s;
int q=0,w=0;
int p=0; /*标示变量*/
char ch,th='\0',d='\0';
seqstack *h;
h=(seqstack*)malloc(sizeof(seqstack));
if(!h) printf("no creat");
h->top=-1;
stack *g;
g=(stack*)malloc(sizeof(stack));
if(!g) printf("no door");
g->top=-1;
push(h,'#');
ch=getchar();
while(ch!='\n')
{
if(pp(ch)==9)
{
if(p>0)
{
x=spop(g,x);
spush(g,10*x+ch-48);
}
else
{
spush(g,ch-48);
p++;
}
}
if(pp(ch)==1)
{ push(h,ch);p=0;}
if(pp(ch)==4)
{
while(pp(h->sk[h->top])!=1)
{
q=spop(g,q);
w=spop(g,w);
th=pop(h,th);
spush(g,yunsuan(w,th,q));
}
d=pop(h,d);p=0;
}
if(pp(ch)!=9&&pp(ch)!=1&&pp(ch)!=4)
{
switch(bijiao(h,ch))
{
case '>':push(h,ch);p=0;break;
case '<':
while(pp(h->sk[h->top])>=pp(ch))
{
q=spop(g,q);w=spop(g,w);
th=pop(h,th);
spush(g,yunsuan(w,th,q));
}
push(h,ch); p=0;break;
}
}
ch=getchar();
}
while(ch=='\n'&&h->sk[h->top]!='#')
{
q=spop(g,q);w=spop(g,w);
th=pop(h,th);
s=yunsuan(w,th,q);
spush(g,s);
}
printf("the answer is %d\n",g->sk[g->top]);
}

‘玖’ C语言编程中,怎样使输出的加减乘除是运算符

#include<stdio.h>
#include<string.h>
#define N 100

typedef struct{ //操作数栈
float d[N];
int len; //len相当于top
}stacks,*lists;

typedef struct{ //运算符栈
char c[N];
int len; //len相当于top
}stack,*list;

int init(list p); //stack 初始化
int inits(lists p); //stacks 初始化
int pushs(lists p,float m); // stacks 入栈
int push(list p,char c); //stack 入栈
int pops(lists p,float *m); //stacks 出栈
int pop(list p,char *c); //stack 出栈
int in(char c); //判断C是否为数据 是则返回 1 否则 返回 0
char pre(char s,char c); //判断s c的优先级 s>c return '>'; s<c return '<';s=c return '=' ;
float operate(float a,char t,float b); //对a b进行t(+-*/)运算 return a+b or a-b, a*b ,a/b
float value(char s[]); //求表达式S 的值

void main(){
char s[N]; int n; float f;
printf("*******************Express Evaluate***********************\n");
while(1){
printf("please input a express\n");
scanf("%s",s); //输入表达式
n=strlen(s); //求表达式的长度
printf("express length=%d\n",n); //输出表达式的长度
s[n]='#'; //在表达式尾部插入'#' 注: # 表示操作结束
f=value(s); //计算表达式的长度
printf("f=%.5f\n",f); //输出表达时的值 注 只输出前五位小数
printf("continue input 1,break input 0\n");
scanf("%d",&n); printf("\n"); //判断是否继续进操作 是则输入 1,否则输入 0
if(!n) break; }
}

int init(list p){
if(!p) {printf("Error,init stack NULL\n"); return 0;}
p->len=0;
return 1;
}
int inits(lists p){
if(!p) {printf("Error,init stacks NULL\n"); return 0;}
p->len=0;
return 1;
}
int pushs(lists p,float m){
if(!p) {printf("Error,pushs stacks NULL\n"); return 0;}
p->d[p->len++]=m; return 1;
}
int push(list p,char c){
if(!p) {printf("Error,push stack NULL\n"); return 0;}
p->c[p->len++]=c; return 1;
}
int pops(lists p,float *m){
if(!p) {printf("Error,push stacks NULL\n"); return 0;}
*m=p->d[--p->len]; return 1;
}
int pop(list p,char *c){
if(!p) {printf("Error,push stack NULL\n"); return 0;}
*c=p->c[--p->len]; return 1;
}
int in(char c){ //判断C是否为数据 是则返回 1 否则 返回 0
if(c>='0'&&c<='9'||c=='.') return 1; return 0;}
char pre(char s,char c){ //判断s c的优先级 s>c return '>'; s<c return '<';s=c return '=' ;
char m= '<' , n= '=' , k='>' , r;
if((s=='-')||(s=='+')){
if((c=='*')||(c=='(')||(c=='/'))
r=m;
else r=k; }
if((s=='*')||(s=='/')){
if((c=='(')) r=m;
else r=k; }
if(s=='('){
if(c==')') r=n;
else r=m; }
if(s==')')
r=k;
if(s=='#') {
if(c=='#') r=n;
else r=m; }
return r;
}
float operate(float a,char t,float b){ //对a b进行t(+-*/)运算 return a+b or a-b, a*b ,a/b
if(t=='-') return a-b; if(t=='+') return a+b;
if(t=='*') return a*b; if(t=='/') return a/b; }

float value(char s[]){
stacks opnd; stack optr; char *p,*pr,x,t; float a,b,m=0;
inits(&opnd); init(&optr); int k=0,i,tp=10;
push(&optr,'#'); //将'#'压入栈optr中,作结束标志
p=pr=s; //初始化 指针 p pr 使pr p 指向 表达式
while(*p!='#'||optr.c[optr.len-1]!='#'){//当p指向的操作符 和optr 中的栈顶元素都为'#'时 操作结束
if(in(*p)) //如果p指向数字 则把 数字字符串转化为实型(float)数据 并存入栈opnd中
{
m=0; k=0; tp=10;
while(in(*p)) p++; //使p指向下一个运算符
while(pr!=p)
{
if(*pr!='.') //如果pr指向小数点 则跳过
m=(m+*(pr++)-'0')*10; //将单个字数字符转化为数据 并逐位求和
else{ //如 12.3 -> 1230
k=p-pr; pr++; }
}
for(i=0,tp=10;i<k;i++) //求出除数tp 使1230除以tp(100)等于 12.3
{
tp=tp*10;
if(i==k-1)
tp=tp/10;
}
pushs(&opnd,m/tp); //输入栈opnd中
}
else switch(pre(optr.c[optr.len-1],*p)){
case'<':push(&optr,*p);p++;pr=p;break;
case'=':pop(&optr,&x);p++;pr=p;break;
case'>':pop(&optr,&t); pops(&opnd,&b); pops(&opnd,&a); //输出一个操作符和两个数据
pushs(&opnd,operate(a,t,b));break;} //运算
}
return opnd.d[opnd.len-1]; //返回表达式的值
}

‘拾’ c语言中如何对字符型进行加减乘除

加减可以,乘除应该也可以。其实字符型做四则运算就是对这个字符的ASCII码进行运算,所以不用转换