码迷,mamicode.com
首页 > 编程语言 > 详细

黑马程序员--数组与字符串

时间:2015-03-31 00:27:46      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

数组

 

用来存储一组数据

特点:只能存储一种类型的数据

格式: 格式类型数组名 [元素个数];

              int a[10];  //定义一个整形的数组a 里面包含10个元素,下标从0开始,即a[0],a[1]…a[9] 10个数据

 

数组必须先定义然后才能使用/

数组的初始化

  1. 可以再定义数组时进行赋值

例 a[5]={0,1,2,3,4};   定义的初值一次放在一对花括号内,经过上面的定义和初始化后 a[0] = 0;

  1. 如果想在定义数组的同时进行初始化,数组火元素个数必须是常量或者不写

int a[]={1,2,3}; 

如果写成int a[5]= {1,2,3};  则后两个元素为0

int a[‘A’]= [1,2,3,4];  //正确写法

int count = 5;

int [count] = {1,2,3,4,5};  //错误写法 []里只能放常量不能放变量

 

int a[5];

a[5] = {1,2,3,4,5}; //错误写法必须在定义数组时进行初始化或单独赋值

//计算数组的个数

int ages[] = {10, 11, 12, 78};

 // 计算数组元素的个数

int count = sizeof(ages)/sizeof(int);

//数组的遍历:按顺序查看数组的每一个元素

    for (inti = 0; i<count; i++)  {

printf("ages[%d]=%d\n", i, ages[i]);

 }

 

数组和函数的注意

数组作为函数参数可以省略元素个数

数组作为函数参数传递是整个数组的地址修改函数形参数组元素的值会影响外面的实参数组

 

数组的一个经典案例,冒泡排序法,

例:通过冒泡排序对10个数进行从小到大排序

//如果有n个数,则要进行n-1趟比较,在第一趟比较中要进行n-1次两两比较.在第j趟比较重要进行n-j次两两比较此刻 n=10

#include<stdio.h>

int main()

{

    int a[11];

    int temp;

    printf("输入10个数字:\n");

    for (inti = 1; i<=10; i++) {//将数存储到a[1]--a[10]中

   scanf("%d",&a[i]);//通过数组存储用户输入的数值

   }

 

    for(int j = 1;j<=9;j++){

    for (inti = 1; i<= 10- j; i++) {

    if (a[i] < a[i+1]) {
    
    a[i] = temp;

    a[i+1] =a[i];

    a[i+1]=temp;

      }

    }

}

    for (inti =1;i<=10;i++){

    printf("%d  ",a[i]);

}
    return 0;

}

 

二维数组

 

二维数组定义

类型说明符数组名[常量表达式][常量表达式];

例如

int a[3][4];

定义a位3行4列的数组,不能写成int a[3,4];

数组的初始化

int a[3][4]={{1,2,3,4},

                {5,6,7,8},

                {1,2,3,4}};

字符串

“jack”==’j’+’a’+’c’+’k’+’\0’;由5个字符组成

 

定义数组存储字符串

char name[]=”jack”;

char name[8]={‘j’,’a’,’c’,’k’,’\0’};//是一个字符串 \0是字符串结束的标志

char name[5]={‘a’,’b’};这种写法不能说是一个字符串,只能是一个字符数组

 

字符串的占位符是%s

charname[]=”jakk”;

name [2] = ‘c‘;

printf("%s",name);

 

strlen函数 :计算字符串长度包含在<string.h>

计算字符数不包括\0从某个地址开始计算字符的个数直达遇到\0为止

strlen(“哈haha”) == 7; 一个汉字占3个字节

char name[aaaa\0aa];

strlen name == 4;

 

以入学测试题的一套题为例

 

/*编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。比如245a95n加密后是245bcd95opq。(C语言)

*/

#include<stdio.h>

#include<string.h>

 

int main(intargc, constchar * argv[]) {

 

char array[100];    //定义一个字符串数组用于存储输入的字符串

printf("输入一串字母加数字,进行加密:\n");

scanf("%s",&array);     //读取输入的字符串

 

for(inti= 0 ;i<strlen(array);i++)

    {

if((array[i]>=a&& array[i]<x)|| (array[i]>=A&& array[i]<X)) //如果输入的字符是a-x之间或者A-X之间,输入其后三个字母

        {

printf("%c%c%c",array[i]+1,array[i]+2,array[i]+3);

        }

elseif(array[i] == x||array[i] == X)//如果输入的字符是x或X,则用yza或YZA加密

            {

printf("%c%c%c",array[i]+1,array[i]+2,array[i]+3-26);

            }

elseif(array[i] == y||array[i] == Y)//如果输入的字符是y或Y,则用yza或YZA加密

        {

printf("%c%c%c",array[i]+1,array[i]+2-26,array[i]+3-26);

        }

elseif(array[i] == z||array[i] == Z)//如果输入的字符是z或Z,则用zab或ZAB加密

        {

printf("%c%c%c",array[i]+1-26,array[i]+2-26,array[i]+3-26);

        }

else{

printf("%c",array[i]);//如果是其他,正常输出

 

        }

    }

//printf("%s",array);

 

}

 

 

黑马程序员--数组与字符串

标签:

原文地址:http://www.cnblogs.com/lxiaohei103/p/4379395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!