用C语言编写一个程序,确认相等运算符和关系运算符的运算结果为1和0?

作者&投稿:缑界 (若有异议请与网页底部的电邮联系)
用c语言编写一个程序,确定关系运算符的结果为1或0,例如==运算符,左右相等时结果为1,用程序如何~

用if语句就可以判断了,比如:
if(a==3){ printf("a==3
");}当a的值等于3的时候,判断条件为真,会执行那条printf语句,否则不会执行。

以前写的程序
#include
#include
#define MAX 200
typedef char datetype;
typedef struct Stack
{
datetype elem[MAX];
int top;
}S;//定义存放运算符的栈
typedef struct stack
{
int num[MAX];
int top;
}ss;//定义存放数字的栈
int degree(char member)
{
if(member=='*'||member=='/')
return 1;
if(member=='+'||member=='-')
return 0;
return -1;
}//返回运算符各自的优先级
int number(char ch)
{
if(ch>='0'&&ch<='9')
return 1;
return 0;
}//判断是否是数字
int prior(char member1,char member2)
{
return degree(member1)-degree(member2);
}//返回两个运算符那个优先
void Init(S *s)
{
s->top=0;
}//初始化栈,即对top赋0。
int Full(S *s)
{
if(s->top==MAX)
return 1;
return 0;
}//判断是否栈满
int Empty(S *s)
{
if(s->top==0)
return 1;
return 0;
}//判断是否空栈
/*入栈
1.判断是否栈满
2.未满则将元素入栈,top++.
*/
int Push(S *s,datetype x)
{
if(Full(s))
return 0;
s->elem[s->top++]=x;
return 1;
}
int push(ss *s,int x)
{
if(s->top==MAX)
return 0;
s->num[s->top++]=x;
return 1;
}
/*出栈
1.判断是否空栈
2.非空则top--。
*/
int Pop(S *s)
{
if(Empty(s))
return 0;
s->top--;
return 1;
}
int pop(ss *s)
{
if(s->top==0)
return 0;
s->top--;
return 1;
}
/*获取栈顶元素
1.判断是否空栈
2.非空则返回栈顶元素。
*/
datetype GetTop(S *s)
{
if(Empty(s))
{
return 0;
}
return s->elem[s->top-1];
}
int gettop(ss *s)
{
if(s->top==0)
return 0;
return s->num[s->top-1];
}
/*
1.判断得到的运算符是什么类型
2.根据运算符来计算并返回结果。
*/
int Count(int num1,int num2,char ch)
{
if(ch=='*')
return num1*num2;
if(ch=='/')
return num2/num1;
if(ch=='+')
return num1+num2;
if(ch=='-')
return num2-num1;
return 0;
}
/*
1.将所有'['和']'转化为'('和')'。(因为其效果一样).
2.遇到(则入栈,遇到运算符若栈为空或栈顶元素为(则入栈,栈顶元素为其他运算符则按3的方法。
3.两个运算符优先级相同或后者小于前者,则弹出前者,并弹出num最后两个元素进行运算得到结果入栈,否则入栈.
4.遇到)则不停弹出运算符直至遇到一个(,同时运算得到结果入栈
*/
int translate(char str[])
{
int ans=0,len,n,m;
int i;
S sign;
ss num;
num.top=0;
Init(&sign);
len=strlen(str);
printf("转化为后缀为 :");
for(i=0;i<len;i++)
{
if(str[i]=='[') str[i]='(';
if(str[i]==']') str[i]=')';
}
for(i=0;i<len;i++)
{
if(number(str[i]))
{
printf("%c",str[i]);
m=str[i]-'0';
if(i>0&&number(str[i-1]))
{
n=gettop(&num);
pop(&num);
push(&num,n*10+m);
}
else
{
push(&num,m);
}
if(i<len-1&&!number(str[i+1]))
printf(" ");
}
else
{

int n1,n2,nn;
char ch;
if(str[i]=='(')
{
Push(&sign,str[i]);
}
else if(str[i]==')')
{
while(GetTop(&sign)!='(')
{
ch=GetTop(&sign);
n1=gettop(&num);
pop(&num);
n2=gettop(&num);
pop(&num);
nn=Count(n1,n2,ch);
push(&num,nn);
printf("%c ",ch);
Pop(&sign);
}
Pop(&sign);
}
else
{
if(!Empty(&sign)||GetTop(&sign)=='(')
{
char ch1=str[i];
int h;
while(!Empty(&sign)||GetTop(&sign)=='(')
{
char ch=GetTop(&sign);
h=prior(ch1,ch);
if(h==1)
{
Push(&sign,ch1);
break;
}
if(h==0||h==-1)
{
int n1,n2;
n1=gettop(&num);
pop(&num);
n2=gettop(&num);
pop(&num);
nn=Count(n1,n2,ch);
push(&num,nn);
printf("%c ",ch);
Pop(&sign);
}
}
if(h!=1) Push(&sign,ch1);
}
else
{
Push(&sign,str[i]);
}
}
}
}
while(!Empty(&sign))
{
char ch=GetTop(&sign);
int n1,n2,nn;
n1=gettop(&num);
pop(&num);
n2=gettop(&num);
pop(&num);
nn=Count(n1,n2,ch);
push(&num,nn);
printf("%c ",ch);
Pop(&sign);
}
printf("
");
ans=gettop(&num);
return ans;
}
/*匹配检查
1.遇到(,[入栈。
2.遇到],检查栈顶是否为[,遇到),检查栈顶是否为(.
3.结束后看是否栈为空或(与)、[与]个数是否相等。
*/
int right(char str[])
{
int i,len,n1=0,n2=0,m1=0,m2=0;
S s;
Init(&s);
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]=='(')
{
Push(&s,str[i]);
n1++;
}
if(str[i]=='[')
{
Push(&s,str[i]);
m1++;
}
if(str[i]==')')
{
if(GetTop(&s)!='(')
return 0;
Pop(&s);
n2++;
}
if(str[i]==']')
{
if(GetTop(&s)!='[')
return 0;
Pop(&s);
m2++;
}
}
if(n1!=n2||m1!=m2) return 0;
return 1;
}
int main()
{

char str[MAX]={"3*[2+2*(1+5)]-2*10+4"};
printf("举例如下:
计算3*[2+2*(1+5)]-2*10+4
");
printf("计算结果为%d
",translate(str));
while(gets(str))
{
int ans;
if(!right(str))
{
printf("输入有误!
");
continue;
}
ans=translate(str);
printf("计算结果为%d
",ans);
}
return 0;
}

C语言中关系表达式的返回值是这样的:
结果为假时,返回0;结果为真时返回1,
也就是说当逻辑值的结果为0时,结果为假;当逻辑值的结果为非0时,结果为真。

你到底想问啥?


怎样用C语言编写一个简单的程序?
下面是一个简单的例子,它展示了如何手动输入 7 个元素,然后求这 7 个元素的和,并输出最大值和最小值。include <stdio.h> int main(){ int a[7]; \/\/ 建立一个 7 元素的数组 int i;int sum = 0;int max = a[0];int min = a[0];\/\/ 手动输入 7 个元素 for (i = 0; i ...

c语言如何实现一个程序循环执行n次
在C语言中,可以使用for循环或while循环来实现一个程序循环执行n次。以下是两种方法的示例:使用for循环:首先定义一个整型变量i,用于计数。然后使用for循环,循环n次。每次循环中,i都会增加1。在循环体中,编写需要重复执行的代码。示例代码如下:使用while循环:首先定义一个整型变量i,用于计数。然后...

用c语言写一个爱心的程序
首行答案:可以使用C语言编写一个打印爱心的程序。C语言是一种通用的编程语言,它具有丰富的语法和库函数,可以实现各种复杂的功能。其中,打印图形是C语言的一个常见应用之一。下面是一个使用C语言编写的打印爱心的示例程序:c include int main() { int i, j, n;float x, y;printf("Enter the ...

如何用C语言编写一个简单的程序!
进入编辑页面在,页面编辑源代码就可以 include<stdio.h> void main() { printf("hello world!"n); } 然后选择保存,打印,输出运行。输出的效果就是这样了,一个简单的c语言程序就写好了 特别提示 所有的输入都要在英文半角的情况下输入,不然程序会不能识别,会报错。

如何用c语言编写一个程序?
include<stdio.h> int main(){ int i,m=0;for(i=2;i<=100;i+=2) m=m+i;printf("%d\\n",m);return 0;} 或 include int main(){ int i,sum=0;for(i=1;i<=50;i++){ sum=sum+2*i;} printf("2+4+6+…+98+100=%d\\n",sum);return 0;} ...

用C语言编写一个计算最大值的程序
C程序代码如下:解析:1、首先定义a,b,c,max四个整型变量,并输入a,b,c三个数;2、定义最大值为a,if循环体还是对b和c进行循环;3、根据循环体判断最大的值,最后输出结果。

用C语言怎么编写一个从1加到10的程序...新手求解
include <stdio.h> void main(){ int n;int sum=0; \/\/初始sum变量值为0;for(n=1;n<=10;n++){ sum=sum+n; \/\/从一加到10;} printf("1+2+...+10=%d",sum);}

在计算机上运行一个C语言编写的程序,要经过怎样的处理过程
开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。1、编辑:输入源程序并保存(。C文件)。2、编译:将源程序翻译成目标文件(。OBJ文件)...

如何用c语言写一个程序输入班级学号的内容?
下面是一个用C语言编写的程序,可以输入班级和学号的内容,并打印出来:c include <stdio.h> int main() { char class[20]; \/\/ 定义班级字符串,长度为20 int number; \/\/ 定义学号整数 printf("请输入班级:");scanf("%s", class); \/\/ 输入班级字符串 printf("请输入学号:");scanf("%d...

c语言在哪里编写程序
Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,通常c语言都是在Microsoft Visual Studio环境中编写。在Microsoft Visual Studio中编写程序做法:1、打开Microsoft Visual Studio 2010软件;然后打开“新建...

临泽县13975419495: 用C语言编写一个程序,确认相等运算符和关系运算符的运算结果为1和0? -
运庙先强: C语言中关系表达式的返回值是这样的: 结果为假时,返回0;结果为真时返回1, 也就是说当逻辑值的结果为0时,结果为假;当逻辑值的结果为非0时,结果为真.你到底想问啥?

临泽县13975419495: 用C语言编写一个程序,使输入和输出相等,组数不限 输入: 1 2 3 输出: 1 2 3 -
运庙先强: #include void main() { int a[3] = {0}; scanf("%d%d%d", &a[0], &a[1], &a[2]); printf("%d\n%d\n%d\n", a[0], a[1], a[2]); return; }

临泽县13975419495: 用C语言编写程序计算下面的公式. -
运庙先强: 因为3个加法的运算规律是相同的,使用一个函数来计算循环值#include <stdio.h> int fun(int n) //计算累加结果函数 {//这里还可以判断下n是否小于等于0int sum=0;int i;for(i=1;i<n+1;i++){sum=sum+i;}return sum; }int main(int argc, char* ...

临泽县13975419495: 用c语言编一个判断输入的两串字母(忽略大小写并且每串字母长度小于100)是不是相等的程序.下面是我 -
运庙先强: 程序最后的字符串比较不能用: a[0]==a[1] 的,要用strcmp(),另外,字符串比较,结尾需要添加'\0'.修改后的答案如下:#include <stdio.h>#include <string.h> /*strcmp()需要*/ int main() {char a[2][110]; int i,j; for (i=0;i<2;i++) { for (j=0;i<100...

临泽县13975419495: 用C语言编写一个程序
运庙先强: #include<stdio.h> void main() {int a,b,c,s,t;printf(“请输入两个不相等的整数:");scanf("%d %d",&a,&b);if(a>b) {t=a;a=b; b=t; /*保证a<b*/ }for(c=a;c>=a && c<=b;c++){ s=c*c;printf("%d的平方是%d\n",c,s); } }

临泽县13975419495: C语言编写程序四则运算法则 -
运庙先强: 1234567891011121314151617# include <stdio.h>int main(void){ int a,b,s; char c; scanf("%d%c%d",&a,&c,&b); switch(c) { case '+':s=a+b;break; case '-':s=a-b;break; case '*':s=a*b;break; case '/':s=a/b;break; default:return -1; } printf("%d",s); ...

临泽县13975419495: 我想用C语言编写一个程序 就是任意输入一对相同类型的数字 可以是整形可以是字符型 都可以计算出他们的和 求一程序 谢谢
运庙先强: #include <stdio.h> main() { int a,b,m; printf("输入:1.整形 2.字符型"); scanf("%d",&m); getchar(); switch(m) { case 1:scanf("%d %d",&a,&b); printf("%d\n",a+b); break; case 2:scanf("%c %c",&a,&b); printf("%c\n",a+b); break; } }

临泽县13975419495: 用C语言编写一个简单的计算器1 -
运庙先强: #include<stdio.h> int main() {double num1 = 0; //输入1double num2 = 0; //输入2char ch; //操作double ret = 0; //结果 printf( "输入第一个数:" );scanf( "%lf", &num1 );printf( "输入第二个数:" );scanf( "%lf", &num2 ); ...

临泽县13975419495: 用C语言写一个程序计算下面的式子x+a%3*(int)(x+y)%2/4 x=2.5;a=7;y=4.7 -
运庙先强:[答案] #include int main() { double x = 2.5,y = 4.7; int a = 7; double z = x + a%3 * (int)(x + y)%2/4; printf("z = %.2lf\n\n",z); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网