如何用c语言设计windows系统计算器,c语言设计简单计算器

file0003.png

类型转化以及转换规则学习目标: 熟悉每种种类转换的规则跟使用画面工作任务 在日常生活中,我们常常用到计算器的功 能。Windows操作系统提供了一个图形界面的 计算器供客户使用。现在我们用C语言开发一 个字符界面的计算器,能够实现两个数的加减 乘除运算。如图所示。 引导问题 存放操作数的数组该如何定义,标识符命名规则是哪个? 所给数字是常量还是变量,按常量存储还是按函数存储? 如何判定所给数据是整型、浮点型还是字符型等?不同类型的数据该怎么转换? 任务4:使用C语言的运算符和通配符实现计算器的加减乘除运算。 简单计算器在实现两个数的加减乘除运算时,涉及到三个数据:操作数1、 操作数2、结果值,这些数据需要储存 在变量中,否则都会丢失。 任务1将确认使用这些函数标识符来 保存这种数据,以及怎样给那些变量标 识符命名。 2.1.1 命名数据对象 在程序中使用标识符来命名数据对象,为了保存数据对象的信息,将数据对象的值存放 在函数中,简单计算器中涉及的函数名如下: oper1 /*操作数1*/ oper2 /*操作数2*/ sum mul/*乘积*/ div 程序设计者为自定义的数组、函数、类型所起的名字 可由1~31个字符构成(当然有些长度只允许8 个,这是因系统不同而异) 只能由字母、数字、下划线组成,且第一个字 母应该是字母或下划线 不能与关键字同名,尽量“见名知义” 区分大小写 2.1.2 标识符 关键字又称保留字,是程序设计语言中要求的、 有固定意义的词汇符号。

(32个) auto break case char const continue default do double else enum extern float intlong register return short signed sizeof static struct switch typedef unsigned union void volatile while 2.1.1关键字 f-2f6 x4b4af as_d a.ss total main month int 关键字:main int 非法字符:f-2 a.ss开头非法:4af 2.1.3 变量 变量定义的通常格式:数据类别 变量1[,变量2,…,变量n]; x是函数名,方框表示某个存储单元,单元中的数据8是函数x的值int charc1,c2; 3、声明变量必须有数据类别,目的是告知编译平台所声明的数组必须占用的储存单元数 目,以便编译平台为函数分配内存单元,因 为不同类型的数据在存储中所占用的存储单 元大小不同的。 4、使用变量时应留意变量的三要素:数据类别、变量名跟当前值。 5、变量中保存了数据后还可以再次赋值,重新赋值后,新数据就代替了原本的数据。

9-437-png_6_0_0_135_536_622_407_892.979_1262.879-669-0-442-669.jpg

–普通常量: 字符串常量,”a”、”Goodmorning!” 分类:–符号常量:用标识符代表常量 定义格式:#define 符号常量 常量 是宏定义预处理命令,不是C语句2.1.4 常量 #definePI 3.14159 voidmain() printf("area=%d",area); 任务分析:C语言中所有函数需要指定数据类别,变量 的数据类别决定了该函数只能保存指定类别的 数据,也决定了该变量只能执行该数据类别允 许的操作。 C语言的基本数据类别包含整型、实型、字 符型。没有小数部分的数就是整型类型,而加 了小数点的数则是实型(也称为浮点类型), 单个字母或符号更广泛地说是数组类型。 2.2.1定义函数 任务1确定了一组变量名,在变量名确认后,还要确定变量的数据类别,即定 义函数。由于简单计算器处理的是整数 或实数,所以该项目中的数组定义成int 型(整型)和double型(实型),定义 变量的数据类别如下: intoper1; /*操作数1*/ intoper2; /*操作数2*/ intsum; intsub; intmul; doublediv 基本类型构造类型 指针类型 空类型void 定义类别typedef 字符类型 char 枚举类型 enum 单精度型float 双精度型 double 数组 结构体 struct 共用体 union 短整型 short 长整型 long 整型 int 数据类别决定: 2.2.2整型数据类别 不同整型数据所占内存空间及取值范围 数据类别 占用字节数 取值范围 int 2(16位) -2 15 15-1) short 2(16位) -2 15 15-1) long 4(32位) -2 31 31-1) unsigned int 2(16位) 16-1) unsigned short 2(16位) 16-1) unsigned long 4(32位) 32-1) 随机器各异 试一试 问题2.2比如年龄、学号,定 义函数来存放那些信息。

问题2.3 求出所使用环境中整型所占的字 节数。 【程序代码】 #include"stdio.h" void main() b=sizeof(int);printf("整型数所占字节=%d\n", 2.2.2整型数据类别 整型常量 (1)十进制整数 由+或-后跟数字串构成,开头不能为0 后缀u或U:无符号整数 后缀l或L:长整数 后缀ul或UL:无符号长整数 (2)八进制整数: 以0字头,后跟0~7组成的数字串 后缀u(U)、l(L)、ul(UL) 2.3.1整型数据 整型常量 (3)十六进制整数 以数字0和字母x(或X)开头,后跟0~9、 a~f(A~F)组成的数字字母串。 后缀u(U)、l(L)、ul(UL) 指出以下数据哪些是非法的整型常量?-12 012 0x3F 12L 3f 0Xa -028 +025U 0X30 0x8e2 8E2 练习分别把十进制、八进制和十六进制值数组给int 和long型变量 2.2.3 实型数据 1、实型常量的表示 浮点常数有两种书写方式: (1)定点格式,即由正负号、整数部分、十进制小数点和整数部分 组成。例如,123.45,-256.701等。

369975_15.jpg

(2)指数格式,即在定点表示的基础上,后面再加上一个e或E后 跟一个l~3位整数。如-1.234E18,2.74e-2,2.71828e0,86e-3等 实数 浮点常数 双精度型常数 (1)实型变量的分类2、实型变量的表示 单精度浮点型—float 双精度浮点型—double (2)各种实型变量所占的字节数、有效数字及取值范围 数据类别 占用字节数 有效数字 取值范围 float 6-710 -37 -10 38 double 15-1610 -307 -10 308 long double 10 18-19 10 -4931 -10 -4932 不同实型数据所占内存空间及取值范围 练习1、包含成绩等,定义变量名来存放那些信息。 练习2、下面代码输出的结果。#include "stdio.h" void main() 112121.123;printf(".4f\n", 2.2.4字符型数据 1、字符常量 C语言中的字符常量有两种: 单冒号括出来的谓词字符。如:’\n’表示换行,常用转义字符2、字符串常量 字符串常量是用双冒号括出来的一串字符序列。 例如:”as”,”a”c语言设计计算器,””(空串)。

3、字符变量 字符变量用来储存一个字符,其定义格式如下: char ch; /*定义一个字符变量ch*/ 含义字符格 12换页 92反斜杠字符 39单引号字符 34双引号字符 13回车,将当前 位置移至本行 开头 \ddd ASCII码为1-3 位8进制数ddd 的数组 10换行,将当前 位置移至下一 行开头 \xhh ASCII码为1-2 位16进制数hh 的数组 常用的转义字符及其意义 练习以下代码观察输出的结果。#include "stdio.h" void main() 试一试问题2.7 定义字符变量,并赋值字符和整型数据 【程序代码】 #include "stdio.h" void main() charc1 c1,c2, c1, c2) c2=98;printf("%c c1,c2, c1, c2) 练习以下代码观察输出的结果。#include "stdio.h" void main() charc1 ,c2 c1=c1-32;c2= c2-32; printf("%c C语言比如允许使用字符常量外,还允许使用字符串常量。字符串常量是一对双引号括起来的数组 序列。如: “How do you do.”,“China”, 可以输出一个字符串,如:printf(“How do you do”); 在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此推断字符串 是否结束。

dc4842c1a0dfc55346097ba353490a98.png

C语言以字符‘\0’作为字符 串结束标志。 问题: 试表明字符串常量和字符常量的区分。 任务3 实现人机对话 设计简单计算器,需要输入操作数1和操作数2的值,程序必须提供人机交互 的方式,以便客户输入数据,计算或处 理完输入数据然后,再把结果告诉客户。 2.2.5 变量的初始化 一、变量初始化 变量的初始化就是在定义函数的同时,给数组赋一个值。这个值是变量形成后 第一次被赋值,所以叫赋初值。 floatx=5.56; char c1=’a’; 只要在定义的之后用赋值运算符赋给该 变量一个值就行。 任务3 实现人机对话 任务分析:设计简单计算器,需要输入操作数1 和操作数2的值,程序必须提供人机交 互的方式,以便客户输入数据,处理完 输入数据然后,再把结果告诉用户,即 输出结果。 2.3.1 C语言无I/O语句,I/O操作由数组实现#include 数据输出: 格式输出变量 printf(“格式控制串”,输出表) 字符输出变量 putchar(c) 数据输入: 格式输入变量 scanf(“格式控制串”,地址表) 字符输入变量 getchar() 任务2确定了一组变量及数据类别,任务3 实现操作数1和操作数2值的输入,并储存到相 应的数组中: printf("请输入第一个操作数:\n"); /*提示输入信息语句*/ scanf("%d", &oper1); /*输入操作数1*/ printf("请输入第二个操作数:\n"); /*提示输入信息语句*/ scanf("%d", &oper2); /*输入操作数2*/ 功能:把字符c输出到显示器上#indude<stdio.h> main #indude<stdio.h>main() {int c=65; char putchar(c);putchar(d); putchar(’A); putchar(65); d=d+32; putchar(d); 运行结果:AAAAa 2.3.2 练一练 练习以下代码观察输出的结果。

#include "stdio.h" void main() putchar('\"');/*输出双引号字符*/ putchar('\x61'); /*输出’a’字符*/ putchar('\\'); /*输出\字符*/ 功能:按指定格式向显示器输出数据输出表:要输出的数据 (可以没有,有多个时以“,”分隔) 格式控制串:包含两种信息 格式说明:%[修饰符]格式字符 用于指定输出格式 普通数组或换行字符:原样输出 输出浮点数,保留6位小数%o输出八进制整数 其他字节:除以上两项字符以外的其他字符都视为普通字符,输出时照原样显示。 问题2.10输出学生的姓名、年龄、学号、成绩、性 别等信息。 【程序代码】 #include "stdio.h" void main() intage=19, num=23; float score=87.5; char sex=m; Rose\n");printf("ID num);printf("Age:%d\tSex:%c\tscore:%f\n", age, sex, score); #include"stdio.h" voidmain() inta=97, b=98; inta=15; floatb=123.1234567; doublec=12345678.1234567; 功能:从屏幕读一个字符#indude<stdio.h> main #indude<stdio.h>main() {char c=getchar();printf(“%c\n”,c); printf(“%d\n”,c); 程序运行时,等等用户在屏幕上输入字符。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-138172-1.html

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的多功能计算器C语言代码,它可以进行加减乘除、开平方、取余、取反等操作: ```c #include <stdio.h> #include <math.h> int main() { double num1, num2, result; char op; printf("请输入要进行的运算 (+, -, *, /, %%, sqrt, neg): "); scanf("%c", &op); switch(op) { case '+': printf("请输入两个加数: "); scanf("%lf %lf", &num1, &num2); result = num1 + num2; printf("结果为: %.2lf\n", result); break; case '-': printf("请输入两个减数: "); scanf("%lf %lf", &num1, &num2); result = num1 - num2; printf("结果为: %.2lf\n", result); break; case '*': printf("请输入两个乘数: "); scanf("%lf %lf", &num1, &num2); result = num1 * num2; printf("结果为: %.2lf\n", result); break; case '/': printf("请输入两个除数: "); scanf("%lf %lf", &num1, &num2); if(num2 == 0) { printf("错误:除数不能为0\n"); break; } result = num1 / num2; printf("结果为: %.2lf\n", result); break; case '%': printf("请输入两个数: "); scanf("%lf %lf", &num1, &num2); result = fmod(num1, num2); printf("结果为: %.2lf\n", result); break; case 's': printf("请输入一个数: "); scanf("%lf", &num1); result = sqrt(num1); printf("结果为: %.2lf\n", result); break; case 'n': printf("请输入一个数: "); scanf("%lf", &num1); result = -num1; printf("结果为: %.2lf\n", result); break; default: printf("错误:无效的运算符\n"); break; } return 0; } ``` 该代码使用了switch语句来判断运算符,然后根据不同的运算符进行相应的计算并输出结果。注意,为了确保精度,我们使用了double类型来存储数字,而不是int类型。另外,我们使用了"%.2lf"来限定输出结果的小数点后两位。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值