求大神解答C语言问题,要原创的,万分感谢!!

设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1 运算符op 操作数2
计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。
功能要求:
(1)程序能进行浮点数的算术运算。除法要对分母为0的情况给出警告及避免。
(2)要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空白符。
(3)要求可以连续做多次算术运算,每次运算结束后,程序都给出提示:
Do you want to continue(Y/N or y/n)?
用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。
[提示:可利用空格加%c(或者%1s)格式符输入用户回答,可利用do-while语句实现反复运算直到用户输入N或n。]

#include<stdio.h>
#include<stdlib.h>
int main()
{
float a,b;
int yunsuanfu;
printf("请输入要计算的2个操作数:\n");
scanf("%f",&a);
scanf("%f",&b);
printf("运算的类型有:\n");
printf("\t\t1+\n");
printf("\t\t2-\n");
printf("\t\t3*\n");
printf("\t\t4/\n");
printf("请输出你要的运算类型:\n");
scanf("%d",&yunsuanfu);
float c1=a+b;
float c2=a-b;
float c3=a*b;
float c4=a/b;
for(int i=0;i<40;i++)
printf("-");
printf("/n");
switch(yunsuanfu)
{
case 1: printf("%f\n",c1); break;
case 2: printf("%f\n",c2); break;
case 3: printf("%f\n",c3); break;
case 4:
if (b==0)
printf("除数不能为0\n");
else printf("%f\n",c4); break;
}
return 0;追问

大神,能讲一下这题的思路么?

追答

定义 a,b为浮点数方便运算,定义整形变量yunsuanfu,也就是运算符,方便switch的表达式的判断,这样实现了运算的2数和运算符,然后浮点变量定义c1,c2,c3,c4为加减乘除运算法则,
当输入了&a,&b,&yunsuanf后。我们来看switch,当yunsuanf=1,case1就直接输出了加法法则,依次类推,当case为4的时候,首先判断除数是否为0,也就是操作数2,如果为0则退出,如果不是则运算除法法则

追问

为什么编译失败了? 

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-24
#include <stdio.h>
#include <ctype.h>

int main()
{
double operand1,operand2;
char op,ch='n';

scanf("%lf",&operand1);

do{
for(op=getchar();isspace(op);op=getchar())
;
scanf("%lf",&operand2);
switch(op){
case '+':operand1+=operand2;break;
case '-':operand1-=operand2;break;
case '*':operand1*=operand2;break;
case '/':while(!operand2){
printf("error:attemped to devide by zero,please input again");
scanf("%lf",&operand2);
}
operand1/=operand2;break;
}
printf("%lf\n",operand1);
printf("Do you want to continue(Y/N or y/n)?\n");
for(ch=getchar();isspace(ch);ch=getchar())
;
}while(!(ch-'Y')&&!(ch-'y'));
return 0;
}

简单的C语言程序编写问题!求大神解答!!!万分感谢
for循环判断是否存在数组中元素与查找数字相等,存在输出Yes退出循环。如果遍历完数组i=10表示未找到输出No include "stdafx.h"include <iostream> using namespace std;int main(){ int num[10],x,i;cout << "请输入10个整数:" << endl;for (i = 0; i < 10; i++)cin >> num[i];c...

求教C语言大神!!!最好讲一下理由,万分感谢
结果是cbade 原因如下:首先,主函数只进行了一个fun操作,其他的就是定义和输出,所以字符串(或者说字符数组)的调整完全由fun决定 fun中首先定义了x和y,因为s的长度是5,所以y = (strlen(s) - 1) \/ 2=(5-1)\/2=2 因此:循环开始时,初始值是x=0,y=2,s="abcde",进入循环 第一次...

C语言程序设计,求答案。万分感谢!
第一题的:include<stdio.h> int main(){ char c;scanf("%c",&c);if('a'<=c&&c<='z')printf("%c\\n",char(c-32));else if('A'<=c&&c<='Z')printf("%c\\n",char(c+32));else printf("what you input is not a letter! ");return 0;} 第二题的:include<stdio.h> ...

C语言作业,万分感激!!!
float fun(float x){ if(x<200)return x;else if(x>=200&&x<500)return 0.8*x;else if(x>=500)return 0.6*x;}

关于c语言程序设计的问题求大神帮忙!万分感谢!
(2)编译(成目标程序文件.obj)编译是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析、语法分析、语义检查和中间代码生成、代码优化、目标代码生成。主要是进行词法分析和语法分析,...

一个c语言问题,万分感谢
您好,很高兴能为您解决问题。这儿得跟您说一声了。宏有个特性:他在用的时候C语言会直接把宏的名称替换成宏对应的值。外面不会加括号。所以v = LENGTH * 20是这样的:v = WIDTH + 40 * 20,进一步替换就是这样的:v = 80 + 40 * 20,那么直接算出80+40*20的值即可:= 80 + 800 = ...

刚刚学习C语言,各位高手帮帮写写.万分感谢。 1、写两个表达式,分别取整 ...
include<stdio.h> void main(){ int x,a,b;scanf("%d",&x);a=x%10;b=x%100\/10;printf("各位数a=%d 十位数b=%d\\n",a,b);}

一道C语言问题,请详细说明一下运算过程,万分感谢。
4,3,2,1. 难理解的是static int t = 3; 这个变量只初始化一次,因为是静态变量所以数据在堆区,当fun结束后不会被释放,下次继续可以使用这个变量,且值是上次使用后的,当j=0时,t=3,*y=x[3];当j=1时,t=2,*y=x[2];以此类推,当然fun的传参不够安全,很容易数组越界 ...

关于c语言程序设计的问题求大神帮忙!万分感谢!
void main(){ float a,b,c;float s,temp;printf("请依次输入三角形的三边:");scanf("%f%f%f",&a,&b,&c);if(((a+b)>c)&&((a+c)>b)&&((b+c)>a)&&((a-b)<c)&&((a-c)<b)&&((b-c)

C语言编程题求解!求大神助!在线等!
int main(void) { char *s = "***";for (int i = 7; i >= 4; i--)printf("%*s\\n", i, s);return 0;} include <stdio.h> int main(void) { for (int n = 0; n < 4; n++) { for (int i = 0; i < n; i++)putchar(' ');for (int i = 0; i < 7 ...

相似回答