10-char类型,字符串以及数组

一、    char类型

1.        存储细节

ASCII单字节表(双字节GBK\GB2312\GB18030\Unicode)

2.        常见错误

char c = A;

char c = "A";

char c = 'ABCD';

char c = '男';

3.   当做整型使用

在-128~127范围内,可以当做整数来用

4.   %c和%d\%i的使用

printf(“%d”, ‘A’);

printf(“%c”, 68);

5.   转义字符

转义字符

意义

ASCII码值

\n

将当前位置移到下一行开头(回车换行)

10

\t

跳到下一个TAB位置

9

\\

代表一个反斜线字符

92

\'

代表一个单引号字符

39

\"

代表一个双引号字符

34

\0

空字符

0

 

6.   习题

  1. 编写一个函数,将小写字母转为大

    

2.写一个函数,将小写字母转为大写 

char upper(char c)

{

    // 如果是小写字母,就转成大写

    /*

    if (c>='a' && c<='z') { // ['a', 'z']

        return c - ('a'-'A');

    } else {// 如果不是小写字母,返回字母本身

        return c;

    }*/

    // 如果是小写字母,就转成大写

    if (c>='a' && c<='z') { // ['a', 'z']

        return c - ('a'-'A');

    }

    // 如果不是小写字母,返回字母本身

    return c;

}

 

int main()

{

    char cc = upper('f');    

    printf("%c\n", cc);

    return 0;

}

  

      2.说出程序的输出结果

int main()

{

    int i = 67 + '4';

    char c = 'c' - 10;

    printf("%d - %c\n", i, i);

    printf("%d - %c\n", c, c);

    return 0;

}

一、  数组的基本概念

一个int类型的变量能保存一个人的年龄,如果想保存整个班的年龄呢?

1.     什么是数组

数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的

2.     数组的特点

l   只能存放一种类型的数据,比如int类型的数组、float类型的数组

l   里面存放的数据称为“元素”

 

二、  数组的定义

1.     定义

l   声明数组的类型

l   声明数组的元素个数(需要多少存储空间)

2.     格式

元素类型 数组名[元素个数];

比如:int ages[3];

3.     简单使用

l   简单初始化:int ages[5] = {19, 19, 20, 21, 25};

l   元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始

l   数组元素的访问:a[i]

4.     初始化

l   初始化方式

u  int a[3] = {10, 9, 6};

u  int a[3] = {10,9};

u  int a[] = {11, 7, 6};

u  int a[4] = {[1]=11,[0] = 7};

l   常见错误

u  int a[];

u  int[4] a;

u  int a[b];

u  a = {10, 11};

u  a[4] = {10,9,8,5};

5.     内存分析

l   数组存储空间的大小

l   存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)

l   数组名的作用,查看元素地址

l   数组越界的注意

6.     其他使用

l   数组与函数参数

u  数组元素作为函数参数

u  数组作为函数参数(sizeof注意)

l   遍历数组元素

u  两种方式遍历(while循环和for循环)

u  遍历元素值和元素地址

u  字符数组的使用

7.     习题

1>   提示输入5个学生的成绩,算出平均分、最高分、最低分,然后输出

2>   设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值

3>   设计一个函数:int arraySum(int a[], int n),求一维数组a前n个数的和

4>   设计一个函数:将一维整型数组中的元素逆序存放。比如本来是1,3,4,2,逆序存放就变成了:2,4,3,1

 

三、  二维数组

1.     什么是二维数组

l   一个数组能表示一个班人的年龄,如果想表示很多班呢?

l   什么是二维数组?int ages[3][10]; 三个班,每个班10个人

l   相当于3行10列

l   相当于装着3个一维数组

l   二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素

 

 

2.     存储

l   存储大小

l   存储结构和顺序

l   存储地址问题

 

3.     初始化

l   int a[3][4] = {1,2,3,4,5,6};

l   int a[3][4] = {{},{},{}};

l   数组元素简单访问

l   int a[][5] = {3,21,31,2,32,1};

l   注意错误:

int a[3][4];

a[3] = {};

 

4.     遍历

l   遍历所有的元素

l   遍历地址 

四、    字符串

1.     什么是字符串

l   简单的字符串”itcast”

l   一个’i’是一个字符

l   很多个字符组合在一起就是字符串了

2.     字符串的初始化

l   char a[] = “123”;  和 char a [] = {‘1’,’2’,’3’};的区别,可以比较大小

l   “123”其实是由’1’、’2’、’3’、’\0’组成

l   “123”的存储分布

l   字符串的输出”%s”,’\0’是不会输出的

3.     \0的作用

l   输出char a[] = {‘o’,’k’};

l   在char a[]前面搞个”mj”

l   输出”mj”

l   再输出a

l   char a[] = {‘i’,’t’,’\0’,’c’};

4.     常用字符串处理函数

l   strlen(注意中文)

5. 习题

编写一个函数char_contains(char str[],char c),如果字符串str中包含字符c则返回数值1,否则返回数值0

 

五、    字符串数组

1.使用场合

* 一维字符数组中存放一个字符串,比如一个名字char name[20] = "mj"

* 如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,char names[15][20]可以存放15个学生的姓名(假设姓名不超过20字符)

* 如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20]

2.初始化

char names[2][10] = { {'J','a','y','\0'}, {'J','i','m','\0'} }; 

char names2[2][10] = { {"Jay"}, {"Jim"} }; 

char names3[2][10] = { "Jay", "Jim" };

 

 

 

#include <stdio.h>

int main()
{
    // 使用注意
    // 都是正确写法
    //int ages[5] = {10 , 11, 12, 67, 56};
    //int ages[5] = {10, 11};
    //int ages[5] = {[3] = 10, [4] = 11};
    //int ages[] = {10, 11, 14};
    
    // 错误写法
    // int ages[];
    
    // 错误写法
    /* 只能在定义数组的同时进行初始化
    int ages[5];
    ages = {10, 11, 12, 14};
    */
    
    // 正确写法
    // int ages['A'-50] = {10, 11, 12, 14, 16};
    //int size = sizeof(ages);
    //printf("%d\n", size);
    
    // 正确写法
    /*
    int count = 5;
    int ages[count];
    ages[0] = 10;
    ages[1] = 11;
    ages[2] = 18;
    */
    
    //printf();
    // 错误写法
    // 如果想再定义数组的同事进行初始化,数组元素个数必须是常量,或者不写
    //int ages[count] = {10, 11, 12};
    
    
    int ages[] = {10, 11, 12, 78};
    
    // 计算数组元素的个数
    int count = sizeof(ages)/sizeof(int);
    
    for (int i = 0; i<count; i++)
    {
        printf("ages[%d]=%d\n", i, ages[i]);
    }
    
    return 0;
}

// 数组的基本使用
void arrayUse()
{
    // 数组的定义格式: 类型 数组名[元素个数];
    int ages[5] = {19, 29, 28, 27, 26};
    // 19 19 28 27 26]
    ages[1] = 29;
    
    /*
     ages[0] = 19;
     ages[1] = 19;
     ages[2] = 28;
     ages[3] = 27;
     ages[4] = 26;
     */
    
    /*
     遍历:按顺序查看数组的每一个元素
     */
    for (int i = 0; i<5; i++)
    {
        printf("ages[%d]=%d\n", i, ages[i]);
    }
}

  

 

  

posted on 2014-04-12 23:09  ゴルツの惠斌纳閣下  阅读(345)  评论(0编辑  收藏  举报