C语言编程 键盘输入一个含有括号的四则运算表达式,实现功能如下:①输出后缀表达式—即逆波兰;②将

作者&投稿:蓬凌 (若有异议请与网页底部的电邮联系)
实现带有括号的四则运算。输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。~

整体感知

整数、小数、分数的四则运算意义和法则分散在一至六年级,本课是对这些知识进行整理和复习,通过整理和复习,进一步认请四则运算意义和法则的本质,在复习中把知识条理化,在整理中形成比较完整知识结构。

由于本课涉及的意义和法则的内容均是旧知识,在本课教学中力戒重复旧知,而把重点应放在知识整理,运用归类,比较等方法,达到最佳效果,难点是对四则运算法则本质特点的高度概括。

针对本课意义、法则、文字,表述内容较多,整理和复习时要多学一些典型实例,通过具体实例来整理复习意义和法则,既能减轻不必要的思维难度,又能使学生在具体生动的环境中探索知识的奥秘。

另外,整理复习课不同于其它新授课的课堂结构,往往是复习和整理浑然一体,在复习的同时整理,在整理中加深和提高。

教学内容:教材P90、91、92,练习二十1—6题。

素质教育目标

(一)知识教学点

1.归纳整理四则运算的意义。



2.归纳整理整数、小数、分数计算法则的异同点,进一步总结计算时应遵循的一般规律。

3.总结四则运算中的一些特殊情况。

4.总结验算方法。

(二)能力训练点

1.培养学生对学过的知识进行归类整理能力,比较异同能力,形成知识结构能力。

2.运用法则熟练、灵活的计算能力,提高计算的准确率和速度。

(三)德育渗透点

引导学生探索知识间的内在联系,认识事物本质。

教学重点:整理四则运算的意义,整理四则计算法则。

教学难点:对四则计算算理本质规律的认识和理解。

教具学具准备:小黑板、幻灯片。

教学步骤

一、复习旧知识,归纳知识结构

1.四则运算的意义。

(1)举例说明四则运算的意义

根据下面算式,说一说它们表示的四则运算意义:

[用具体实例说明四则意义,不仅避免死记硬背,而且还能唤起学生记忆,使知识掌握的更牢固]

(2)观察表格。

请同学观察课本90页表格,看一看,整数、小数、分数的哪则意义相同?哪则意义有扩展?学生回答。

(整数、小数、分数的加法意义相同,减法意义相同,除法意义相同,只有乘法意义在小数和分数中有所扩展)

(3)你能用图示的形式表示出四则意义之间的关系吗?

学生表示为:




[通过看表格,指出知识的异同点,通过画图式,弄清知识间相互联系,从而使学生对同一层面的相关知识,有了更深的纵向认识,弄清了横向关系,形成了知识网络。]

2.四则运算的法则。

(1)加法和减法的法则。

①出示三道题,请分析错误原因并改正。



学生回答,它们的错误分别是:数位没有对齐,小数点没有对齐,没有通分。

②三条法则分别是怎样要求的?(相同数位对齐,小数点对齐,分母相同时才能直接相加减)。

三条法则的要求反映了一条什么样的共同的规律?能用一句话概括吗?(相同单位上的数才能相加或相减。)

[学生进入高年级,要不断培养学生从现象到本质,从个别到一般的辩证思维能力,不断加以总结和概括,逐步认识事物的本质属性。]

(2)乘法和除法的法则。

①出示两道题:



对照上面两题,口述整数乘法和除法的计算法则。

再把上面两道题改编成小数乘除法计算:1.42×2.3、4.182÷1.23让学生在整数计算的结果上确定小数点的位置。

②通过上面计算,你发现小数乘法和除法与整数乘法和除法有什么相似的地方?

(小数乘法先按整数乘法法则计算,小数除法把除数转化成整数后,也按整数除法法则计算。)

有什么不同,(小数乘、除法还要在计算结果上确定小数点的位置。)



说一说分数乘法和除法的法则。

分数乘法和除法比较又有什么相似和不同?(相似点是分数除法要转化成分数乘法计算;不同点是分数除法转化后乘以的是除法的倒数。)

3.口算

(1)计算后说一说各题计算时需要注意什么?

73.06-3.96 (差的百分位是0,可以不写)

37.5×1.03 (积是三位小数)

8.7÷0.3 (商是整数)

3.13÷15 (得数保留三位小数)



(要除到小数点后第四位)

[本套教材十分重视口算能力的培养,总结口算中容易出错的情况,有利于提高口算正确率]

(2)完成课本92页的口算,教师用秒表计时。

4.法则中的特殊情况。

(1)先把结果填在课本92页上。

(2)请同学们根据a与0的运算,a与1的运算和a与a的运算分类。学生分类后如下:

第一组:a+0=a a-0=a a×0=0 0÷a=0



第三组:a-a=0 a÷a=1

5.验算。

(1)根据四则运算的关系,完成课本92页的等式。

(2)根据这些关系,说一说对加、减法或乘、除法的计算进行验算的一般方法。

(加法可用减法验算;减法可以用加法或减法验算;乘法可以用除法验算;除法可以用乘法或除法验算。)

(3)完成课本92页的做一做第2题。

二、综合练习

1.练习二十第一题。让学生说出计算根据,复习积的变化规律和商不变的性质。

2.课本95页第二题。让学生总结一个非零的数乘以比1小的数或比1大的数后积的变化规律。

3.课本95页第三题。让学生口述出一个数除以小数转化成除以一个分数,再转化成乘以一个整数的口算过程。

4.课本95页第五题。

三、全课小结:这节课我们对四则运算的意义和法则进行了整理和复习,总结了在四则运算中的一些特殊情况及注意的问题,希望同学们在计算时一定要细心、认真,养成自觉验算的好习惯。

四、课堂作业课本95页第四、六两题。

五、板书设计


四则运算的意义和法则




要把相同单位上的数相加或相减。

小数乘除法与整数乘除法比较,要在积或商上确定小数点的位置。

口算应注意的问题

四则运算中的一些特殊情况

好的,,四则运算c语言课程设计我给你做..

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define maxsize 50
void trans(char str[],char exp[])/*将算术表达式str转换成后缀表达式exp*/
{
struct
{ char data[maxsize]; /*存放运算符*/
int top; /*栈指针*/
}opr; /*定义运算符栈*/
char ch;
int i=0,t=0; /*t作为exp的下标,i作为str的下标*/
opr.top=-1; /*初始化设定top的值为负一*/
ch=str[i];i++; /*逐个读取字符串中的字符*/
while (ch!='\0') /*str表达式未扫描完时循环*/
{ switch(ch) /*判定*/
{
case '(':
opr.top++;opr.data[opr.top]=ch; /*判定为'('号,则将其入栈opr*/
break;
case ')':
while (opr.data[opr.top]!='(') /*判定为')'号*/
{ exp[t]=opr.data[opr.top]; /*将栈opr中'('以后的字符依次删除并存入数组exp中*/
opr.top--;
t++;
}
opr.top--; /*将左括号删除*/
break;
case '+': /*判定为加号或减号*/
case '-':
while (opr.top!=-1 &&opr.data[opr.top]!='(')
{ exp[t]=opr.data[opr.top]; /*将当前栈opr中(以前的所有字符依次删除并存入数组exp中*/
opr.top--;
t++;
}
opr.top++;opr.data[opr.top]=ch; /*将ch存入栈opr中*/
break;
case '*':
case '/':
while (opr.data[opr.top]=='*'||opr.data[opr.top]=='/'||opr.data[opr.top]=='^')
{ exp[t]=opr.data[opr.top]; /*将当前栈opr中连续的'*'或'/'或'^'依次删除并存入数组exp中*/
opr.top--;
t++;
}
opr.top++;opr.data[opr.top]=ch; /*将ch存入栈opr中*/
break;
case '^': /*判定为乘方号*/
while (opr.data[opr.top]=='^')
{ exp[t]=opr.data[opr.top]; /*将当前栈opr中连续的'^'依次删除并存入数组exp中*/
opr.top--;
t++;
}
opr.top++;opr.data[opr.top]=ch; /*将ch存入栈opr中*/
break;
case ' ': break; /*过滤掉空格*/
default:
while(ch>='0'&& ch<='9'||ch=='.') /*判定为数字*/
{ exp[t]=ch;t++; /*将后续数字依次存入数组中*/
ch=str[i];i++;
}
i--;
exp[t]='#';t++; /*用#标示一个数值串结束*/
}
ch=str[i];i++;
}
while (opr.top!=-1) /*此时str扫描完毕,栈不空时循环*/
{ exp[t]=opr.data[opr.top];
t++;opr.top--;
}
exp[t]='\0'; /*给exp表达式添加结束标示*/
}
float compvalue(char exp[]) /*计算后缀表达式的值*/
{
struct
{ float data[maxsize]; /*存放数值*/
int top; /*栈指针*/
} st; /*定义数值栈*/
float d,d2;double po;
char ch;
int t=0,flag=1,i,count; /*t作为exp的下标*/
st.top=-1;
ch=exp[t];t++;
while (ch!='\0') /*exp字符串为扫描完时循环*/
{ switch(ch)
{
case '+':st.data[st.top-1]=st.data[st.top-1]+st.data[st.top]; /*执行两次退栈,并将计算结果入栈*/
st.top--;break;
case '-':st.data[st.top-1]=st.data[st.top-1]-st.data[st.top];
st.top--;break;
case '*':st.data[st.top-1]=st.data[st.top-1]*st.data[st.top];
st.top--;break;
case '/':
if(st.data[st.top]!=0)
st.data[st.top-1]=st.data[st.top-1]/st.data[st.top];
else
{ printf("\n除零错误!\n");
exit(0); /*除数为零,异常退出*/
}
st.top--;break;
case '^':
po=pow(st.data[st.top-1],st.data[st.top]); st.data[st.top-1]=(float)po;/*调用pow子函数进行乘方运算*/
st.top--;break;
default:
d=0; flag=1; d2=0; /*将数字字符转换成对应的数值存放到d中*/
while(ch>='0'&&ch<='9'&&flag) /*判定为数字字符*/
{ d=10*d+ch-'0';
ch=exp[t];t++;
if(ch=='.')
flag=0;

}
if(flag==0)
{ ch=exp[t];t++;count=0;
while(ch>='0'&&ch<='9') /*判定为数字字符*/
{d2=10*d2+ch-'0';
ch=exp[t];t++;count++;
}
for(i=1;i<=count;i++)
d2=0.1*d2;
}
d+=d2;
st.top++;
st.data[st.top]=d;
}
ch=exp[t];t++;
}
return st.data[st.top];
}
int main()
{
char str[maxsize],exp[maxsize]; /*str存储原算术表达式,exp存储对应的后缀表达式*/
printf("the arithmetic expression is:\n");
gets(str);
trans(str,exp);
printf("the postfix expression is:%s\n",exp);
printf("the result is %g\n",compvalue(exp));
}


安平县15823114382: 输入一个带有括号的四则运算表达式,编程计算其结果. 例如:输入:123+213 - 67*34+345/23*45*(34+34 - 345+245+567) 程序计算得出结果为:359183 如何用c语言编写 ?希望能简单有详细的解释,本人水平不高. -
父春沐欣: #include "iostream.h" #define TRUE 1 #define FALSE 0 #define ERROR -1 typedef int Status; //用模板实现的链式结构堆栈类 template <class T> class stack{private:struct link{T data; //结点数据域link *next; //下一结点指针link(T Data,...

安平县15823114382: c语言中成对的括号该怎么打 -
父春沐欣: 这是习惯问题一般是先成对的输入匹配的括号,然后再输入正文其实这是一个良好的习惯,避免由于括号不匹配造成的错误,值得一提的是,虽然这些错误一般是显式的,但是这么做话,可以帮助coder理清代码的层次,逻辑另外,所谓的输入速度根本不是问题,对于coder来说,打字就是本能;另外一些编辑器会自动的进行括号匹配,也就是说只要打前括号,就会出现后括号,并且将光标退回正文区域的

安平县15823114382: 急求!!C语言编程,键盘输入,一个字符串,在每个字符间插入逗号输出 -
父春沐欣: #include <stdio.h> #include <string.h> void main() { int i,k; char str[1000]; scanf("%s",str);//楼上这里错了,gets(str)不能这么用 k=strlen(str); for(i=0;i<k-1;i++) printf("%c,",str[i]); printf("%c",str[k-1]); }

安平县15823114382: 输入包含加减乖除和括号的合法表达,求值c语言 -
父春沐欣: 类似于计算器,可计算小数,输出结果保存小数点后两位:#include#include#include#include using namespace std; const int maxn=1000+10; char a[maxn]; char judge(char a,char b) { if(a=='+'||a=='-') { if(b=='*'||b=='/'||b=='(') return ' return '>'; } if(a=='...

安平县15823114382: 二级C编程如何同时输入一对括号 -
父春沐欣: 任何编辑工具均不能同时输入一对括号.在编程中,为了防止出现括号不配对的情况,往往采用如下方式:1 当需要输入左括号时,直接同时输入右括号.由于各种括号在键盘上都是相邻的,所以这一输入是很快的.2 通过方向键左移一位,使光标定义在两个括号中间.3 输入括号内其它内容.该方法适用于(),{},[]以及.

安平县15823114382: 用C语言编写带括号的四则运算 -
父春沐欣: #include <stdio.h> #include "windows.h" main() { char Exp[1024]={0},Oper[100]={0}; int Num[200]={0},Expi=0,Operi=0,Numi=0; boolean isnum=FALSE; printf("input a Expression:"); scanf("%s",Exp); while(Exp[Expi]!='\0') { switch(Exp[Expi]) ...

安平县15823114382: C语言程序设计:实现带有括号的四则运算 -
父春沐欣: 呵呵.不知道你是否过关了.我是才看到.我写了个c++版本的.stack_h文件 #ifndef STACK_H#define STACK_H#define STACK_INIT_SIZE 100#include<iostream> using namespace std; template <class type> class stack { public: stack(int = ...

安平县15823114382: c语言做:输入一个只包含加减乘除和括号的合法表达式,求表达式的值.其中除表示整除. -
父春沐欣: 数据结构(C语言版) 肖宏启编 98页 完整的程序 和思想 可以看 望采纳

安平县15823114382: 用c语言编程实现整型数的四则( +, - , *, / )运算,其中可以含小括号,且内括号处理的优先级高于外括号. -
父春沐欣: 我有几个版本:#include<stdio.h>#include<string.h>#include<math.h>#define maxn 10001 struct NumStack { double stack[maxn]; int top; } numstack; struct OpStack { char stack[maxn]; int top; } opstack; char rpn[maxn]; int GetLevel(char op) { if(op=...

安平县15823114382: c程序设计中的括号匹配 问题描述 1.设某一算术表达式中包含圆括号、方括号和花括号三种类型的括号,编 -
父春沐欣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50#include <iostream> #include <string> #include <stack>boolmatch(conststd::string & s);intmain() ...

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