c++ c语言 简单的四则运算

c++ c语言 简单的四则运算
c++ c语言 简单的四则运算

C++编写的简单计算器,能执行简单的四则运算

文档时copy过来的!只为方便大家

#include

using namespace std;

class calculator

{

public:

char token;

int exp( void );

int term( void );

int factor( void );

void match( char expectedToken );

void error( void );

};

int calculator::exp(void)

{

int temp = term(); /*计算比加减运算优先级别高的部分*/

while (( token == '+' ) || ( token == '-' ))

switch ( token )

{

case '+':

match('+'); /*加法*/

temp += term();

break;

case '-':

match('-');

temp -= term(); /*减法*/

break;

}

return temp;

}

int calculator::term( void )

{

int div; /*除数*/

int temp = factor(); /*计算比乘除运算优先级别高的部分*/ while (( token == '*' ) || ( token == '/' ))

switch ( token )

{

case '*':

match('*'); /*乘法*/

temp *= factor();

break;

case '/':

match('/'); /*除法*/

div = factor();

if ( div == 0 ) /*需要判断除数是否为0*/

{

fprintf(stderr, "除数为0.\n" );

exit(1);

}

temp /= div;

break;

}

return temp;

}

int calculator::factor( void )

{

int temp;

if ( token == '(' ) /*带有括号的运算*/

{

match( '(' );

temp = exp();

match(')');

}

else if ( isalnum(token)) //实际的数字

{

ungetc( token, stdin ); //将读入的字符退还给输入流

scanf( "%d", &temp ); //读出数字

token = getchar(); //读出当前的标志

}

else error(); //不是括号也不是数字

return temp;

}

void calculator::match( char expectedToken ) //对当前的标志进行匹配

{

if ( token == expectedToken ) token = getchar(); //匹配成功,获取下一个标志 else error(); //匹配不成功,报告错误

}

void calculator::error( void ) //报告出错信息的函数

{

cout<< "输入有错误"<

exit( 1 );

}

int main ()

{

cout<<"================================================================\n"; cout<<"* 递归实现的四则运算表达式求值程序 *\n"; cout<<"****************************************************************\n"; cout<<"使用方法:请从键盘上直接输入表达式,以回车键结束.如45*(12-2)[回车]\n";

cout<<"*****************************************************************\n\n"; int result; //运算的结果

cout<<"请输入表达式: ";

calculator c1;

c1.token = getchar(); //载入第一个符号

result = c1.exp(); //进行计算

if ( c1.token == '\n' ) // 是否一行结束

cout<< " >> 表达式的计算结果为 : "<

else c1.error(); //出现了例外的字符

return 0;

}

四年级数下册四则运算测试题

第二周周测:第一单元综合测试 班别:姓名: 一、口算。(9分) 42÷6+43 = 9×8÷12 = 125-5×5 = 54-18+9 = 48÷6×5 = 36×0+64 = 0÷12÷6 = 35÷7×16 = 17+0÷17 = 二、填空。(22分) 1、被减数等于减数,差等于(),一个数加上(),还得原数;一个数和0相乘,得(); 0除以一个()的数,还得0;()不能作除数。 2、( )法、( )法、( )法和( )法统称四则运算。 3、.在一个算式里只有加、减法或只有乘除法的运算,应( )按顺序计算,既有加法又有乘除法的运算应先算( ),再算( ),有括号的要先算( )里面的,再算( )外面的。 4、除数=() 5、在计算147+(251-51)时,第一步要先算(),再算()。 6、小明6分钟跑300米,照这样的速度填写下表: 三、选择(6分) 1.计算24+24÷24 ×24,应先算( )。 A.加法B.除法C.乘法 2.(7—7÷7) ×7的计算结果是( )。 A.0 B.42 C.49 3.120+240÷240—120○(120+240)÷(240—120)填( )。 A.> B.< C.= 四、先想一想下面各题的运算顺序,然后计算。(24分) 250×4-560÷7 5847-4×(470+530)35×8+350÷50

195-(45+45÷9)43×(324-298)(79+21)×(96÷12) 五、列式计算。(9分) 1、45与15的商,再加上84与12的商,和是多少? 2、78与42的和,除以5,商是多少? 3、12与15的积,减去540除以9的商,差是多少? 六、应用题。(30分) 1、学校食堂买来大米970千克,吃了3天,还剩430千克。平均每天吃多少千克? 2、水果店运来苹果和梨各25箱。苹果每箱16千克,梨每箱20千克。一共运来水果多少千克? 3、前进路小学去年有学生1548人,六年级毕业离校263人,今年又招一

利用栈实现c语言计算器

栈的应用:C实现简单计算器(表达式的计算) 作为栈的著名应用,表达式的计算可以用下面方法实现: 首先建立两个栈,操作数栈NUM_S和运算符栈OPR_S。 其中,操作数栈用来存储表达式中的操作数;运算符栈用来存储表达式中的运算符。可以用字符‘=’来表示表达式结束符。 自左至右的扫描待处理的表达式,并假设当前扫描到的符号为W,根据不同的符号W 做如下不同的处理: 1.若W为操作数,则将W压入操作数栈NUM_S,且继续扫描下一个字符; 2.若W为运算符,则根据运算符的性质做相应的处理: (0)若符号栈为空,无条件入栈当前指针指向的字符 (1)若w为不大于运算符栈栈顶的运算符,则从操作数栈NUM_S中弹出两个操作数,设先后弹出的操作数为a、b,再从运算符栈 OPR_S中弹出一个运算符,比如为+,然后作运算a+b,并将运算结果压入操作数栈NUM_S。 (2)若w为左括号或者运算符的优先级大于运算符栈栈顶的运算符,则将运算符W 压入运算符栈OPR_S,并继续扫描下一个字符。 (3)若运算符W为右括号,循环操作(设先后弹出的操作数为a、b,再从运算符栈OPR_S中弹出一个运算符,比如为+,然后作运 算a+b, 并将运算结果压入操作数栈NUM_S),直到从运算符栈中弹出第一个左括号。 (4)若运算符W为表达式结束符‘=’,循环操作(设先后弹出的操作数为a、b,再从运算符栈OPR_S中弹出一个运算符,比如为 +,然后作运算a+b, 并将运算结果压入操作数栈NUM_S),直到运算符栈为空为止。此时,操作数栈栈顶元素即为表达式的 值。 ====================================================================== === 举例:计算3+(5-2*3)/4-2= (1)开始栈为空,3入栈,+入栈,(无条件入栈,5入栈,-号优先级比(高,所以-号入栈,2入栈,*优先级比目前栈顶的-号优先级高,所以*入栈,3入栈,接着扫描到)括号,)括号不入栈 | | | | --------- ---------- | 3 | | * | --------- ---------- | 2 | | - |

C语言四则运算测试程序设计报告

昆明理工大学 《计算机程序设计基础》课程 综合实践型教学课题报告 课题名称:100以内的整数四则运算测试程序设计 组长:学号 040401067 姓名周绍平 组员:学号 040401070 姓名邓磊 学号 040401106 姓名刘云路 学号姓名 学号姓名 学号姓名 学号姓名 学院:信自学院专业班级:自动化0421 指导教师:耿植林 昆明理工大学计算中心 2005 年 6月18日

昆明理工大学计算中心 《计算机程序设计基础》课程综合实践型教学课题报告课程名称:100以内的整数四则运算测试程序设计

正文内容: 一、问题描述 这是一个进行数学计算的程序,且要求拥有多种功能,包括(1)选项菜单集成各功能函数模块(2)出题(每次出10道题目)(3)答题并评分(4)答错的题给出正确答案(5)显示答卷。总体看来,大多数功能要求调用错题,所以面临的两个难题便是出题和保存答题者做错的题以便其它函数调用。另外,由于除法的特殊性——其除数不能为0。又因为这是一个用于100以内整数的四则运算的程序,又对除法这个特殊成员提出了新的要求——要使得到的结果为整数。所以有必要把除法单独拿出来作为一个函数处理。 二、问题分析 这是一个任务很明确的程序设计—用于100以内的整数的四则运算。这个程序要求拥有选项菜单、出题、答题评分、显示答卷、错题再解、重复练习的功能。既然是一个用于计算的程序那它的主要作用就是给练习者答题,并验证答题的正确与否。当然,还要有一些附加功能,比如:把答卷显示出来,错题给出正解,错题再抽出来再做。 这个程序只要求100以内的四则运算,所以随机出现的数字只能是100以内的,并且要求其为整数。不论是数据的输入与输出,都要求其为整数。 鉴于这个程序所要求达到的功能,我们小组决定把它分为计算、菜单、答卷、重做、正解、评价、除法七个函数模块。 对各成员的分工如下: 计算、正解和菜单(周绍平) 评价和除法(邓磊) 答卷和重做(刘云路) 主函数及各函数的连接则由小组成员共同完成。 三、程序设计思路功能模块说明 各函数流程图: 1、除法(chufa) 2、计算(jisuan)

小学生四则运算练习题

小学生四则运算练习题 2009-8-222:08 提 问者:无奈·童年 | 悬赏分:10 | 浏览次数:3376次 小学的,越简单越好! 提供的题多的话,我会追加积分的! 问题补充: 帅哥靓女们,小妹我着急用啊!帮个忙吧! 2009-8-222:23 满意回答 四年级数学第一元单元测试题 班级: 姓名: 学号: 一、口算. 150-90÷3=25×2×11=5×10+10= ×9= 1+81÷9= 0+100÷5=-12+8=0×3+50= ÷6= 0×2-73= 二、把下面每一组两个算式合并成为一个综合算式。 1.480÷8=60 100-60=40..21+24=42×45=1440. 3.493-73=42020÷6=70 .45÷5= 102-9=93 三、算一算。 42×15+13600-981÷9 ÷825×

392÷×78 36×450÷ 530+120-25064÷8+48 四、数学医院.把计算错的改过来。 1. 145-45÷5 =100÷5 =20 2. 13+27×25 =40×25 =1000 3. 300÷3×2 =300÷6 =50 五、列式计算。8分) 1.715比24与25的积多多少? 2.807是12与9的差的多少倍? 六、解决问题。 1.电影院有25排座位,每排有32个座位,现学校共759人到电影院看演出,还剩多少个座位?

2.电影院原来每天放3场电影,现在每天多放1场。平均每场卖98张票,现在每天可以卖多少张票? 3.四年级三个班去植树,一共要栽300棵树,已栽了180棵,剩下的分三次完成,平均每次栽多少棵树? 4.赵强家今年收苹果185千克,收的梨是苹果的2倍少45千克。他家收了梨多少千克?苹果和梨共多少千克? 5.怎样买票更合算? 成人:10元/张 儿童:7元/张 十人及以上团体票:8元/张 我们有6位大人,4位儿童。 急需小学四年级的简便运算和脱式运算试题 2011-7-111:53 提问者:詹泽西 | 悬赏分:| 浏览次数:1029次 推荐答案 2011-7-212:29 热心网友 7034044÷×3388=2)06+3504-5366515÷1855= 3)408-2595+1828×1514=4)003449÷×2850= 5) 1435+1431689÷901-1023=6) ÷1520-828= 7)912+×2362=8) ×341-272767=

C语言-四则运算

四则运算 姓名: 学号: 班级: 1.功能结构图 2.程序功能 进行整数的加减乘除和求模运算。程序采用随机产生1~100的两个数进行运算每种运算有10个题目用户输入对应的答案程序提示答案的对错最后统计正确率。每次给出两次答题机会。 3.程序流程图

4.函数列表及功能

5.源程序代码 #include #include #include #define N 10 int f(int a,int b) { //自定义函数int result; result=a+b; return result; } int f1(int a,int b) { int result; result=a-b; return result; } int f2(int a,int b) { int result; result=a*b; return result; } int f3(int a,int b) { int result; result=a*b/b; return result; } int mod(int a,int b) { int result; result=a%b; return result; } int main() { int a,b,res,ans; int i,count; int op,c; srand((unsigned)time(NULL)); while(1) {

printf("\n---加减乘除运算练习系统---\n"); printf("1.加法运算\n"); printf("2.减法运算\n"); printf("3.乘法运算\n"); printf("4.除法运算\n"); printf("5.求模运算\n"); printf("6.混合运算\n"); printf("0.退出练习\n"); printf(" 请输入数字0~6:"); scanf("%d",&op); //输入相应数字进行练习switch(op) { case 1:printf("--请进行加法运算--\n"); count=0; for(i=1;i<=N;i++) { a=rand()%100+1; b=rand()%100+1; res=f(a,b); //调用加法函数 printf("%d+%d=",a,b); scanf("%d",&ans); //输入数值 if(ans==res) { printf("Very Good!\n"); count++; } else { printf("wrong! 请重新输入\n"); scanf("%d",&ans); if(ans==res) printf("Very Good!\n"); else printf("Wrong Answer!\n"); } } printf("***正确率为%.0f%%***\n",100.0*count/N); break; case 2:printf("--请进行减法运算--\n"); count=0; for(i=1;i<=N;i++) { a=rand()%100+1; b=rand()%100+1;

小学数学第一单元四则运算测试(答案解析)

小学数学第一单元四则运算测试(答案解析) 一、选择题 1.验算876-448=428时,错误的方法是()。 A. 876-428=448 B. 448+428=876 C. 448-876=428 2.765-543=222,下列验算方法错误的是()。 A. 765+222 B. 765-222 C. 543+222 3.比5的3倍少4.8的数用式子表示是()。 A. 5×3+4.8 B. 5×(3+4.8) C. 5×3-4.8 4.计算完880-229=651之后,正确的验算方法为()。 A. 880+651 B. 229+651 C. 651-229 5.一道减法算式中被减数、减数和差的和是100,那么被减数是() A. 100 B. 200 C. 50 6.计第(68-26)÷6时,要先算() A. 26÷6 B. 68÷6 C. 68-26 7.47与33的和除以36与16的差,商是多少?正确列式是() A. 47+33÷36﹣16 B. (47+33)÷(36﹣16) C. (36﹣16)÷(47+33) 8.已知○+△=□,下列算式正确的是() A. ○+□=△ B. △+□=○ C. □﹣△=○ 9.15÷3=5,被除数是()。 A. 15 B. 3 C. 5 10.根据500-260=240,240÷5=48,48+12=60列成一个综合算式是( )。 A. (500-260÷5)+12 B. 500-260÷5+12 C. (500-260)÷5+12 11.把20﹣15=5、5×6=30这两个算式合并成一个综合算式正确的是() A. 20﹣15×6 B. 5×6﹣20 C. (20﹣15)×6 12.24+3×150÷6与24+3×(150÷6)的运算结果( )。 A. 相同 B. 不相同 C. 无法确定 二、填空题 13.把53+38=91,91÷7=13,130÷13=10这三个算式组成一个综合算式是________。14.由500÷125=4,4+404=408,804-408=396三个算式所组成的综合算式是________。15.根据四则运算各部分间的关系,写出另外两个算式。 183+86=269________ ________ 910÷13=70________ ________ 16.350÷7+15×8时,可以同时计算的是________法和________法. 17.(90﹣21×2)÷12,计算时要先算________.小括号里面有减法和乘法,要先算________.

C语言实验报告四则运算

《C语言》课内实验报告 学生姓名: 及学号: 学院: 班级: 课程名称:C语言 实验题目:实验二选择结构程序设计 指导教师 姓名及职称: 年月日

一、实验目的 1.掌握逻辑表达式和if语句、嵌套的if语句、switch语句和break语句的格式、语义。 2.掌握选择结构程序设计方法。 二、实验内容 编写程序实现两个数的四则运算,要求从键盘输入进行运算的两个数字以及相应的运算符('+'、'-'、'*'、'/'),程序给出算数表达式及运算结果。(如下图所示,要求使用if语句和switch语句两种方法实现) 三、实验结果 1、流程图

2、源程序 (1)使用if语句 #include void main() { float a,b; char c; printf("please input two numbers:"); scanf("%f%f",&a,&b); getchar(); printf("\nplease input the operator:"); //fflush(stdin); scanf("%c",&c); printf("\n"); if(c=='+') printf("%10.2f+%10.2f=%10.2f\n",a,b,a+b); else if (c=='-') printf("%10.2f-%10.2f=%10.2f\n",a,b,a-b); else if (c=='*') printf("%10.2f*%10.2f=%10.2f\n",a,b,a*b); else if (c=='/') printf("%10.2f/%10.2f=%10.2f\n",a,b,a/b); else printf("Input error!\n"); } (2)使用switch语句 #include void main() { float a,b; char c; printf("please input two numbers:"); scanf("%f%f",&a,&b); //输入a,b的值 getchar(); printf("\nplease input the operator:"); //输入操作符 scanf("%c",&c); printf("\n"); switch(c) //判断输入操作符 { case '+': //若操作符为'+',输出a+b printf("%10.2f+%10.2f=%10.2f\n",a,b,a+b); break;

小学生整数四则运算练习题500道

小学生整数四则运算练习题500道

264+159+47= 892-537+469= 763-386-363 = 72-70÷7-29= 75+28-56-8.5= 1.2×2.5×4= 900-473-227= 406+369+94= 683+258-383= 359+432-189= 28×4×25= 3.5×5+8×3.5= 81-81÷9= 460+177-177 = 698-245-155= 456+299+81= 25×0.32= 0.56×99+0.56= 542-128-272= 853+109-853= 63×7+540= 550+45×9= 95÷5×3= 78÷6×5= 838-(138+275)= 96×4+80= 120+800÷10= 57×8-406= 16×4÷8= 15×20÷60= 208+342+292= 803-589+111= 99×8 235+178+165= 605×3+7= 45×9-335= 1000-487-513= 8×37+460= 50×12÷30= 31×32÷4= 289+578-189= 329+332+171= 836+529-436= 207×8-987= 21×5÷5= 51÷3×4= 123+377×2= 1948+539-648= 406×7-669= 726+274×3 = 4176÷3÷2 = 1912×3÷4= 5614-(3000+614)= 12×14÷4=32÷16×15= 6024÷3÷4= 2800×5÷4 = 1089-

(400+311)= 328+16×2= 26×39÷6= 54÷9÷3= (100-36)÷4 = 718-75×3 = (187-24)×5 = 2335-74×8= 33÷3×9= 12×7÷2= 275×6÷3= 5×(399-214)= (582+6467)÷7 = 424×3×2= 14÷2×8= 28÷7÷2= 291×4×5= 555×7×4= 78×3÷9= 1005÷5÷3= 996÷6×2 = 34÷2= 15×7×13= 160×20= 16×13×15= 13×12= 12×15= 10×15= 256×7×5= 3645÷3÷5= 150×4÷10= (321-39)÷6 = 8.76+2.43+7.57= 328+172×6= 516-123+77= 347×4-192= 2762-(762-78)= 2.5×8+12.5×4= 6×25+75×6= 37×100-37 = 451+549÷3= 34+306×2= (0.25+2.5+25)×0.4= 720÷8-80= 1865-468-332= 4×38-12= 3689+498-689= 12.5+5×8×20 = 169+584+731= 345+255÷5= 257×4÷

c语言实现一.二叉树操作 二.用栈实现算术表达式求值 课设报告

目录 题目一.二叉树操作(1)二.算术表达式求 (1) 一、课程设计的目的 (1) 二、课程设计的内容和要求 (1) 三、题目一设计过程 (2) 四、题目二设计过程 (6) 五、设计总结 (17) 六、参考文献 (18)

题目一.二叉树操作(1)二.算术表达式求 一、课程设计的目的 本学期我们对《数据结构》这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求学生掌握《数据结构》中的各方面知识,还要求学生具备一定的C语言基础和编程能力。 (1)题目一的目的: 1、掌握二叉树的概念和性质 2、掌握二叉树的存储结构 3、掌握二叉树的基本操作 (2)题目二的目的: 1、掌握栈的顺序存储结构和链式存储结构 2、掌握栈的先进后出的特点 3、掌握栈的基本运算 二、课程设计的内容和要求 (1)题目一的内容和要求: 1、编写已知二叉树的先序、中序序列,恢复此二叉树的程序 2、编写求二叉树深度的程序 (2)题目二的内容和要求: 1、算术表达式由操作数、运算符和界限符组成。操作数是正整数,运算符为 加减乘除,界限符有左右括号和表达式起始 2、将一个表达式的中缀形式转化为相应的后缀形式 3、依据后缀表达式计算表达式的值

三、题目一设计过程 1、题目分析 现已知一棵二叉树的先序遍历序列和中序遍历序列,依次从先序遍历序列中取结点,由先序序列确定根结点(就是第一个字母),每次取出一个结点就与中序遍历的序列进行比较,当相等的时候,中序遍历序列就被分成以该结点为根的二叉树子树,该结点左部分为左子树,右部分为右子树,直到取完先序列里的所有结点,则二叉树构造完毕(树用链式存储结构存储),用递归实现! 由建好的二叉树,先判断这棵树是否为空,若不为空则找数的左子树,统计它的高度,然后找树的右子树,统计它的高度,比较左子树和右子树的高度,然后返回其中大的那个值加一,则求出数的高度。这里用递归实现! 2、算法描述 main ( )(主函数) 先构造一颗二叉树,初始化为空,用来存储所构造的二叉树,并输入一棵树的先序序列和中序序列,并统计这个序列的长度。然后调用实现功能的函数。 void CreateBiTree(BiTree *T,char *pre,char *in,int len)(由先序序列和中序序列构造二叉树) 根据前序遍历的特点, 知前序序列(pre)的首个元素(pre[0])为根(root), 然后在中序序列(in)中查找此根(pre[0]), 根据中序遍历特点, 知在查找到的根(root) 前边的序列为左子树, 后边的序列为右子树。设根前边有n个元素,则又有, 在前序序列中,紧跟着根(root)的n个元素序列(即pre[1...n]) 为左子树, 在后边的为右子树,而构造左子树问题其实跟构造整个二叉树问题一样,只是此时前序序列为pre[1...n]), 中序序列为in[0...n-1], 分别为原序列的子串, 构造右子树同样。这里用递归实现! int Depth(BiTree T)(求树的深度) 当所给的参数T是NULL时,返回0。说明这个树只有一个叶子节点深度为0,当所给的参数不是NULL时,函数调用自己看看这个参数的左分支是不是NULL,

C语言课程设计小学生四则运算

#include"stdio.h" #include"stdlib.h" void main() { int a,b,c,d,e,f,g,t; printf("****************************欢迎使用!************************\n"); printf("\n"); printf("1.加法运算\n"); printf("2.减法运算\n"); printf("3.乘法运算\n"); printf("4.除法运算\n"); printf("*****************************请选择运算类型:"); scanf("%d",&a); while(a<1||a>4) { printf("输入错误,请重新输入"); scanf("%d",&a); } if(a==1) { printf("5,一位数加一位数\n"); printf("6,一位数加两位数\n"); printf("7,两位数加两位数\n"); printf("*********************************请输入题型:"); scanf("%d",&a); while(a<5||a>7) { printf("输入错误,请重新输入"); scanf("%d",&a); } if(a==5) { loop:b=rand()%10; c=rand()%10; d=b+c; printf("%d+%d=?\n",b,c); printf("请输入答案:"); scanf("%d",&e); while(e!=d) { printf("回答错误,请重做"); printf("%d+%d=?\n",b,c); printf("请输入答案:"); scanf("%d",&e);

小学四年级四则运算练习题(分类练习)

计算下面各题,怎样简便就怎样计算。(24分) 49×102-2×49 125×76×8 8.33-2.43-4.57 103×32 6.7+ 2.63+4.3 41000÷8÷125 5824÷8×(85-78)840÷28+70×18 五、计算下面各题并且验算。(10分) 70×53= 8.53-2.6= 880÷16= 6.07+12.5= 口算题(每道小题 6分共 12分 ) 1. 89÷100= 0.82+0.08= 73×1= 0.63×10= 4÷10= 17÷1000= 2. 0.56+0.4= 1.25×100= 5.6+99= 100÷25= 1-0.93= 90-0.9= 三、简算题(每道小题 5分共 25分 ) 1. 794-198 2. 68×25 3. 6756-193-207 4. 72×125 5. 97×360+3×360

四、计算题( 5分 ) 428×(3080-1980)-742 五、文字叙述题(每道小题 5分共 10分 ) 1. 从978里减去126的5倍,差是多少? 2. 1560除以一个数商是26,求这个数? (列出含有未知数x的等式,再解出来.) 六、应用题(1-2每题 7分, 第3小题 8分, 共 22分) 1. 一个服装厂5天生产西服850套,照这样计算,一个月生产西服多少套?(一个月按30天计算) 2. 商店运来8筐苹果和12筐梨,每筐苹果38千克,每筐梨42千克,商店共运来水果多少千克? 3. 某工地需水泥240吨,用5辆汽车来运,每辆汽车每次运3吨,需运多少次才能运完?(用两种综合式解答) 口算题(每道小题 4分共 16分 ) 1. 0.1×100= 7.2÷10= 93÷100= 0.25×1000= 2. 159+61= 600÷20=

数据结构(C语言)栈的基本操作

实验名称栈的基本操作 实验目的 掌握栈这种抽象数据类型的特点及实现方法。 实验内容 从键盘读入若干个整数,建一个顺序栈或链式栈,并完成下列操作: (1)初始化栈; (2)判栈为空; (3)出栈; (4)入栈。 算法设计分析 (一)数据结构的定义 struct stackNode{ int data; struct stackNode *nextPtr; }; typedef struct stackNode listStact; typedef listStact *stackNodePtr; (二)总体设计 程序由主函数、入栈函数,出栈函数,删除函数判官是否为空函数和菜单函数组成。 (1)主函数:调用各个函数以实现相应功能

(三)各函数的详细设计: Function1: void instruct() //菜单 (1):使用菜单显示要进行的函数功能; Function2:void printStack(stackNodePtr sPtr) //输出栈 (1):利用if判断栈是否为空; (2):在else内套用while(头指针不为空条件循环)循环输出栈元素; Function3:void push(stackNodePtr *topPtr,int value //进栈 (1):建新的头指针; (2):申请空间; (3):利用if判断newPtr不为空时循环进栈 (4):把输入的value赋值给newPtr,在赋值给topPtr,再指向下一个位置; Function4:int pop(stackNodePtr*topPtr) //删除 (1):建新的头指针newPtr; (2):利用if判断newPtr是否为空,再删除元素。 (3):把topPtr等于newPtr,把头指针指向的数据赋值给topValue,输出要删除的数据值,头指针指向下一个位置,并清空newPtr; (4):完成上述步骤后,return toPvalue,返回;

大整数的四则运算高质量c语言程序

设计题目:大整数的四则运算 1. 功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构。 课程设计要求:采用模块化程序设计 源程序中应有足够的注释 必须上机调试通过 注重算法运用,优化存储效率与运算效率 需提交源程序(含有注释)及相关文件(数据或数据库文件); 提交设计报告书。 2.总体结构:

数据初判断运算符 加法 正整数非正整 转变为 减法 转变为 乘法除法 转变为 退出 流程图:

3 .概要设计:

1)加法运算 利用两个整形数组分别存放两个数a和b的每一位的数值,最低位存放符号。如果a 和b同号,从最低为开始计算,如果有进位则保存在高一位,本为则减10,然后反序将计算后的各个位的数值保存在一个数组c并输出,如果a和b都是负数则在前面要输出负号,函数的返回值为c的位数。如果a和b异号,也即两个正整数相减,从最低位开始相减,如果要借位则本位加10再相减,高一位要减1,然后反序将计算后的各个位的数值保存在一个数组c并输出,在前面要输出相应的符号位。 2)减法运算 可将减法运算转化为加法运算,只要将被减数的符号改变即可。 3)乘法运算 符号存放在最低位,将其中一个数a的每一位分别乘以另一个数b的每一位,并将结果保存在数组c中,然后重复计算a的下一位跟b的每一位的乘积,把上一次计算保存在c 的值加上本次计算后的值,并保存在c自身中,直到a的最高位,最后输出符号和相应的计算结果。 4)除法运算 利用乘法和减法,将除数分别乘以1到9,直到其值大于等于被除数的对应的数,然后被除数对应的数减去其乘积,保存在一个数组中,下一次循环把它归到被除数中继续做除法运算,最后得到余数并输出。 4.函数功能: 1.void init(int a[],int b[],int *p1,int *p2) 2.功能说明:读入所要计算的数值,数据初始化 3.i nt plus(int a[],int b[],int c[],int m,int n) 4.功能说明:两个正整数相加 3. void change(int a[],int b[],int m,int n) 功能说明:当两异号数相加时,改变其符号以符合加法运算 5.i nt minus(int a[],int b[],int d[],int m,int n)

C语言课程设计-小学生算术四则运算测试系统

#ifndef H_STUDENT_HH #define H_STUDENT_HH #include "stdio.h" #include "string.h" #include "malloc.h" #define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/ #define numsubs 5 /*学科数目*/ typedef struct message_student /*结构体定义*/ { char number[6]; char name[20]; char sex[4]; float subject[numsubs]; float score; float average; int index; }student; extern int numstus; /*学生数目*/ extern student *pointer; /*指向结构体数组*/ extern int lens; int menu_select(); /*函数声明*/ int openfile(student stu[]); int findrecord(student stud[]); int writetotext(student stud[]); void welcome(); void display1(); void showtable(); void sort(student stu[]); void deleterecord(student stu[],int i); void addrecord(student stud[]); void display(student stud[],int n1,int n2); void amendrecord(student stud[]); void count(student stud[]); void sortnum(student stud[]); void sortnum2(student stud[]); void sortname(student stud[]);

详解堆栈的几种实现方法——C语言版

详解堆栈的几种实现方法——C语言版 基本的抽象数据类型(ADT)是编写C程序必要的过程,这类ADT有链表、堆栈、队列和树等,本文主要讲解下堆栈的几种实现方法以及他们的优缺点。 堆栈(stack)的显著特点是后进先出(Last-In First-Out, LIFO),其实现的方法有三种可选方案:静态数组、动态分配的数组、动态分配的链式结构。 静态数组:特点是要求结构的长度固定,而且长度在编译时候就得确定。其优点是结构简单,实现起来方便而不容易出错。而缺点就是不够灵活以及固定长度不容易控制,适用于知道明确长度的场合。 动态数组:特点是长度可以在运行时候才确定以及可以更改原来数组的长度。优点是灵活,缺点是由此会增加程序的复杂性。 链式结构:特点是无长度上线,需要的时候再申请分配内存空间,可最大程度上实现灵活性。缺点是链式结构的链接字段需要消耗一定的内存,在链式结构中访问一个特定元素的效率不如数组。 首先先确定一个堆栈接口的头文件,里面包含了各个方案下的函数原型,放在一起是为了实现程序的模块化以及便于修改。然后再接着分别介绍各个方案的具体实施方法。 堆栈接口stack.h文件代码: [cpp]view plaincopy 1./* 2.** 堆栈模块的接口 stack.h 3.*/ 4.#include 5. 6.#define STACK_TYPE int /* 堆栈所存储的值的数据类型 */ 7. 8./* 9.** 函数原型:create_stack 10.** 创建堆栈,参数指定堆栈可以保存多少个元素。 11.** 注意:此函数只适用于动态分配数组形式的堆栈。 12.*/ 13.void create_stack(size_t size); 14. 15./* 16.** 函数原型:destroy_stack 17.** 销毁一个堆栈,释放堆栈所适用的内存。 18.** 注意:此函数只适用于动态分配数组和链式结构的堆栈。 19.*/ 20.void destroy_stack(void); 21. 22./*

c++ c语言 简单的四则运算

C++编写的简单计算器,能执行简单的四则运算 文档时copy过来的!只为方便大家 #include using namespace std; class calculator { public: char token; int exp( void ); int term( void ); int factor( void ); void match( char expectedToken ); void error( void ); }; int calculator::exp(void) { int temp = term(); /*计算比加减运算优先级别高的部分*/ while (( token == '+' ) || ( token == '-' )) switch ( token ) { case '+': match('+'); /*加法*/ temp += term(); break; case '-': match('-'); temp -= term(); /*减法*/ break; } return temp; } int calculator::term( void ) { int div; /*除数*/ int temp = factor(); /*计算比乘除运算优先级别高的部分*/ while (( token == '*' ) || ( token == '/' )) switch ( token ) { case '*': match('*'); /*乘法*/ temp *= factor(); break; case '/': match('/'); /*除法*/

C语言 用栈实现进制转换

C语言用栈实现进制转换 #include #include #include #include #define S_SIZE 100 //栈所占空间的大小 #define STACKINCREAMENT 10 //扩充空间时一次扩充十个字节struct SqStack { int *base; //栈底 int *top; //栈顶 int stacksize;//栈当前的存储空间 }*S; //主函数开始 void main() { //子函数声明 void InitStack(S);//初始化空栈 int StackEmpty(SqStack S);//判栈空 void GetTop(SqStack S,int &e);//获得栈顶元素 void push(SqStack &S,int e);//进栈 void pop(SqStack &S,int &e);//出栈 void convert(SqStack &5,int N,int n);//十进制转N进制 int i,num; unsigned n,N;//要转换的进制数及要转换的数 SqStack s; InitStack(s);//初始化空栈 printf("输入要转换的十进制数和要转换为的进制数:\n"); scanf("%d,%d",&N,&n); printf("%d转换为%d进制后为:\n",N,n); convert(s,N,n); } void InitStack(SqStack &S) { S.base = (int *)malloc(S_SIZE*sizeof(int)); S.stacksize=S_Size; S.top=S.base;//初始化空栈 } int StackEmpty(SqStack S) {

四则运算训练器软件C语言开发(软件代码+软件说明)

软件名称:四则运算训练器 软件功能介绍: 该软件主要用于训练并测试使用者的四则运算能力。 进入软件主界面,界面上会显示3个选项,分别是: 1.10以内的四则运算训练。 2.20以内的四则运算训练。 0.退出。 使用者根据自己的需要选择不同的选项: 按“1”进入10以内的四则运算训练; 按“2”进入20以内的四则运算训练; 按“0”退出程序主界面。 10以内的四则运算和20以内的四则运算均为10题一组;在这10个题中,加减乘除均有,操作数均为整数,且加减乘除出现的顺序不定,除法给出的两个操作数能除尽。 对于给出的题目,当操作者计算正确时,操作界面上无特殊显示;当操作者计算错误时,操作界面上会显示“FAULT!”,提示操作者该题计算错误并同时进入下一题。 操作者每做完10道题,界面上会显示此轮计算的正确率,并询问操作者是否继续。此时操作者可根据自己的需要,按“1”进入10以内的四则运算训练; 按“2”进入20以内的四则运算训练; 按“0”退出程序主界面。

程序代码: #include #include #include void calculation1(); void calculation2(); void main() { int number; char m; redo: printf("\t\t\t欢迎进入四则运算训练营!\n\n\n\n"); printf("<1>.10以内的四则运算系列.\n"); printf("<2>.20以内的四则运算训练.\n"); printf("<0>.退出.\n\n"); printf("请选择功能号( 1 / 2 / 0 ):"); scanf("%d",&number); srand((unsigned)time(0)); loop: if(number==1) calculation1(); else if(number==2) calculation2(); else exit(0); printf("\n\n");

C语言实现进栈和出栈

使用C++中STL的stack,只有C++中有,C标准库没有STL。 程序:(单整数) #include #include using namespace std; stacks; int main() { int a,b; scanf("%d",&a); s.push(a); printf("%d\n",s.top()); s.pop(); return 0; } 方法二: 自己写程序(整数): #include const static int g_iStackSize = 100; //定义栈长度,为100 static int g_iStackPoint = -1; //初始化栈指针为-1,也就是栈里一个元素都没有//定义栈元素数据结构,可以扩展为任意类型数据 typedef struct tagStackData { int iData; //栈元素的数据,整型 }stStackData,* pstStackData; //栈只保存栈元素指针 pstStackData g_arrStack[g_iStackSize];//这个就是栈体了,一个长度为stacksize的数组//压元素入栈,可以返回栈指针当前位置 //@param data 压入栈的元素 //@return int 为100时就是满了 int push(const pstStackData data) { if(g_iStackPoint >= g_iStackSize)//也就是栈满了 { //提示栈满 printf("stack is full.\n"); //返回栈指针位置 return g_iStackPoint; } else//栈还没满 {

相关文档
最新文档