C语言用函数模拟四则运算,实现四则运算C语言

用C语言做一个四则运算

#includestdio.h

成都创新互联成立于2013年,我们提供高端网站建设成都网站制作成都网站设计公司、网站定制、营销型网站微信平台小程序开发、微信公众号开发、seo优化服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为展览展示企业提供源源不断的流量和订单咨询。

#includemath.h

#includestdlib.h

#includetime.h

int moshi;

int count;

void plus(int first,int second)

{

int result;

printf("%d + %d =",first,second);

scanf("%d",result);

if(result == first+second)

{

printf("Right!\n");

}

else

{

printf("wrong!\nThe correct answer is:%d\n",first+second);

}

}

void minus(int first,int second)

{

int result;

printf("%d - %d =",first,second);

scanf("%d",result);

if(result == first-second)

{

printf("Right!\n");

}

else

{

printf("wrong!\nThe correct answer is:%d\n",first+second);

}}

void multiply(int first,int second)

{

int result; //运算结果

printf("%d * %d =",first,second);

scanf("%d",result);

if(result == first*second)

{

printf("Right!\n");

}

else

{

printf("wrong!\nThe correct answer is:%d\n",first*second);

}

}

void divide(int first,int second)

{

float result; //运算结果

float temp;

second = rand()%100;

printf("%d / %d =",first,second);

if(second==0)

{

printf("Error!\n");

return;

}

scanf("%f",result);

temp=result*100 - ((float)first/(float)second)*100;

if(abs(temp)0.01)

{

printf("Right!\n");

}

else

{

printf("wrong!\nThe correct answer is:%f\n",(float)first/(float)second);

}

}

int main()

{

printf("小提示:\n每种模式默认运行5次就得重新选择,中途退出直接按Ctrl+c!\n");

p: printf("请选择模式:\n\n");

printf("----------1:练习模式\n");

printf("----------2:计算模式\n");

count=0;

scanf("%d",moshi);

switch(moshi)

{

case 1:

{ int n;

int first,second;//保存两个运算的数字

while(true)

{

n=first%4; //除以4取余数,随机确定调用函数

srand(time(NULL));

first = rand()%100;

second = rand()%100;

if(count==5)

goto p;

switch(n)

{

case 0:

{

plus(first,second);

count++;

break;

}

case 1:

{

minus(first,second);

count++;

break;

}

case 2:

{

multiply(first,second);

count++;

break;

}

case 3:

{

divide(first,second);

count++;

break;

}

default:

{

count++;

break;

}

}//switch

}//while

}//case1

case 2:

{

int first,second;

char c,c1; //保存运算符

while(true)

{

scanf("%d%c%d%c",first,c,second,c1);

if(count==5)

goto p;

switch(c)

{

case '+':

{

printf("%d+%d=%d\n",first,second,first+second);

count++;

break;

}

case '-':

{

printf("%d-%d=%d\n",first,second,first-second);

count++;

break;

}

case '*':

{

printf("%d*%d=%d\n",first,second,first*second);

count++;

break;

}

case '/':

{

printf("%d/%d=%f\n",first,second,(float)first/(float)second);

count++;

break;

}

default:

{

count++;

break;

}

}//switch

}//while

}//case2

default:

{

break;

}

}

return 0;

}

如何使用c语言实现四则运算,详细思路很重要啊(越详细越好~),可以木有代码(急)

1.判断四则运算字符串的括号是否匹配,可以用以个栈来计算,开始栈是空,从头遍历所有字符,找到'(',压栈,找到')'弹出一个元素,遍历完成以后如果栈是空表示正常,非空,或则中间出现问题都表示括号不正常。

2.分解四则运算中的所有元素,把所有分解的元素放在队列中,遍历整个字符串,有switch分支,如果是0-9的字符用一个字符串存储并和前面的字符组合起来,如果是'+''-''*''/'就把前面存储数字的字符串当成一个元素放进队列,并把当前运算法符当成一个元素也放进队列,遍历完成以后所有的数据和运算符都分开了,比如234+456,会分解成234,+,456三个元素。

3.然后分解队列,用两个栈,一个存放所有元素用A表示,一个存放运算符号用B表示(这个是临时变量),从头开始遍历整个队列,如果是数据就把数据压到A栈。如果元素是运算符就分开处理,如果是'(''+''-''*''/'')'处理方法都不一样,详细说明太复杂,整体的思想就是把数据和运算符的顺序排列好(上面的元素排列以后变成234,456,+;可以参考后序排列)。

4.计算:依次弹出A中的元素,如果是数据把数据压在栈C中,如果是运算符,从C中弹出该运算符需要的数据,然后把计算结果再次压进栈C,当A遍历完以后,C顶元素就是计算结果。

整个大题思路:1.检查,2.分解,3.中序排列,4.后序排列,5.计算

C语言怎么实现任意两个数的四则运算?

C语言实现任意两个数的四则运算的方法:

1、阅读代码,使用了随机函数:srand(unsigned( time(NULL)));通过调用随机函数,将生成的100以内的随机整数赋给不同的变量,一部分用于四则运算式数据的来源,而赋给变量c的随机数则用于结合switch语句控制程序跳转执行 不同的分支,即不同的四则运算,如下:   

c = rand() % 5;    //随机产生小于5的非负整数

switch (c)

case 0:

case 1:

...........

case 5:

2、使用while语句控制除数不为0

while (b == 0)

{

b = rand() % 1; //若b=0则重新生成b,直到b不为0

}

3、使用if语句判断减数与被减数的大小。

if (a b) //使ab

{

d = a;

a = b;

b = d;

}

if (m n) //使mn

{

d = m;

m = n;

n = d;

}

通过if判断并赋值的手段保证结果不出现负数

4、 原代码仅能一次性生成20个随机的四则运算式,而无法从键盘输入结果并判断答案正确与否。

5、修改代码。由于原代码无法从键盘读入数据,所以对其进行了改进。

(1)增加键盘读入功能

scanf("%d",x);

从键盘读入输入的答案

(2)对答案进行正确与否的判断                 

if(x == (a+b))

printf("You are right!\n");

else

printf("You are wrong!\n");

通过比较输入答案与运算得出的答案告知用户计算是否正确。

6、上传源代码至GitHub。

网站标题:C语言用函数模拟四则运算,实现四则运算C语言
URL分享:https://www.cdcxhl.com/article46/hdiehg.html

成都网站建设公司_创新互联,为您提供域名注册网站制作网站内链标签优化响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设