c语言设计简单计算器_第1页
c语言设计简单计算器_第2页
c语言设计简单计算器_第3页
c语言设计简单计算器_第4页
c语言设计简单计算器_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目二设计简单计算器项目要点:各种主要数据类型以及相应的存储格式

各种运算符的含义和使用方法

各种表达式的结果和计算过程

类型转换及其转换规则

学习目标:掌握各种数据类型的使用方法,熟悉相应的注意事项

熟练地对各种表达式进行求值

熟悉每种类型转换的规则和使用场景

C语言程序设计工作任务导入工作任务

在日常生活中,我们经常用到计算器的功能。Windows操作系统提供了一个图形界面的计算器供用户使用。现在我们用C语言开发一个字符界面的计算器,能够实现两个数的加减乘除运算。如图所示。C语言程序设计引导问题存放操作数的变量该如何定义,标识符命名规则是什么?所给数字是常量还是变量,按常量存储还是按变量存储?运算符该如何选择?运算符该如何表示?如何实现换行?如何判断所给数据是整型、浮点型还是字符型等?不同类型的数据该如何转换?变量和赋值运算有什么关系?本项目由4个任务组成。任务1:使用合适的标识符命名数据对象;任务2:为每个变量确定合适的数据类型;任务3:实现人机交互;任务4:使用C语言的运算符和表达式实现计算器的加减乘除运算。任务1确定变量标识符任务分析:简单计算器在实现两个数的加减乘除运算时,涉及到三个数据:操作数1、操作数2、结果值,这些数据必须保存在变量中,否则就会丢失。任务1将确定使用哪些变量标识符来保存这些数据,以及如何给这些变量标识符命名。2.1.1命名数据对象在程序中使用标识符来命名数据对象,为了保存数据对象的信息,将数据对象的值存放在变量中,简单计算器中涉及的变量名如下:

oper1 /*操作数1*/ oper2 /*操作数2*/ sum /*和*/ sub /*差*/

mul/*乘积*/div/*商*/任务1确定变量标识符

程序设计者为自定义的变量、函数、类型所起的名字可由1~31个字符组成(当然有些长度只允许8个,这是因系统不同而异)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线不能与关键字同名,尽量“见名知义”区分大小写2.1.2标识符关键字又称保留字,是程序设计语言中规定的、有固定含义的单词符号。(32个)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile任务1确定变量标识符2.1.1关键字任务1确定变量标识符指出下面哪些是非法的标识符?

a f-2f6 m+n x4b4afas_d

a.sstotalmainmonth int

关键字:main

int

非法字符:f-2 m+n

a.ss

开头非法:4af

2.1.3变量概念:其值可以改变的量变量名与变量值变量定义的一般格式:

数据类型变量1[,变量2,…,变量n];变量定义位置:一般放在函数开头变量初始化:定义时赋初值X=88xx是变量名,方框表示某个存储单元,单元中的数据8是变量x的值

inta,b;charc1,c2;任务1确定变量标识符1、变量名最好要做到“见名知义”。2、变量必须“先定义、后使用”。3、声明变量需要有数据类型,目的是告知编译系统所声明的变量需要占用的存储单元数目,以便编译系统为变量分配存储单元,因为不同类型的数据在内存中所占用的存储单元大小不同的。4、使用变量时要注意变量的三要素:数据类型、变量名和当前值。5、变量中保存了数据后还可以重新赋值,重新赋值后,新数据就取代了原来的数据。普通常量:数值型常量,如:-2.5、5.8E9

字符常量,如:’a’、’$’、’\n’

字符串常量,”a”、”Goodmorning!”定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define

符号常量常量一般用大写字母是宏定义预处理命令,不是C语句2.1.4常量任务1确定变量标识符#definePI3.14159voidmain(){

intr=5,area;area=PI*r*r;

printf("area=%d",area);}任务分析:

C语言中所有变量必须指定数据类型,变量的数据类型决定了该变量只能保存指定类型的数据,也决定了该变量只能执行该数据类型允许的操作。

C语言的基本数据类型包括整型、实型、字符型。没有小数部分的数就是整型类型,而加了小数点的数则是实型(也称为浮点类型),单个字母或符号更广泛地说是字符类型。任务2选择数据类型

2.2.1定义变量任务1确定了一组变量名,在变量名确定后,还要确定变量的数据类型,即定义变量。由于简单计算器处理的是整数或实数,所以该项目中的变量定义成int型(整型)和double型(实型),定义变量的数据类型如下:intoper1; /*操作数1*/intoper2; /*操作数2*/intsum; /*和*/intsub;/*差*/int

mul; /*积*/doublediv

; /*商*/C数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型

char枚举类型enum整型实型单精度型

float双精度型

double数组结构体struct共用体union短整型short长整型long整型int数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作任务2选择数据类型

任务2选择数据类型

2.2.2整型数据类型不同整型数据所占存储空间及取值范围数据类型占用字节数取值范围int2(16位)-215~(215-1)short2(16位)-215~(215-1)long4(32位)-231~(231-1)unsignedint2(16位)0~(216-1)unsignedshort2(16位)0~(216-1)unsignedlong4(32位)0~(232-1)随机器各异试一试问题2.2学生数据包括年龄、学号,定义变量来存放这些信息。问题2.3求出所使用环境中整型所占的字节数。【程序代码】#include"stdio.h"voidmain(){

intb; b=sizeof(int);

printf("整型数所占字节=%d\n",b);}2.2.2整型数据类型整型常量(1)十进制整数由+或-后跟数字串组成,开头不能为0

后缀u或U:无符号整数后缀l或L:长整数后缀ul或UL:无符号长整数(2)八进制整数:以0字头,后跟0~7组成的数字串后缀u(U)、l(L)、ul(UL)任务2选择数据类型

2.3.1整型数据整型常量(3)十六进制整数

以数字0和字母x(或X)开头,后跟0~9、a~f(A~F)组成的数字字母串。后缀u(U)、l(L)、ul(UL)任务2选择数据类型

指出下面数据哪些是非法的整型常量?

-12 0120x3F12L3f0Xa-028

+025U0X300x8e28E2任务2选择数据类型练习分别把十进制、八进制和十六进制值赋值给int和long型变量2.2.3实型数据1、实型常量的表示浮点常数有两种书写形式:(1)定点格式,即由正负号、整数部分、十进制小数点和小数部分组成。例如,123.45,-256.701等。(2)指数格式,即在定点表示的基础上,后面再加上一个e或E后跟一个l~3位整数。如-1.234E18,2.74e-2,2.71828e0,86e-3等实数浮点常数双精度型常数任务2选择数据类型(1)实型变量的分类2、实型变量的表示单精度浮点型—float双精度浮点型—double(2)各种实型变量所占的字节数、有效数字及取值范围数据类型占用字节数有效数字取值范围float46-710-37-1038double815-1610-307-10308longdouble1018-1910-4931-10-4932不同实型数据所占存储空间及取值范围任务2选择数据类型练习1、学生数据包括成绩等,定义变量名来存放这些信息。

任务2选择数据类型

练习2、下面代码输出的结果。

#include"stdio.h" voidmain() { doublea=112121.123; printf("%14.4f\n",a); }2.2.4字符型数据1、字符常量C语言中的字符常量有两种:(1)单引号括起来的普通字符。如:’a’,’s’等都是字符常量。(2)单引号括起来的转义字符。如:’\n’表示换行,常用转义字符2、字符串常量字符串常量是用双引号括起来的一串字符序列。例如:”as”,”a”,””(空串)。3、字符变量

字符变量用来存放一个字符,其定义格式如下:charch;

/*定义一个字符变量ch*/任务2选择数据类型字符格式ASCII码值含义字符格式ASCII码值含义\00空操作\a7报警\f12换页\\92反斜杠字符\t9横向跳格\’39单引号字符\b8退格\”34双引号字符\r13回车,将当前位置移至本行开头\dddASCII码为1-3位8进制数ddd的字符\n10换行,将当前位置移至下一行开头\xhhASCII码为1-2位16进制数hh的字符常用的转义字符及其含义任务2选择数据类型练习下面代码观察输出的结果。

#include"stdio.h" voidmain() {

printf("h\ti\b\bjk"); }

试一试问题2.7

定义字符变量,并赋值字符和整型数据【程序代码】#include"stdio.h"voidmain(){ charc1,c2

; c1=’a’

;c2=’b’

;

printf("%c %c %d %d",c1,c2,c1,c2)

; c1=97;c2=98;

printf("%c %c %d %d",c1,c2,c1,c2)

;}任务2选择数据类型练习下面代码观察输出的结果。

#include"stdio.h" voidmain() { charc1,c2

; c1=’a’

;c2=’b’

; c1=c1-32; c2=c2-32;

printf("%c %c %d %d",c1,c2,c1,c2)

; }

字符串数据任务2选择数据类型C语言除了允许使用字符常量外,还允许使用字符串常量。字符串常量是一对双引号括起来的字符序列。如: “Howdoyoudo.”,“China”,“a”可以输出一个字符串,如:

printf(“Howdoyoudo”);C规定:在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C语言以字符‘\0’作为字符串结束标志。问题:试说明字符串常量和字符常量的区别。任务3实现人机对话设计简单计算器,需要输入操作数1和操作数2的值,程序需要提供人机交互的途径,以便用户输入数据,计算或处理完输入数据之后,再把结果告诉用户。2.2.5变量的初始化一、变量初始化变量的初始化就是在定义变量的同时,给变量赋一个值。这个值是变量产生后第一次被赋值,所以叫赋初值。如:inta=3;floatx=5.56;charc1=’a’;只要在定义的时候用赋值运算符赋给该变量一个值就行。任务3实现人机对话任务分析:设计简单计算器,需要输入操作数1和操作数2的值,程序需要提供人机交互的途径,以便用户输入数据,处理完输入数据之后,再把结果告诉用户,即输出结果。2.3.1输入操作数和输出提示信息

C语言无I/O语句,I/O操作由函数实现

#include<stdio.h>数据输出:格式输出函数

printf(“格式控制串”,输出表)

字符输出函数

putchar(c)数据输入:

格式输入函数

scanf(“格式控制串”,地址表)

字符输入函数

getchar()

任务2确定了一组变量及数据类型,任务3实现操作数1和操作数2值的输入,并保存到相应的变量中:

printf("请输入第一个操作数:\n"); /*提示输入信息语句*/

scanf("%d",&oper1); /*输入操作数1*/

printf("请输入第二个操作数:\n"); /*提示输入信息语句*/

scanf("%d",&oper2); /*输入操作数2*/字符输出函数格式:putchar(c)

参数:c为字符常量、变量或表达式功能:把字符c输出到显示器上#indude<stdio.h>

main(){intc=65;chard=‘A’;

putchar(c);putchar(d);

putchar(’A’);putchar(65);

d=d+32;

putchar(d);}运行结果:AAAAa2.3.2输出函数

练一练练习下面代码观察输出的结果。#include"stdio.h"voidmain(){

putchar('\"'); /*输出双引号字符*/ putchar('\x61'); /*输出’a’字符*/

putchar('\\'); /*输出\字符*/}格式输出函数格式:printf(“格式控制串”,输出表)

功能:按指定格式向显示器输出数据输出表:要输出的数据(可以没有,有多个时以“,”分隔)格式控制串:包含两种信息格式说明:%[修饰符]格式字符用于指定输出格式普通字符或转义字符:原样输出任务3

实现人机对话格式转换说明符:

%d

输出十进制整数十进制%x

输出十六进制整数

%f

输出浮点数,保留6位小数%o

输出八进制整数

%c

输出单个字符%s

输出一个字符串转义序列:

\n回车换行\\

反斜杠(\)

\t制表符(Tab,光标右移8位)\”

双引号(”)其他字符:除以上两项字符以外的其他字符都视为普通字符,输出时照原样显示。任务3

实现人机对话问题2.10输出学生的姓名、年龄、学号、成绩、性别等信息。【程序代码】#include"stdio.h"voidmain(){ intage=19,num=23; floatscore=87.5; charsex=’m’; /*f:女,m:男*/

printf("NameisRose\n");

printf("IDis%d",num);

printf("Age:%d\tSex:%c\tscore:%f\n",age,sex,score);}

任务3

实现人机对话练一练1、练习下面代码观察输出的结果。

#include"stdio.h" voidmain()

{ inta=97,b=98; printf("%d%d\n",a,b); printf("%d,%d\n",a,b); printf("%c,%c",a,b); printf("a=%d,b=%d",a,b); }2、练习下面代码观察输出的结果。

#include"stdio.h"main(){

inta=15;

floatb=123.1234567;doublec=12345678.1234567;chard='p';printf("a=%d,%5d,%o,%x\n",a,a,a,a);printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);printf("c=%lf,%f,%8.4lf\n",c,c,c);printf("d=%c,%8c\n",d,d);

}字符输入函数格式:getchar()

功能:从键盘读一个字符#indude<stdio.h>

main(){charc;c=getchar();

printf(“%c\n”,c);

printf(“%d\n”,c);}程序运行时,等等用户在键盘上输入字符。假设用户输入’a’和回车键,则屏幕显示:aa97任务3

实现人机对话练习:从键盘上输入一个小写字母,将其转化为大写字母并输出。

任务3

实现人机对话格式输入函数格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束

地址表:变量的地址,常用取地址运算符“&”

输入分隔符的指定:一般以空格、TAB或回车键作为分隔符其它字符作分隔符:格式串中两个格式符间字符

例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);

输入a=12,b=24,c=36任务3

实现人机对话问题2.12输入学生的年龄、学号、成绩、性别等信息。【程序代码】#include"stdio.h"voidmain(){

intage,num; floatscore; charsex; /*f:女,m:男*/

printf("inputtheinformation\n");

scanf("%d%d%f%c",&age,&num,&score,&sex);

printf("Age:%d\tID:%d\tSex:%c\tscore:%f\n",age,num,sex,score);}练习:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’,问在键盘上如何输入?

#include"stdio.h" voidmain() {

int

a,b; floatx,y; charc1,c2;

scanf("a=%d b=%d",&a,&b);

scanf("x=%fy=%f",&x,&y); scanf("c1=%c,c2=%c",&c1,&c2);

}

任务3

实现人机对话练一练用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’,问在键盘上如何输入?任务4执行运算任务分析输入了操作数1和操作数2,就可由下列公式来进行加减乘除运算:

sum=oper1+oper2;sub=oper1-oper2;mul=oper1*oper2;div=oper1/oper2;为了正确执行上述运算,首先必须熟悉C语言的运算符。2.4.1实现计算器的四则运算运算是对数据进行加工的过程,用来表示各种不同运算的符号称为运算符。参加运算的数据称为运算对象或操作数。用运算符把运算对象连接起来的式子称为表达式。C语言的运算符很丰富,包括算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符等。本任务实现简单计算器的加减乘除功能。假设操作数1保存在变量oper1中,操作数2保存在变量oper2中,输出两个数的运算结果。2.4.1算术运算符和算术表达式算术运算符两大类基本算术运算符自增自减运算符1.基本算术运算符(双目)常用共5种:+(加)、-(减)、*(乘)、/(除)、%(求余)2.4.2算术运算符和算术表达式强制类型转换运算算术运算符和算术表达式任务4执行运算关于求除运算/:如果当两个整数相除时,结果为整数,小数部分舍去,如

5/2=2

;如果两个数相除有一个为浮点类型结果就为浮点型数据。如:5.0/2=2.5,5/2.0=2.5关于求余运算%:①a%b,即得两数相除的余数

②a和b必须为整型问题2.13输入一个四位数,求该数个位、十位、百位、千位上的数的和。任务4执行运算数值型数据间的混合运算任务4执行运算整型、单精度型、双精度型、字符型数据可以混合运算。例如:

10+‘a’+1.5-123.45*‘b’是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。

转换原则:低类型数据转换成高类型数据数值型数据间的混合运算任务4执行运算例如:

#include"stdio.h" voidmain() { charch='a';

intn=2; doubleff=5.31; floatf=4.26f;

printf("ch*n+f*1.0-ff的运算结果为:%f",ch*n+f*1.0-ff); }强制类型转换任务4执行运算将一个表达式的值强制转换成指定的类型。一般形式:(类型名)(表达式)int a=2,b=3;float x=3.5,y=2.5,z;z=(float)(a+b)/2+(int)x

%(int)y;3.5问题2.15:输入摄氏温度c,要求输出华氏温度。公式为f=5/9*c+32。任务4执行运算练一练输入长方形的长和宽,求长方形的面积和周长。自增、自减运算符(单目)任务4执行运算i++(先使用i,然后使i的值增1)++i(先使i的值增1,然后使用i)k--(先使用k,然后使k的值减1)--k(先使k的值减1,然后使用k)①已知j1=3;k1=++j1;求k1=?②已知j2=3;k2=j2++;求k2=?③已知j3=6;k3=++j3;求k3=?④已知j4=9;k4=j4++;求k4=?⑤已知a1=3;b1=5;c1=(++a1)*b1;求c1=?⑥已知a2=3;b2=5;c2=(a2++)*b2;求c2=?k1=4k2=3k3=7k4=9c1=20c2=15任务4执行运算思考2:main(){ inta=100;

k1=a;

k2=++a;k3=a++

k4=a;}k1=100 a=100k2=101 a=101k3=101 a=102k4=102 a=101任务4执行运算2.4.2赋值运算符和赋值表达式任务4执行运算1.简单赋值运算符和表达式赋值运算符:“=”如:x=8赋值表达式:

变量=表达式赋值表达式的计算:先计算“=”右边表达式的值,再把该值赋给“=”左边的变量赋值表达式的值:即赋给“=”左边变量的值2.4.2赋值运算符和赋值表达式任务4执行运算例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值为5,a,b,c值为5//表达式值为5,b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=22.4.2赋值运算符和赋值表达式2.复合赋值运算符和表达式在“=”之前加上其他的双目运算符,构成复合赋值运算符。(10种)+=、-=、*=、/=、%=、<<=、>>=,&=、|=、^=j*=3+x*4-5/2↔j=j*(3+x*4-5/2)若:已知x=3.5,j=2.2,计算结果j=?33.0任务4执行运算问题2.17

运行下面的程序,观察并分析用法。#include"stdio.h"voidmain(){

inta,b,c,x,y

; a=2; c=3; b=2*a+6; c*=a+b; x=a*a+b+c; y=2*a*a*a+3*b*b*b+4*c*c*c;

printf("%d%d%d

%d

%d",a,b,c,x,y);}练习:计算函数编一程序计算并输出f(2)的值。任务4执行运算2.4.3关系运算符任务4执行运算1.关系运算符

>、<、>=、<=、==、!=结合性:自左向右关系表达式的值:是逻辑值“真”或“假”,用1和0表示2.4.3关系运算符任务4执行运算例1:若a=0;b=0.5;x=0.3;则a<=x<=b的值为0例2:5>2>7>8在C中是允许的,值为0例3:inti=1,j=7,a;a=i+(j%4!=0);则a=2例4:‘a’>0结果为‘A’>100结果为10问题2.18

运行下面的程序,观察并分析用法。#include"stdio.h" voidmain() {

inta=6,b=3,c=9,d=6;

inte=c<d;

printf("a>b的值为:%d\n",a>b);

printf("a<b的值为:%d\n",a<b);

printf("a>=b的值为:%d\n",a>=b);

printf("a<=d的值为:%d\n",a<=d);

printf("a>b+c的值为:%d\n",a>b+c);

printf("a==d的值为:%d\n",a==d);

printf("a!=d的值为:%d\n",a!=d);

printf("e的值为:%d\n",e); }2.4.4逻辑运算符和逻辑表达式任务4执行运算1.逻辑运算符

!(非)、&&(与)、||(或)优先级:低于关系运算符

a<=b&&b>c

(a<=b)&&(b>c)注意:数学不等式:如0<x<10必须用逻辑表达式:0<x&&x<102.4.4逻辑运算符和逻辑表达式任务4执行运算说明:1.逻辑运算符的运算量是逻辑值0或1,其运算结果也是逻辑值。2.任何关系表达式及逻辑表达式,不管多么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论