审题
原题
a+b
设计一个程序 输入两个整数a和b, 输出a+b的值
样例输入: 1 2
样例输出: 3
拓展
-
需求
1、输入任意值,后可以进行加减乘除计算
2、用户可以选用上次的显示值 继续进行 加减乘除
(【暂时不考虑】)
3、可以进行复杂运算(原理同需求2、)
(【暂时不考虑】如果一长个式子加减乘除运算同时存在,如何判断顺序,若加()则如何使()起作用
或可一个长式子运算时,可从左往右检验符号)
4、设置退出键,在计算结束后可按键退出 -
步骤
1、开机欢迎界面(仅显示一次)
2、显示:请输入
3、输入数字与运算符号
4、按回车->读取并进行运算
5、显示
6、进行循环
7、退出(可跨过步骤6、) -
注意
1、输入值一定会存在范围,需要设置范围
存在小数,所以用double型,double型注意读到小数点后几位 -
问题
1、如何进行数字与运算符号的读取
想法:1、需要边输入边显示 使用一个变量进行数据的保存
关键是如何在按下符号键时知道终止数字的输入并与其后输入的数字进行相应运算
2、运算如何进行
想法:1、将原来的数设置为一个变量,接着将所输入的数作为一个变量,两个变量进行运算,其值赋予本句第一个变量
源码
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <windows.h>
void SetTitle(char *title)
{
SetConsoleTitle(title); //SetConsoleTitle()为<windows.h>中的函数
}
int main()
{
double a,b,c; //用于计算的变量
int sign; //用于存放输入的符号
int i; //用于控制打印的动画效果
SetTitle("【婳骨】牌平平无奇计算器");
printf("开机中");
for(i = 0; i < 3; i++)
{
printf("……");
Sleep(1000);
}
printf("\n");
while(1) //使得程序能够不自动退出
{
printf("*******************************************\n");
printf("欢迎使用【婳骨】牌平平无奇计算器!(支持±10000以内加减乘除)\n");
printf("*******************************************\n");
for(a = 10001; a < -10000 || a > 10000; )
{
printf("请输入第一个数字(回车以确认,超了或错了请重输):\n");
scanf("%lf", &a); //将值赋值给a
fflush(stdin);
}
for(sign = 0; sign != '+' && sign != '-' && sign != '*' && sign != '/'; ) //确认符号属于四则运算
{
printf("请输入进行的四则运算(输错了自动会让你再输哦~)\n");
sign = getch();
}
for(b = 10001; b < -10000 || b > 10000; )
{
printf("请输入第二个数字(回车以确认,超了或错了请重输):\n");
scanf("%lf", &b); //将值赋值给b
fflush(stdin);
}
switch(sign){
case '+': //输入+
c = a + b;
printf("%.2f=%.2f+%.2f\n", c, a, b);
break;
case '-': //输入-
c = a - b;
printf("%.2f=%.2f-%.2f\n", c, a, b);
break;
case '*': //输入*
c = a * b;
printf("%.2f=%.2f*%.2f\n", c, a, b);
break;
case '/': //输入/
c = a / b;
printf("%.2f=%.2f/%.2f\n", c, a, b);
break;
default:
break;
}
printf("按任意键继续,0键退出\n"); //确认是否继续
sign = getch();
if(sign == '0')
{
exit(0); //退出
}
system("cls"); //清屏
}
return 0;
}
//完事 循环的运用倒是会了些 以及对数据类型的理解
部分功能展示
知识点
数据类型
有符号整数类型
类型名称 | 字节数 | 取值范围 |
---|---|---|
signed char | 1 | -2^7(-128) ~ 2^7-1(127) |
short int 或 short | 2 | -2^15(-32 768) ~ 2^15-1(32 767) |
int | 4 | –2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647) |
long int 或 long | 4 | -2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647) |
long long int 或 long long | 8 | -2^63(-9.2233720368548e+18) ~ 2^63-1(9.2233720368548e+18) |
无符号整数类型
类型名称 | 字节数 | 取值范围 |
---|---|---|
unsigned char | 1 | 0 ~ 2^8-1(255) |
unsigned short int 或 unsigned short | 2 | 0 ~ 2^16-1(65 535) |
unsigned int | 4 | 0 ~ 2^32-1(4 294 967 295) |
unsigned long int 或 unsigned long | 4 | 0 ~ 2^32-1(4 294 967 295) |
unsigned long long int 或 unsigned long long | 8 | 0 ~ 2^64-1(1.844674407371e+19) |
浮点类型
类型名称 | 字节数 | 取值范围 |
---|---|---|
float | 4 | -/+3.4e38(精确到6位小数) |
double | 8 | -/+1.7e308(精确到15位小数) |
long double | 12 | -/+1.19e4932(精确到18位小数) |
(以上借鉴了网上前辈所总结的)
总结
百度是个好东西
(然后跳转进CSDN)