2.C/C++数据类型

数据类型分为:简单类型 和 结构类型

1.简单类型有:整数类型、字符类型、浮点类型、指针类型、枚举类型和void类型.

举例如下:
#include<iostream.h>
void main()
{
            enum Boolean{False,True};
            cout<<sizeof(char)<<" "
                <<sizeof(short)<<" "
                <<sizeof(long)<<" "
                <<sizeof(float)<<" "
                <<sizeof(double)<<" "
                <<sizeof(long double)<<" "
                <<sizeof(void *)<<" "
                <<sizeof(Boolean)<<" "
                <<endl;
}

/*
1 2 4 4 8 8 4 4
Press any key to continue
*/

2.结构类型有:数组、字符串、记录和文件等.
(1)数组类型:具有一定数目的同一类型的顺序组合

举例如下:

Code

 (2)字符串
1)字符串类型是一种特殊的一维字符数组类型,该类型中的每一个值,从下标0位置保存的字符起到下标i位置(0<=i<=n-1,n为一维下标上界)保存的ASCII码为0的空字符'"0'止,连续i个字符(不含'"0'字符在内)称为一个字符串.
2)一个字符串常量是用双引号括起来的一串字符,但把它作为初值赋给一个字符数组时,是把该常量中的每个字符依次写入到字符数组中从下标0开始的对应位置上,并在最后写入一个'"0'字符作为字符串的结束标志。
3)字符数组在定义时可以赋初值,但在其它地方必须用strcpy函数。
4)操作:求串长,串拷贝,串比较,串输入输出等。
5)一维数组:保存一个字符串;二维数组:保存多个字符串.
#include<iostream.h>
#include<string.h>
void main()
{
        //定义一个二维数组a并对其进行初始化
        char a[4][20] = {"Beijing","Shanghai","Tianjin","Hefei"};
        //定义一个一维字符数组p,用于存放值最大的字符串
        char p[20];
        
        //输出数组a中的所有字符串
        for(int i = 0;i < 20;i++)
        {
                cout<<&a[i][0]<<endl;  // or cout<<a[i]<<endl;
        }
        
        //顺序比较查找出字符数组a中值最大的字符串
        strcpy(p,&a[0][0]);   //strcpy(p,a[0]);
        for(i = 1;i < 4;i++)
        {
                if(strcmp(p,&a[i][0]) < 0)
                {
                        strcpy(p,&a[i][0]);
                }
        }
        cout<<p<<endl;
}

/*
Beijing
Shanghai
Tianjin
Hefei

Tianjin
Press any key to continue

*/

 (3)记录类型
1)多个不同类型(当然也可以相同)的组合体。
2)在C/C++中,记录称作为结构,用struct来定义
3)成员选择操作符有两种:
a. 直接成员选择符: .   其左面的操作数为:一个记录类型的对象
b. 间接成员选择符: ->  其左面的操作数为:一个指向记录类型对象的指针

 例一如下:

 

#include<iostream.h>

#include<string.h>
#include<iomanip.h>
struct student
{
        char num[8];       //每个学号不能超过7个字符
        char name[10];   //姓名不能超过9个字符
        char sex;            //假定用字符f和m分别表示女性和男性
        double result[6];  //前5个元素位置保存5门课程成绩,最后一个位置保存平均成绩
}; //整个记录类型所对应存储空间大小:8+12+4+48=72(个字节)
   //想一想:为什么不是:8+10+1+48=67
void main()
{
        student s1 = {"980413","张三",'m',{76,83,64,90,75,0}};
        //int size = sizeof(struct student);
        //cout<<size<<endl;
        double temp = 0.0;
        for(int i = 0;i < 5;i++)
        {
                s1.result[5] += s1.result[i]/5;
                //等价于下面两句
                //temp = s1.result[i]/5;
                //s1.result[5] = s1.result[5] + temp;
        }
        cout<<s1.num<<" "
                <<s1.name<<" "
                <<s1.sex<<" "
                <<s1.result[5]<<endl;
}
/*
980413 张三 m 77.6
Press any key to continue

*/

例二如下:

 #include<iostream.h>
#include<iomanip.h>
struct person
{
        char name[15];
        int age;
        person * next;
};
void main()
{
        person r1 = {"zhangsan",38},
                   r2 = {"lishi",34},
                   r3 = {"wangwu",42};
        person *p;
        r1.next = &r2;
        r2.next = &r3;
        r3.next = NULL;
        p = &r1;
        cout.setf(ios::left); //使显示数据在规定范围内左对齐
        while(p != NULL)
        {
                cout<<setw(15)<<p->name
                        <<setw(5 )<<p->age<<endl;
                p = p->next;
        }
}
/*
zhangsan       38
lishi               34
wangwu         42
Press any key to continue

*/

 

(4)文件
1)文件是按位置有序的集合.
2)在计算机中,文件被存放在外存上,其存储结构由操作系统自动实现.
3)C++中,通过定义与文件相对应的文件流来使用文件
4)输入文件流: 数据从文件----> 文件内存缓存区----->内存中的变量中
   输出文件流: 数据先写到 ----> 文件内存缓存区 -----> 文件
代码举例如下:
#include<iostream.h>
#include "stdlib.h"
#include "fstream.h"
//把从键盘上输入的文本原封不动地写入到D盘上wr1.dat文件中
void main()
{
        char ch;
        
        //建立文个输出流,使之与D盘上的文件wr1.dat对应
        ofstream of1("D:wr1.dat");

        //从键盘上输入一个字符到字符变量ch中
        ch = cin.get();

        //如果字符不是文件结束符EOF,则将字符写入输出文件流对应的文件中
        while (ch != EOF) // 按下Ctrl+Z表示输入的是EOF
        {
                of1.put(ch);
                ch = cin.get();
        }
        of1.close();
}
举例之二如下:
#include "iostream.h"
#include "stdlib.h"
#include "fstream.h"
//程序以输入方式打开刚刚在D盘上建立的wr1.dat文件,把文件中的全部内容输出到
//屏幕,统计出文件中所包含文本的行数,最后显示出文件长度和行数
void main()
{
        ifstream if1("D:wr1.dat",ios::nocreate);
        if (!if1)
        {
                cout<<"file not open";
                exit(1);
        }
        char ch;
        int i = 0;          // i 用于记录文件中内容的行数
        if1.get(ch);        //通过输入文件流从文件中读取一个字符到ch中
        while (ch != EOF)
        {
                cout<<ch;
                if (ch == '"n')
                {
                        i = i + 1;   
                }
                if1.get(ch);
        }
        cout<<if1.tellg()<<endl;
        if1.close();
        cout<<i<<endl;
}

/-----------------------------------------------------------------------/

posted @ 2008-10-07 17:20  zqblog007  阅读(256)  评论(0编辑  收藏  举报