C课程设计四则混合运算练习Word格式.docx
《C课程设计四则混合运算练习Word格式.docx》由会员分享,可在线阅读,更多相关《C课程设计四则混合运算练习Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
![C课程设计四则混合运算练习Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/23/d2444fa2-8192-4b52-b366-5b1d8a63dcc5/d2444fa2-8192-4b52-b366-5b1d8a63dcc51.gif)
所以在复习中,注重学生对四则运算定律和性质的理解、记忆,再加以灵活运用,从而达到培养学生计算能力的目的,这是非常必要的。
因此,在复习中首先要让学生搞清所学过的运算定律和性质有哪些,分别用字母怎么表示,语言怎么叙述,达到全面巩固理解的目的。
其间,分别插入适当判断、填空练习,以帮助学生理解及灵活运用。
另外,利用积、商的变化规律培养学生思维的灵活性和深刻性,使学生在观察推导中理解积、商的变化规律实际上就是乘法运算定律的具体体现,同时,也为简便计算打开多种途径。
然后,在学生全面掌握的基础上出现一组选择题,综合地培养学生运用定律和性质的能力,反馈面也扩展到全班,便于了解多数学生的情况。
第一章绪论
1.1C语言概述
C语言是国际上广泛流行且很有发展前途的计算机高级语言,不仅用来编写应用软件,也用来编写系统软件。
C语言功能丰富,使用灵活,可移植性好,深受广大用户欢迎。
C语言的数据类型丰富,既具有高级程序设计语言的优点,又具有低级程序设计语言的特点;
既可以用来编写系统程序,又可以用来编写应用程序。
(例如,著名的UNIX操作系统就是用C语言编写的)因此,C语言正在被迅速地推广和普及。
1.2C语言出现的历史背景
在C语言诞生以前,操作系统及其他系统软件主要是用汇编语言实现的。
由于汇编语言程序设计依赖于计算机硬件,其可读性和可移植性都很差,而一般的高级语言又难以实现对计算机硬件的直接操作,因此人们需要一种兼有汇编语言和高级语言特性的语言。
C语言就是在这种环境下产生的。
它最早是由DennisRichie于1973年设计并实现。
它的产生同UNIX系统之间具有非常密切的联系——C语言是在UNIX系统上开发的。
而无论UNIX系统本身还是其上运行的大部分程序,都是用C语言编写实现。
同时,它同样适合于编写不同领域中的大多数程序。
C语言已经成为全球程序员的公共语言,并且由此产生了当前两个主流的语言C++和Java——它们都建立在C语言的语法和基本结构的基础上,而且现在世界上的许多软件都是在C语言及其衍生的各种语言的基础上开发而成。
目前,在微机上广泛使用的C语言编译系统有TurboC、BorlandC++、MicrosoftVisualC++等。
虽然它们的基本部分都是相同的,但还是有一些差异,本程序的设计采用TurboC作为上机编程调试环境。
C语言特点和用途
①语言简洁、紧凑,使用方便、灵活。
共有32个关键字,9种控制语句。
②运算符丰富,公有34种运算符。
③数据结构丰富,数据类型有:
整型、实型、字符型、数组、指针、结构体、共用体等。
④具有结构化的控制语句(如if…else、while、do…while、switch、for)
⑤语法限制不太严格,程序设计自由度大。
⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。
⑦生成目标代码质量高,程序执行效率高。
⑧可移植性好。
C语言的用途
C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,C有明显的优势。
现在很多大型应用软件也用C编写。
C语言程序一般用小写字母,而仅在一些宏定义中,将常量名用大写字母表示,或对一些有特殊意义的变量,偶尔也用大写字母表示。
C语言中对大小写字母看作两个变量。
在C语言的程序设计中,用户程序的功能快都是一些函数,而函数在定义时,可选用省略号来表示参数类型和个数的不确定性。
如function(F1,…)的函数的第一个参数F1表示为某种类型的变量,而后的其它参数无论是类型还是参数个数都不确定。
在c函数调用时,参数或参数的指针都被压入堆栈,并且最后一个参数最先进入堆栈,第一个参数最后进入堆栈。
如果小系统模式编译,变量的指针为2字节,如果用大系统模式编译,变量的指针为4字节,如果我们求得第一个参数指针在堆栈的地址,加上变量指针的字节数,再取相应存的容,即求出其它各参数指针在堆栈的地址,从而可引用用省略号说明的参数。
第二章问题定义(或系统分析)
2.1系统分析
一、题目:
四则运算
二、目的与要求
1.目的:
通过编写四则运算程序,培养学生综合利用C语言进行程序设计的能力,熟悉字符串的操作方法,加强函数的运用,提高软件系统分析能力和程序文档建立、归纳总结的能力。
2.基本要求:
1)要求用C语言编程,在VisualC++环境下调试完成;
2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数来完成;
3)要求应用本课所讲授的程序设计语言知识来解决问题.
三、设计方法和基本原理
1.课题功能描述
本程序的功能,就是实现数的加减乘除四则运算,如计算3+5*8的结果。
2.问题详细描述
程序运行时,首先会出现一个非常友好的界面提示用户去选择需要练习的题目,待用户选择对应项后,就会出现对应的算术题。
当用户输入结果后,系统会自动计算结果并判断用户输入的结果是否为正确结果。
四、问题的解决方案
该问题主要注意四则运算的优先级问题:
乘除运算比加减运算优先级高,同级运算按从左到右的顺序运算。
本程序应采用模块化设计方法,设计几个功能模块。
字符串解析函数(将输入字符串分解成数和运算符)
将数据(字符数组中)转换成十进制数(long)
判读是否存在高优先级运算符,若存在首先计算其运算结果并保存同级运算按先后顺序进行
第三章总体设计与详细设计
本程序是一款关于四则运算的小软件,我把程序分成了5个模块,分别是加法、减法、乘法、除法和加减乘除四则混合运算。
为了让我的小软件能得到更好的应用,我把每个数都用随机数去表示,在加减乘除四则混合运算中,符号都用随机的,这样通用性更大一些,但是随之而来的就是一系列问题。
例如如何生成随机数,以及生成随机数的方法,参数传递,符号传递,符号识别,更重要的是四则运算的优先级问题,我花了大量的时间都在考虑这个问题,怎么样能让算法更有效率。
为了我的小软件能在中小学中应用的广,在初等数学中,当一级运算(加减)和二级运算(乘除)同时出现在一个式子中时,它们的运算顺序是先乘除,后加减,如果有括号就先算括号后算括号外,同一级运算顺序是从左到右.这样的运算叫四则运算,. 四则指加法、减法、乘法、除法的计算法则. 一道四则运算的算式并不需要一定有四种运算符号,一般指由两个或两个以上运算符号及括号,把多数合并成一个数的运算. 加法:
把两个数合并成一个数的运算把两个小数合并成一个小数的运算把两个分数合并成一个分数的运算 减法:
已知两个加数的和与其中一个加数,求另一个加数的运算 乘法:
求几个相同加数的和的简便运算小数乘整数的意义与整数乘法意义相同 一个数乘纯小数就是求这个数的十分之几,百分之几……分数乘整数的意义与整数乘法意义相同 除法:
已知两个因数的积与其中一个因数,求另一个因数的运算与整数除法的意义相同 举例说明:
1、乘法:
①求几个几是多少;
②求一个数的几倍是多少;
③求物体面积、体积;
④求一个数的几分之几或百分之几是多少。
2、除法:
①把一个数平均分成若干份,求其中的几份;
②求一个数里有几个另一个数;
③已知一个数的几分之几或百分之几是多少求这个数。
3、加法:
①求和;
②减法逆运算。
4、减法:
①求剩余;
②比较;
③加法逆运算。
第四章编码实现
本程序是针对加减乘除四则运算设计的一款四则运算练习软件,它能根据用户的选择出题。
运行程序后,用户会看到一给非常友好的界面菜单,有6个选项可供选择。
第一个是加法练习,第二个是减法练习,第三个是乘法练习,第四个是除法练习,第五个是加减乘除四则运算练习。
这时,系统会提示用户去做选择。
TurboC上显示的主菜单界面(这里是汉文实际英文)
========================================================
欢迎使用四则运算练习软件========================================================
1.加法练习
2.减法练习
3.乘法练习
4.除法练习
5.加减乘除四则混合运算
6.退出
========================================================
这款小软件通过调用各种子程序来实现需要的功能,为了让我的小软件能得到更好的应用,我把每个数都用随机数去表示,在加减乘除四则混合运算中,符号都用随机的,这样通用性更大一些,但是随之而来的就是一系列问题。
第五章总结与心得
三周的课程设计已经结束了。
回想学习C语言的过程中,既有快乐又有烦恼。
从领到书的那一刻,我就很郁闷,《C语言程序设计》到底事学什么的,有什么用。
刚开始上课时,还在迷茫这门课程是用来做什么的。
不过,这些感受都是在对这门课程不了解的情况下产生的。
后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。
尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。
通过半个学期的学习,我掌握了基本知识。
下学期开始时,被通知要进行三周的课程设计。
当时有点懵,感觉学的东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为我们了。
第一天基本上都是在看书,把基本知识再熟悉一边。
到了下午的时候,老师发过来三道练习题,从这几道练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。
第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。
但是,到了第二周,我们由不得不再次陷入困境。
在整个程序的编写过程中。
最难的就是修改和删除这两个模块,这也是我们第二周要解决的重点问题。
开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的容将文本的信息全部覆盖了。
困难之时,我们组的其他人,帮助了我,完成了修改和删除。
这样的话,整个程序基本上全部完成了,就剩下完善工作了。
我们组写了两个程序,最后,两个程序相互组合,互补,大功告成
虽然设计时完成了,但是我觉得其中还是由一些不足之处:
1.警告句。
程序中缺少一些警告句,例如:
“是否真的删除(y/n)?
”。
2.重名的情况。
由于考虑的不周全,没有设计遇到重名的情况该怎么处理。
3.选择单一。
我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。
整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。
短短的三周课程设计结束了,但是这段时间里,我又学到了更多C知识,如:
对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。
,也看到了团队精神和互帮互助的重要性。
这一点会让我终生受益。
通过三周的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这三周过的挺充实!
附录:
源代码
#include<
stdio.h>
stdlib.h>
main()
{
intx=30,y=6;
charchoice;
randomize();
while
(1)
{
clrscr();
gotoxy(x,y);
puts("
1.Jiafalianxi."
);
gotoxy(x,y+1);
2.Jianfalianxi."
gotoxy(x,y+2);
3.Chengfalianxi."
gotoxy(x,y+3);
4.Chufalianxi."
gotoxy(x,y+4);
5.Jianjianchengchuhuenhelianxi."
gotoxy(x,y+5);
6.Tuichu."
gotoxy(x,y+7);
Qingxuanze(1huo6)......"
choice=getch();
switch(choice)
case'
1'
:
add();
break;
2'
subt();
3'
mult();
4'
divid();
5'
huenhe();
6'
exit(0);
default:
printf("
Xuanzeyouwu!
Anrenyijianhouchongxinshuru......"
getch();
}
}
add()
inti,t,num1,num2,answer;
t=0;
while(t!
=5)
num1=random(99)+1;
num2=random(99)+1;
question(num1,num2,'
+'
scanf("
%d"
&
answer);
if(answer==num1+num2)
zhengque!
"
t++;
else
printf("
cuole!
Zhengquedaanshi:
%d\n"
num1+num2);
if(t==5)
\nNilianxudadui5ti,gongxi!
Anrenyijianfanhuicaidan......"
subt()
-'
if(answer==num1-num2)
Zhengque!
Cuole!
num1-num2);
\nNiyilianxudadui5ti,gongxi!
mult()
*'
if(answer==num1*num2)
num1*num2);
divid()
/'
if(answer==num1/num2)
num1/num2);
huenhe()
intt,a,b;
longs,m,j,answer,num1,num2,num3;
charopt1,opt2;
s=answer=t=m=0;
num3=random(99)+1;
a=random(3)+1;
b=random(3)+1;
opt1=fuhao(a);
opt2=fuhao(b);
%ld%c%ld%c%ld="
num1,opt1,num2,opt2,num3);
%ld"
if(opt1=='
||opt1=='
)
switch(opt1)
{case'
m=num1*num2;
m=num1/num2;
switch(opt2)
s=m+num3;
s=m-num3;
s=m*num3;
s=m/num3;
elseif(opt2=='
||opt2=='
m=num2*num3;
m=num2/num3;
s=num1+m;
s=num1-m;
s=num1*m;
s=num1/m;
if(opt1==opt2||opt1=='
&
opt2=='
j=num1+num2;
j=num1-num2;
s=j+num3;
s=j-num3;
if(answer==s)
Zhengquededaanshi:
%ld\n"
s);
{printf("
question(n1,n2,opt)
intn1,n2;
charopt;
{printf("
%d%c%d="
n1,opt,n2);
fuhao(n)
intn;
switch(n)
{case1:
return('
case2:
case3:
case4: