C++(竞赛)【5】

作者: C入禅 | 来源:发表于2019-07-18 22:55 被阅读24次

<-上一篇


数据类型

在上一篇文章中我们多次提到了一个东西——数据类型
其实现在要谈的就是TA了

我们可以把我们输入到计算机内的数据都想象为放在一个个盒子里面,需要的时候拿出来用就叫做调用;而这些盒子就叫做变量;每一个盒子我们都要给TA取一个名字,就叫做变量名,我们还必须告诉计算机这个盒子叫什么,这就叫做定义或者申明,而且不同大小不同款式的盒子还有有姓吧,那就是数据类型,一个人要有名有姓而且还要户口登记,那么一个变量就要有变量名数据类型而且还要变量申明(至于有多少数据类型,我们以后分解,当然你也可以查查资料)

这个是我在上一篇文章里就提过的数据类型,下面有一个略微准确的定义:

使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当我们创建一个变量时,就会在内存中保留一些空间。需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。

  • 为了严谨性和准确性我查了查百度和各种资料 :


    百度
  • 常量是有类型的数据,变量在某一固定时刻用来存储一个常量,因此也应有相应的类型。如整型变量用来存储整数,实型变量用来存储实数。变量的类型,可以是标准数据类型int、short、long、float、double和char等,也可以是用户自定义的各种类型。(其实吧数据类型就是变量的类型):


    数据类型
  • 对于基本的数据类型我们可以用以下的修饰词进行修饰:
    • signed(带符号)
    • unsigned(无符号)
    • short(短)
    • long(长)
      各数据类型范围和字节
      各操作系统可能会有差异,请用下面的测试程序查看自己电脑的情况:
#include<iostream>  
#include<string>  
#include <limits>  
using namespace std;  
  
int main()  
{  
    cout << "bool: \t\t" << "所占字节数:" << sizeof(bool);  
    cout << "\t最大值:" << (numeric_limits<bool>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<bool>::min)() << endl;  
    cout << "char: \t\t" << "所占字节数:" << sizeof(char);  
    cout << "\t最大值:" << (numeric_limits<char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<char>::min)() << endl;  
    cout << "signed char: \t" << "所占字节数:" << sizeof(signed char);  
    cout << "\t最大值:" << (numeric_limits<signed char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<signed char>::min)() << endl;  
    cout << "unsigned char: \t" << "所占字节数:" << sizeof(unsigned char);  
    cout << "\t最大值:" << (numeric_limits<unsigned char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<unsigned char>::min)() << endl;  
    cout << "wchar_t: \t" << "所占字节数:" << sizeof(wchar_t);  
    cout << "\t最大值:" << (numeric_limits<wchar_t>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<wchar_t>::min)() << endl;  
    cout << "short: \t\t" << "所占字节数:" << sizeof(short);  
    cout << "\t最大值:" << (numeric_limits<short>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<short>::min)() << endl;  
    cout << "int: \t\t" << "所占字节数:" << sizeof(int);  
    cout << "\t最大值:" << (numeric_limits<int>::max)();  
    cout << "\t最小值:" << (numeric_limits<int>::min)() << endl;  
    cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);  
    cout << "\t最大值:" << (numeric_limits<unsigned>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned>::min)() << endl;  
    cout << "long: \t\t" << "所占字节数:" << sizeof(long);  
    cout << "\t最大值:" << (numeric_limits<long>::max)();  
    cout << "\t最小值:" << (numeric_limits<long>::min)() << endl;  
    cout << "unsigned long: \t" << "所占字节数:" << sizeof(unsigned long);  
    cout << "\t最大值:" << (numeric_limits<unsigned long>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned long>::min)() << endl;  
    cout << "double: \t" << "所占字节数:" << sizeof(double);  
    cout << "\t最大值:" << (numeric_limits<double>::max)();  
    cout << "\t最小值:" << (numeric_limits<double>::min)() << endl;  
    cout << "long double: \t" << "所占字节数:" << sizeof(long double);  
    cout << "\t最大值:" << (numeric_limits<long double>::max)();  
    cout << "\t最小值:" << (numeric_limits<long double>::min)() << endl;  
    cout << "float: \t\t" << "所占字节数:" << sizeof(float);  
    cout << "\t最大值:" << (numeric_limits<float>::max)();  
    cout << "\t最小值:" << (numeric_limits<float>::min)() << endl;  
    cout << "size_t: \t" << "所占字节数:" << sizeof(size_t);  
    cout << "\t最大值:" << (numeric_limits<size_t>::max)();  
    cout << "\t最小值:" << (numeric_limits<size_t>::min)() << endl;  
    cout << "string: \t" << "所占字节数:" << sizeof(string) << endl;  
    // << "\t最大值:" << (numeric_limits<string>::max)() << "\t最小值:" << (numeric_limits<string>::min)() << endl;  
    cout << "type: \t\t" << "************size**************"<< endl;  
             return 0;  
}

——[来自《信息学奥数一本通(C++版)》]

那么概念说这么多也没什么意义,就是大概了解一下有一个大致的框架,剩下的就靠实践来理解了。


  • 接着来解决小茗同学的问题:
    • 现在我们要帮小茗完成后面的更难的一些题目,在题目中出现了有小数点的数,本着帮人帮到底,送佛送到西的原则,我们就帮他解决这个问题吧。
      • 我们还是先来做加法的运算,首先来分析:

在运算上这个的需求和我们之前写过的那个程序是一模一样,怪就怪在TA是有小数的运算: 那我们就直接定义一个可以装小数的变量就行了啊

  • 我们现在来选择类型,稍微选择一下我们可以得到:


    数据类型选择
  • 那就好了嘛,在没有准确的精度和数据要求时候我们就随意在这三个里面选就是了,建议使用doubleTA比fioat更精确,在相同的范围内所占内存仅为long double的一半,当然还是要注意一些题目的要求不能盲目自信
    那么剩下的就和之前一样了。
    加法:
/*开头的三行就不用多做解释了,
有问题请看上一篇,
后面就不做解释了。 
*/ 
#include<iostream>
using namespace std; 
int main()
{
    //我们先申明三个变量a,b,sum 
    double a,b,sum;
    //利用cin从键盘读入a,b两个变量的值 
    cin>>a>>b;
    //计算出a+b的值sum 
    sum=a+b;
    //输出sum的值 
    cout<<sum<<endl; 
    return 0; 
} 

如果不想定义三个变量也可这样:

/*开头的三行就不用多做解释了,
有问题请看上一篇,
后面就不做解释了。 
*/ 
#include<iostream>
using namespace std; 
int main()
{
    //我们先申明两个变量a,b 
    double a,b;
    //利用cin从键盘读入a,b两个变量的值 
    cin>>a>>b;
    //输出a+b的值 
    cout<<a+b<<endl; 
    return 0; 
} 

这样写是因为c++中的输出语句中是允许有表达式的,看个人喜好而定吧


关注我的专题我们一起努力


<-上一篇

相关文章

  • C++(竞赛)【5】

    <-上一篇 数据类型 在上一篇文章中我们多次提到了一个东西——数据类型其实现在要谈的就是TA了 我们可以把我们输入...

  • 用快速幂运算求斐波那契,时间复杂度降到O(logn)

    思路来自《挑战程序设计竞赛》 可运行的C++代码如下

  • C++(竞赛)【11】

    <- 程序调试 小的点【4.终章】 Aout 学习笔记那些事情: 上课笔记不好,下课学到你娃哭。这大概是我在高中混...

  • C++(竞赛)【12】

    <- 简单笔记攻略 Markdown简单入门操作 环境需求: 我们需要一些Markdown的编译器: 线上:1.简...

  • C++(竞赛)【14】

    <- while的循环体系【1】 while的循环体系【2】 我们之前的while是用结果来限制循环次数的,那么问...

  • C++(竞赛)【8】

    <- switch 趣谈 大战Dev-C++ -> 小的点【1】 之前的东西已经学的有一点了,但是有很多...

  • C++(竞赛)【9】

    <-注释略解 小的点【2】 想必大家都对信息学奥赛要求的编译器丑哭了吧,(而且非常不好用),我们平时还可以用VS来...

  • C++(竞赛)【7】

    <-if 那些事 程序的控制结构【1.2】 switch语句的开心时光: 有了上一篇的快乐想都不想,今天一定是sw...

  • C++(竞赛)【15】

    <- while的循环体系【2】 while的亲兄弟啊——do-while【1】 前面我们刚刚看了while的一系...

  • C++(竞赛)【16】

    <-while的亲兄弟啊 循环的嵌套 终于要结束这该死的循环了,是不是很兴奋?先兴奋一下吧(我才不会告诉你前面只是...

网友评论

    本文标题:C++(竞赛)【5】

    本文链接:https://www.haomeiwen.com/subject/moqdlctx.html