c语言 数组(一维、字符)

//  main.m

//  1-16课堂笔记

//讲师:小辉

//笔者:王学文

//  Created by lanouhn on 15/1/16.

//  Copyright (c) 2015年 lanouhn. All rights reserved.

//数组(一维、字符)

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

//数组:用于存储 相同数据类型 的有序队列

//数组定义的格式

//数据类型 变量名[元素个数] = {数值1,数值2,数值3,…}

//整型数组

//    int array[5] = {1, 2, 3, 4, 5};

//

//    //浮点型数组

//    float array1[5] = {1.0, 2.0, 3.0, 4.0, 5.0};

//

//    //数组越界,很危险

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

//

//    //数组定义的方式

//    int b[4] = {1, 2, 3};//1, 2, 3, 0

//

//    int c[4] = {1};//1, 0, 0, 0

//

//    int d[4] = {0};//全为0

//

//    //数组元素个数省略,但是必须赋初值,否则没办法决定元素的个数

//    int e[] = {1, 2, 3, 4};//有四个元素

//

//    int g[] = {0};//有一个元素

//

//    int h[] = {};//0个元素,无意义

//

//sizeof(); 计算 数据类型 或者 变量 所占的字节数

/*

//计算数据类型所占字节数

unsigned long length = sizeof(short);

printf("short:%lu\n", length);

// 计算变量所占的字节数

int i = 0;

printf("int:%lu\n", sizeof(i));

printf("short:%lu\n", sizeof(short));//取值范围:-2^15到2^15-1

printf("int:%lu\n", sizeof(int));//取值范围:-2^31到2^31-1

printf("char:%lu\n", sizeof(char)); //取值范围:-2^7到2^7-1

printf("long:%lu\n", sizeof(long));//取值范围:-2^63到2^63-1

printf("float:%lu\n", sizeof(float));//取值范围:-2^31到2^31-1

printf("double:%lu\n", sizeof(double));//取值范围:-2^63到2^63-1

//数组所占的字节数 = 数据类型所占的字节数 + 数组元素个数

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

printf("%lu\n", sizeof(a));

//数组的使用

int k = 2, j = 3;

//k + j ;

//数组不能够直接参与运算,数组中得元素可以参与运算

int arr1[2] = {1, 2};

int arr2[2] = {4, 5};

//arr1 + arr2

//获取数组中的元素

//格式:数组名[元素下标]

//(*)元素下标从零开始

//原酸下标的范围{0, 数组元素个数-1}

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

printf("%d\n", a[0]);//数组的第一个元素

//数组越界

//a[5]

//定义数组 和 取数组元素 的区别

//1. 定义数组必须有数据类型

//2.定义数组时,元素个数可以省略;取数组元素时,元素下标不能够省略

//遍历数组中每个元素,并打印

for (int i = 0; i <= 4; i++) {

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

}

//对数组中得摸个元素赋值

a[2] = 6;

//定义一个具有20个元素 的 整型数组,每个元素的 取值范围是30-70之间

int a[20] = {0};

int sum = 0;

for (int i = 0; i < 20; i++) {

int temp = arc4random() % 41 + 30;

//int n = 0;

//if (n < 20) {

//  a[n] = temp;

//n++;

//}

a[i] = temp;

sum =sum + temp;

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

}

printf("sum = %d\n", sum);

//复制一个数组,即两个数组容量一样,把其中一个数组的元素复制到另一个数组中

int b[20] = {0};

for (int i = 0; i < 20; i++) {

b[i] = a[i];

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

}

//生成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相加,放到另外一个数组中

//    int a[10] ={0};

//    int b[10] = {0};

//    int c[10] = {0};

//    for (int i = 0; i < 10; i++) {

//        a[i] = arc4random() % 21 + 20;

//        b[i] = arc4random() % 21 + 20;

//        c[i] = a[i] + b[i];

//        printf("a[%d] = %d b[%d] = %d c[%d] = %d\n", i, a[i], i, b[i], i, c[i]);

//    }

//冒泡排序

int a[5] = {10, 2, 6, 8, 4};

//外层循环控制比较的趟数(数组元素个数-1)

for (int i = 0; i < 5-1; i++) {

//内层循环控制每趟比较的次数,两两比较

for (int j = 0; j < 5 - 1 - i; j++) {

if (a[j] > a[j + 1]) {

int temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

}

}

}

//打印数组元素

for (int i = 0; i < 5; i++) {

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

}

//随机产生10个[20,40]的数,并对10个数从小到大排序

int a[10] = {0};

for (int i = 0; i < 10; i++) {

int temp = arc4random() % 21 + 20;

a[i] = temp;

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

}

printf("\n");

for (int i = 0; i < 9; i++) {

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

if (a[j] > a[j + 1]) {

int temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

}

}

}

printf("排序后\n");

for (int i = 0; i < 10; i++) {

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

}

printf("\n");

//字符数组

//写法一

char string[6] = {‘i‘, ‘p‘ ,‘h‘ ,‘o‘ ,‘n‘ ,‘e‘};

//写法二

char string1[6] = "iphone";

//住:两种写法是完全等价的

//定义时没有赋值

int a[5] = {1}; //整型默认是 0

char s[5] = {‘i‘}; //字符型默认是‘\0’

//字符数组的使用

string[2] = ‘s‘;

//遍历数组的每个元素,并打印

char string[8] = {‘i‘, ‘p‘ ,‘h‘ ,‘o‘ ,‘n‘ ,‘e‘, ‘5‘, ‘s‘};

for (int i = 0; i < 8; i++) {

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

}

//%s打印字符数组(一般在数组末尾加上‘\0’)

//string有6个元素,需要手动在数组最后加‘\0’

//string1有7个元素,系统会自动在数组最后加上‘\0’

//如果用%s打印string,由于没有‘\0‘,会造成数组越界

char string[] = {‘i‘, ‘p‘ ,‘h‘ ,‘o‘ ,‘n‘ ,‘e‘};

char string1[] = "1phone";

char string3[6] = {‘i‘, ‘p‘ ,‘h‘ ,‘o‘ ,‘n‘ ,‘e‘};//有6个元素

char string4[6] = "4phone";//有6个元素

printf("string: %s\nstring1: %s\nstring3: %s\nstring4: %s\n", string, string1, string3, string4);

//%s遇到‘\0’就停止

string[2] = ‘\0‘;

printf("string: %s\n", string);

//strlen(const char *)

//计算字符的长度函数

//遇到‘\0‘就结束,并且‘\0‘不计入长度

char string[10] = "I Love U";

string[2] = ‘\0‘;

unsigned long length = strlen(string);

printf("length = %lu\n", length);

//strcpy(字符串1, 字符串2)

//字符串的拷贝

//把字符串2中每一个元素依次拷贝到字符串1中,直到字符串2遇到‘\0‘结束

//(*)字符串1要足够大,以防止越界

char str1[10] = "I Love";

char str2[10] = "you";

strcpy(str1, str2);

printf("str1:%s\n", str1);

printf("str2:%s\n", str2);

*/

//strcat(字符串1, 字符串2)

//字符串拼接函数

//从字符串1的第一个‘\0‘开始把字符串2的每个元素拼接到字符串1,直到字符串2遇到‘\0‘结束

//注:字符串1的空间必须足够大,以防止越界

//    char str1[10] = "I Love";

//    str1[2] = ‘\0‘;

//    char str2[10] = "you";

//    strcat(str1, str2);

//    printf("str1:%s\n", str1);

//    printf("str2:%s\n", str2);

//

//strcmp(字符串1, 字符串2)

//字符串比较函数

//用字符串1中得每个元素 和 对应位置字符串2的元素 的ASCII值相减,如果为0,就继续比较;如果不为0,就停止比较,返回差值;当对应元素都是‘\0‘时,比较停止,返回结果0

//    char str1[10] = "ABC";

//    char str2[10] = "ABC";

//    int result = strcmp(str1, str2);

//    printf("result = %d\n", result);

//

return 0;

}

时间: 2024-08-10 17:02:06

c语言 数组(一维、字符)的相关文章

C语言学习入门 (四) 字符串、字符串数组、字符和字符串相关函数

字符串简介 * 在Java中,一个字符串可以用String类型来存储 String s = "MJ"; C语言中没有String这种类型.其实字符串就是字符序列,由多个字符组成,所以在C语言中,我们可以用字符数组来存储字符串. * 字符串可以看做是一个特殊的字符数组,为了跟普通的字符数组区分开来,应该在字符串的尾部添加了一个结束标志'\0'. '\0'是一个ASCII码值为0的字符,是一个空操作符,表示什么也不干.所以采用字符数组存放字符串,赋值时应包含结束标志'\0'. * 字符串&

输入5个学生的名字(英文),使用冒泡排序按从大到小排序。 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。

#include <stdio.h>#include <string.h> /*输入5个学生的名字(英文),使用冒泡排序按从大到小排序.提示:涉及到字符串数组,一个字符串是一个一维字符数组:一个字符串数组就是一个二维字符数组.*/ void main(){ char stuNames[5][100]; char tmp[100]; int i = 0,j = 0; for(i = 0; i < 5; i++) { printf("请输入第%d个学生的名字:"

关于“C语言中的字符数组和字符串”一些需要注意的基础点

在C语言中,没有类似Java的String类对字符串的处理,字符串的包装可以采用字符数组. 先看字符数组: #include<stdio.h> void main() { char array[] = {'a','b','c'}; int str = sizeof(array)/sizeof(char); printf("%d",str); } 此时的输出结果为:3,即字符数组的长度为3. 下面我们用字符串初始化字符数组,代码如下. #include<stdio.h&

C语言数组与指针

一维数组与指针 int a[10]; int *pa; 一维数组的数组名代表的就是该数组第一个元素的地址,所以复制语句pa=&a[0]等价于pa=a.对数组元素a[i]的引用等价于*(a+i).在计算数组元素a[i]的值时,C语言实际上先将*(a+1)后再进行求值,所以用指针编写的程序比用数组下标编写的程序执行速度快. 数组名和指针之间有一个不同之处,指针是一个变量,pa=a和pa++都是合法的.但数组名不是变量,因此,类似于a=pa和a++形式的语句是非法的. 当把数组名传递给一个函数时,实际

Go语言数组,切片

数组声明 Go 语言数组声明需要指定元素类型及元素个数,语法格式如下: var variable_name [SIZE] variable_type 以上为一维数组的定义方式.数组长度必须是整数且大于 0.例如以下定义了数组 balance 长度为 10 类型为 float32: var balance [10] float32 初始化数组 以下演示了数组初始化: var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} 初始化数组中 {} 中的

C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include <stdlib.h> int main() { int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20098, b4=2; int c1=233, c2=205, c3=1, c4=6666; int d1=34, d2=0, d3

C语言数组的学习

什么是数组? 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组. 在C语言中,数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型.因此按数组元素的类型不同,数组又可分为数值数组.字符数组.指针数组.结构数组等各种类别. 什么是一维数组? 如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 对于数组类型说明应注意以下几点: 不能在方括号中用变量来表示元素的个数,但是可以是符号常数

指针和数组,字符和字符串等易混淆概念举例

指针和数组相关概念 文档不知道从哪搞的,基础知识,觉得有用的可以看看,留存. 有侵权的内容,请及时告知,谢谢! 指针和数组相关概念 ************************************************* 字符与字符串的区别:单引号字符其实就是代表ASCII码的整数,而字符串代表了无名数组起始的指针 指针与数组1:任何一个数组下标运算都等同于一个对应的指针运算:对数组只能知道数组的大小,和获得指向下标为0的指针,intcalendar[12][31];sizeof(ca

c语言-数组+字符串处理函数

一.构造类型 基本概念: (1)在C语言中,变量类型除了几种基本类型之外,还有另外一些复杂类型,合称为构造类型. (2)构造类型:是由基本类型构造而成的(如数组.结构体.共同体.枚举型). (3)构造类型的每一个分量是一个变量,它可以是一个简单类型或者构造类型. (4)构造类型的分量的使用方法与简单变量相同 (5)构造类型的分量占用相邻的存储空间. (6)对于构造类型的变量来说,重点是访问其分量的方法. 二.数组 数组概念:按序排列的具有相同类型的变量的集合 (1)用一符号名(数组名)来表示这一

实验九:二维数组和字符数组的应用

知识点: 二维数组的定义及引用:1.二维数组的定义: 二维数组的定义形式:类型名   数组名[行长度][列长度]:例如:        int  a[3][2]:        定义1个二维数组a,3行2列,6个元素: int   b[5][10]:        定义1个二维数组a,5行10列,50个元素: 二维数组的引用:行下标的范围:0~行长度-1:                        列下表的范围:0~列长度-1: 字符串的存储和运算可以用一维字符数组实现: 一维字符数组的定义