当前位置:首页 » 编程语言 » c语言判断运算符类型的程序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言判断运算符类型的程序

发布时间: 2023-07-21 21:26:10

㈠ 怎么在c语言中判断scanf语句输入的运算符是否为+号

char c;
scanf("%c", &c);
if ( '+' == c )
{
}

㈡ 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语言运算符分类及运算顺序和级别总结

1.关系运算符和关系表达式
< <= > >= (6级) == !=(7级)
从左到右运算,结果为0,1
运算符三要素:功能,优先级,运算方向(结合性)
7=7(不合法,是赋值运算不是关系运算)
5>4>3(合法5>4--->1 1>3--->0,所以该运算结果为0)
1<2<3(合法1<2---->1 1<3--->1,所以该运算结果为1)
2.逻辑运算符和逻辑表达式:结果是1,0
&&(11级) ||(12级) !(2级)(与或非)

算数运算符(9):+ - * / % ++ --
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>;
1级是特殊运算符:括号()
2级是单目运算符:++,-- 从右向左运算,只需要一个运算对象;
3、4级算数运算符:+ - * /
6、7级关系运算符:== != > >= < <=
11、12级逻辑运算符:&& || ! ^ & |
3~12级是双目运算符:从左向右,需要两个运算对象
13级是三目运算符:需要三个运算对象
14级是赋值运算符:=

在c语言中有0短路和1短路,如:4<3&&9----->0&&9--->0;1<2<3||5<6<7--->1||5<6<7--->1

例如:

㈣ c语言判断是不是素数的程序

1、首先打开CodeBlocks,创建一个新项目。

㈤ C语言判断字符串类型程序!!!!!!!!!!

#include <stdio.h>


int

main(int argc, char *argv[])

{


char str[101]={0};

char *p=str;


int digitCount=0;

int letterCount=0;


printf("please input a string: ");


gets(str);


printf("your input string is: %s ",str);


while(*p!='')

{

if(*p>'0'&&*p<'9')

{

digitCount++;

}

else if((*p>'a'&&*p<'z')||(*p>'A'&&*p<'Z'))

{

letterCount++;

}

p++;

}


if(digitCount==0&&letterCount==0)

{

printf("you have nothing input. ");

}

else if(digitCount>0&&letterCount>0)

{

printf("mixed ");

}

else if(digitCount>0&&letterCount==0)

{

printf("digit ");

}

else if(digitCount==0&&letterCount>=0)

{

printf("letter ");

}

else

{

//no way

}






getchar();


return 0;

}


㈥ C语言如何用if语句判断输入的符号,是否为运算符(+,-,*或者/)

char op;

op=getchar();

if (op=='+')
{
puts("+");
}
else if (op=='-')
{
puts("-");
}
else if (op=='*')
{
puts("*");
}
else if (op=='/')
{
puts("/");
}
else puts("ERROR");