c语言if语句

#include<stdio.h>void main(){ char b; double a,c,d; scanf("%lf%c%lf",&a,&b,&c); if(b='+') d=a+c; printf("结果:%f\n",d); if(b='-') d=a-c; printf("结果:%f\n",d); if(b='*') d=a*c; printf("结果:%f\n",d); if(b='/') d=a/c; printf("结果:%f\n",d);}

看到截图大家就知道我有什么问题了,这个该怎么办?除了加法以外都不合适,我郁闷的。我输其他的算式运算就把加减乘除的结果都算出来了。我嵌套了半天if语句都语法错误。没办法,找各位大哥帮我看下。小弟在线等、
这里我就是请大哥给我嵌套下不要我一运算就加减乘除的结果都出来了、、

c语言中的if语句,一般有三种形式,其它的形式都在此三种形式基础上建立而来,活学活用嘛。


1、 if……形式
一般格式:if(表达式) 语句;
语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。语句可以是单条语句,也可以是用花括号{}包括起来的复合语句。示例如下:

#include <stdio.h>
int main(){
int a,b,max;
printf("\n input two numbers: ");
scanf("%d%d",&a,&b);
max=a;
if (max<b) max=b;
printf("max=%d\n",max);
return 0;
}


2、if……else形式
一般格式:
if(表达式) 
语句1;
else 
语句2;


语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。语句1和语句2可以是复合语句。
示例如下:

#include <stdio.h>
int main(){
int a, b;
printf("input two numbers: ");
scanf("%d%d",&a,&b);
if(a>b)
printf("max=%d\n",a);
else
printf("max=%d\n",b);
return 0;
}

3、if……else……if形式
一般形式为:
if(表达式1)
语句1;
else if(表达式2) 
语句2;
else if(表达式3) 
语句3;
… 
else if(表达式m) 
语句m;
else
语句n;
语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。示例如下:

#include <stdio.h>
int main(){
char c;
printf("input a character: ");
c=getchar();
if(c<32)
printf("This is a control character\n");
else if(c>='0'&&c<='9')
printf("This is a digit\n");
else if(c>='A'&&c<='Z')
printf("This is a capital letter\n");
else if(c>='a'&&c<='z')
printf("This is a small letter\n");
else
printf("This is an other character\n");
return 0;
}

4、扩展形式
if条件控制语句的形式是多种多样的。比如if嵌套、if……if类似的形式,但是都离不开上面介绍的三种基本形式。 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-04

两处错误

    if(b='+')   该用==号

    if(b='+')
      d=a+c;
      printf("结果:%f\n",d);该用大括号括起来

    if(b='+')
      {d=a+c;
      printf("结果:%f\n",d);}

第2个回答  2013-08-04
#include<stdio.h>
void main()
{
char b;
double a,c,d;
scanf("%lf%c%lf",&a,&b,&c);
if(b=='+'){ d=a+c;
printf("结果:%f\n",d);}
if(b=='-'){ d=a-c;
printf("结果:%f\n",d);}
if(b=='*'){ d=a*c;
printf("结果:%f\n",d);}
if(b=='/'){ d=a/c;
printf("结果:%f\n",d);}
}

你贴过去,应该符合你的要求,当然用case语句也是可以的,但可能你不知道原来错在什么地方,,错误共有两类,“=”与“==”,还有缺少了花括号,有问题再问。本回答被提问者采纳
第3个回答  2013-08-04
这种情况直接用case语句!

#include<stdio.h>
void main()
{
char b;
double a,c,d;
scanf("%lf%c%lf",&a,&b,&c);
switch(b){
case '+':
d=a+c;
printf("结果:%f\n",d);
break;
case('-'):
d=a-c;
printf("结果:%f\n",d);
break;
case('*'):
d=a*c;
printf("结果:%f\n",d);
break;
case('/'):
d=a/c;
printf("结果:%f\n",d);
break;
}
}
第4个回答  2013-08-04
你的程序可以通过switch ...case语句来完成。

#include<stdio.h>
void main()
{
char b;
double a,c,d;
scanf("%lf%c%lf",&a,&b,&c);
switch(b)
{
case '+':
d=a+c;
printf("结果:%f\n",d);
break;

case '-':
d=a-c;
printf("结果:%f\n",d);
break;

case '*':
d=a*c;
printf("结果:%f\n",d);
break;

case '/':
d=a/c;
printf("结果:%f\n",d);
break;

}
}