C语言第四天课堂笔记<详细+注释>

这篇博客详细介绍了C语言中数组的定义与使用,包括数组的初始化、元素访问、数组元素的修改、数组遍历,以及字符串操作。还涉及到数组元素的随机赋值、数组的复制、数组元素的相加、数组的排序、字符串拷贝和拼接、字符串比较和查找空格数量等操作。
摘要由CSDN通过智能技术生成

**// 数组定义:保存同种数据类型的多个数据

//  声明一个数组 保存年龄
//  [n] n 代表数组中元素的个数
//  {} 中值 是数据中元素的初值 用逗号隔开
//  int  表示数组中每一个元素的数据类型
// 声明数组的公式 数据类型 数组名[常量表达式] = {初值1, 初值2...., 初值(常量表达式)};

// int ageArray[3] = {27, 19, 22};

// 数组元素个数可以用变量来表示,但是不可以进行初始化
// int count = 5;
// int array[count] = {1, 3, 5, 7, 9};是错误的

// 输入声明数组是 数组元素的个数 大于 给出的数组的元素初值的个数 系统会自动补0

// int array2[5] = {2, 5, 7};

// 相当于int array3[5] = {0, 0, 0, 0, 0};

// int array3[5] = {0};

// 声明的时候没有给定元素个数 那么初值有几个元素 这个数组就有几个元素

// int array4[] = {1, 4, 6, 7, 9};

// 声明一个字符类型的数组

// char str[10] = {‘i’, ‘p’, ‘h’, ‘o’, ‘n’, ‘e’};
// 字符串
// char str1[10] = “iphone”;
//
// for( int i = 0; i < 10; i++)
// {
// printf(“%c\n”,str[i]);
// printf(“%c\n”,str1[i]);
// }
//
// 取出数组中的元素
// 使用数组名[下标] 切记:下标从0开始
//
// int array[6] = {27, 19, 22, 26 ,23, 18};
// printf(“%d “,array[1]);
// // 修改鹏举的年龄 19-39(真实年龄)
// array[1] = 39;
// printf(“%d “,array[1]);
// printf(“\n”);
// // 输出(打印)数组中的所有元素
// //循环输出
// for (int i = 0; i < 6; i++) {
// printf(“%d “,array[i]);
// }
// printf(“\n”);

// 1、定义⼀个具有20个元素的整型数组,每个元素的取值范围是
// 30-70之间,求数组元素的和。

// int a[20] = {0};
// int sum = 0;
// 遍历数组
// for (int i = 0; i < 20; i++) {
// a[i] = arc4random() % 41 + 40;
// printf(“a[%d] = %d\n”,i,a[i]);
// sum = sum + a[i]; //相当于 sum += a[i];
// }
// printf(“sum:%d”,sum);

// 2、复制⼀个数组,即两个数组容量⼀样,把其中⼀个数组中的
// 元素复制到另外⼀个数组中。
// 实现两个数组的交换
// int a[5] = {1, 2, 3, 4, 5};
// int b[5] = {6, 7, 8, 9, 10};
// int temp[5] = {0};
// for (int i = 0; i < 5; i++) {
// temp[i] = a[i];
// a[i] = b[i];
// b[i] = temp[i];
// }
// for (int i = 0; i < 5; i++) {
// printf(“a[%d] = %d\n”,i,a[i]);
// }
// for (int i = 0; i < 5; i++) {
// printf(“b[%d] = %d\n”,i,b[i]);
// }

// 3、⽣成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;
// printf(“a[%d] = %d “,i,a[i]);
// b[i] = arc4random() % 21 + 20;
// printf(“b[%d] = %d\n”,i,b[i]);
// c[i] = a[i] + b[i];
// printf(“c[%d] = %d\n”,i,c[i]);
// }

// 数组越界问题
// 系统不会提示你越界 需要自己注意
// 切记:不要数组越界

// int array[5] = {1, 3, 5, 7, 9};
//printf(“%d “,array[5]);

// 数组在内存当中是连续的一段存储区域
// 并且 数组名字 就是 数组元素的首地址(第一个元素的地址)
// 注意: 数组不能直接整体赋值
// array1 = array2 错误的
// 数组的名字 是数组的首地址 是一个地址 并且地址是一个常量 常量在程序执行期间不能改变的量,所以数组不能直接赋值

// 1、随机产⽣10个[20,40]数,并对10个数从⼩到⼤排序。
// 采用冒泡排序
// 精髓: 前后两个数比较大小 前面大于后面的 两个数交换位置 依次继续
// 冒泡排序设计双循环 外层循环控制趟数 内层循环控制比较次数

// int a[10] = {0};
// for (int i = 0; i < 10; i++) {
// a[i] = arc4random() % 21 + 20;
// printf(“%d “,a[i]);
// }
// int t = 0;
// for (int i = 1; i < 10; i++) {
// for (int j = 1 ; j < 10; j++) {
//
// if (a[j] < a[j - 1]) {
// t = a[j - 1];
// a[j - 1]= a[j];
// a[j] = t;
// }
// }
// }
// printf(“\n”);
// for (int i = 0; i < 10; i++) {
// printf(“%d “,a[i]);
// }
//
// int array[5] = {9, 7, 5, 3, 1};
// for (int i = 0; i < 5 - 1; i++) {
// for (int j = 0; j < 5 - 1 - i; j++) {
// if (array[j] > array[j + 1]) {
// int temp = array[j];
// array[j] = array[j + 1];
// array[j + 1] = temp;
// }
// }
// }
// for (int i = 0; i < 5; i++) {
// printf(“%d “,array[i]);
// }
// 字符数组
// 字符数组两种表现形式

/**
 *   常用字符串处理函数  都只能对字符串进行操作,不是是字符数组
  strlen(要计算的字符串) 计算字符串的长度 打印的是有效长度
 从第一位开始如果不是'\0',长度加1  遇到'\0'结束,并且输出的长度不包含'\0'

   strcpy(目标字符串,源字符串) 字符串拷贝
  strcat() 字符串拼接
  strcmp() 字符串比较
 */
// 字符串比字符数组多了一个'\0'
// '\0' 是用来结束字符串的

// char str1[] = {‘i’, ‘p’, ‘h’, ‘\0’, ‘n’, ‘e’};
// char str2[] = “iphone”; // 字符串
// // sizeof() 是用来打印数据类型或者变量 所占字节数
// // %lu 无符号的长整形
printf(“%lu “,sizeof(str1));
printf(“%lu”,sizeof(str2));
//
// printf(“%lu “,strlen(str1));
// printf(“%lu “,strlen(str2));
// 字符串的拷贝
// 拷贝: 从第一个字符开始拷贝 遇到’\0’拷贝结束
// 注意: 目标字符串的长度最好大于源字符串
// char str1[20] = {0}; // 目标字符串
// char str2[] = “I Love LanOu “; // 源字符串
// // strcpy(目标字符串,源字符串) 字符串拷贝
// strcpy(str1, str2);
// // 打印字符串 用%s 如果不是’\0’ 一个字符一个字符输出 如果遇到’\0’ 就结束
// printf(“%s”,str1);

// // 字符串的拼接
// // 注意: 被拼接的字符串长度一定要够接收拼接完的整个字符串
// char str1[100] = “I Love”;
// char str2[] = ” China”;
// // 把str2拼接到str1的后面
// strcat(str1, str2);
// printf(“%s”,str1);

  // 字符串比较
  // 从第一个字符进行比较 如果一样,继续看第二个字符 如果不一样 开始进行比较 比较内容是该字符在ASCII码表中对应数 前面将去后面的 得到一个返回值,返回值是正数 则前面大 反之 则后面大,然后比较结束.如果返回值是0,那么两个字符串相同

// char str1[] = “你好”;
// char str2[] = “你好”;
// //接收比较的结果
// int result = strcmp(str1, str2);
// printf(“%d”,result);

// 练习

// 查找字符串中的空格数:
// 例如:“I love iOS, i want an iPhone5s”
// 6个空格
// char a[] = “I love iOS, i want an iPhone5s”;
// int count = 0;
// printf(“请输入字符串:”);
// for (int i = 0; i < strlen(a); i++) {
// if (a[i] == ’ ‘) {
// count = count + 1;
// }
// }
// printf(“\n%d “,count);
//
// 将字符串倒转:
// 例如:“afjnpue”
// 转变成字符串“eupnjfa”
// (注:是改变字符串本⾝,不是反向输出)
// char str1[100] = {0};
// printf(“请输入一个字符串:”);
// scanf(“%s”,str1);
// printf(“%s\n”,str1);
// unsigned long int Length = strlen(str1);
// printf(“%lu\n”,Length);
if (Length % 2 == 0) {
for (int i = 0; i < Length / 2; i++) {
int t = 0;
t = str1[i];
str1[i]= str1[Length - i -1];
str1[Length - i -1] = t;
}
printf(“%s”,str1);
} else {
for (int i = 0; i < (Length - 1) / 2; i++) {
int t = 0;
t = str1[i];
str1[i]= str1[Length - i - 1];
str1[Length - i -1] = t;
}
printf(“%s”,str1);
}
// for (int i = 0; i < Length / 2; i++) {
// int t = 0;
// t = str1[i];
// str1[i]= str1[Length - i - 1];
// str1[Length - i -1] = t;
// }
// printf(“%s”,str1);

int b[6] = {1,2,3,4,5,6};
for (int i = 0; i < 6 - 1; i++) {
    for (int j = 0; j < 6 - 1 - i; j++) {
        if (b[j] < b[j + 1]) {
            int temp = b[j];
            b[j] = b[j + 1];
            b[j + 1] = temp;
        }
    }
}
for (int i = 0; i < 6; i++) {
    printf("%d\n",b[i]);
}





return 0;

}**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值