當前位置:首頁 » 編程語言 » 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碼進行運算,所以不用轉換