#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//限时代码
// int maxValue = 0;
// for (int i = 0; i < 10; i++) {
// int ran = arc4random() % (40 - 20 + 1) + 20;
// printf("%d\n",ran);
//
// if (ran > maxValue) {
// maxValue = ran;
// }
// }
//
// printf("max = %d\n",maxValue);
// 数组定义:保存同种数据类型的多个数据
// 声明一个数组,保存年龄
// [3] 3 代表的是数组中元素的个数
// {}中值 是数组中元素的初值 用逗号隔开
// int 表示数组中每一个元素的数据类型
//申明数组公式: 数据类型 + 数组名 [常量表达式] = {初值1, 初值2, 初值3, ... };
int ageArray[3] = {27, 19, 22};
//数组元素个数可以用变量来表示,但是不可以进行初始化
// int count = 5;
// int array[count] = {1, 5, 6, 3, 9}; // 错
//如果声明数组时 数组元素的个数大于 给出的数组元素初值的个数 系统会自动给补0
int array2[5] = {2, 5, 7};
int array3[5] = {0}; //相当于 int array3[5] = {0, 0, 0, 0, 0};
// 声明的时候没有给定元素的个数 那么初值有几个元素 这个数组就有几个元素
int array4[] = {1, 4, 6, 8, 9};
//申明一个字符类型数组 i p h o n e
char str[10] = {'i', 'p', 'h', 'o', 'n' ,'e'};
//字符串
char str1[] = "iphone";
//取出数组中元素
//使用 数组名[下标] 切记: 下标从 0 开始
// int array[6] = {27, 19, 22, 26, 23, 18};
// printf("%d ",array[1]);
// //修改年龄 19->39
// array[1] = 39;
// array[5] = 5;
//输出数组中的所有元素 遍历
// for (int i = 0; i < 6 ; i++) {
// printf("%d ", array[i]);
// }
//1、定义⼀一个具有20个元素的整型数组,每个元素的取值范围是30-70之间,求数组元素的和。
int a[20] = {0};
//声明数组的和
int sum = 0;
//遍历数组
for (int i = 0; i < 20; i++) {
//随机数
int ran = arc4random() % (70 - 30 + 1) + 30;
//赋值数组中的每个元素
a[i] = ran;
//求和
sum += a[i];
}
printf("sum = %d\n", sum);
//2、复制⼀一个数组,即两个数组容量⼀一样,把其中⼀一个数组中的元素复制到另外⼀一个数组中。
int a1[5] = {3, 6, 9, 7, 10};
int a2[5] = {0};
//遍历数组
for (int i = 0; i < 5; i++) {
//把老数组的值取出来 赋值新数组的对应元素
a2[i] = a1[i];
printf("%d ", a2[i]);
}
printf("\n");
// 3、生成2个数组,每个数组都有10个元素,元素取值范围20-40 之间,数组对应元素相加,放到另外⼀一个数组中。
int b1[10] = {0};
int b2[10] = {0};
int b3[10] = {0};
for (int i = 0; i < 10; i++) {
b1[i] = arc4random() % (40 - 20 + 1) + 20;
b2[i] = arc4random() % (40 - 20 + 1) + 20;
b3[i] = b1[i] + b2[i];
printf("%d ", b3[i]);
}
printf("\n");
// 数组越界问题
// 系统不会提示你越界 需要你自己注意
// 切记:不要数组越界
int array1[5] = {1, 3, 5, 7, 9};
printf("%d\n", array1[5]);
// 数组在内存当中是一段连续的存储区域
// 并且 数组的名字 就是 数组元素的首地址(第一个元素的地址)
// 注意: 数组不能直接赋值 array1 = array2 错误的
// 数组的名字 是元素首地址 是一个地址 并且地址是一个常量 常量是程序执行期间不能改变的量,所以数组不能直接赋值
//冒泡排序
// 精髓:前后两个数比较大小 前面大于后面的 两个数交换位置 依次继续
//比较趟数 5 - 1 比较4趟 n - 1
//每次比较次数 5 - 1 - i (趟数) n - 1 - i
int array[5] = {9, 7, 5, 3, 2};
//外层循环 控制比较的趟数
for (int i = 0; i < 4; i++) {
//内层循环 控制每趟比较的次数
for (int j = 0; j < 4 - i; j++) {
//比较的过程 2个数比大小 前面大 交换
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]);
}
printf("\n");
// 1、随机产⽣10个[20,40]数,并对10个数从小到大排序。
int c[10] = {0};
int d = 0;
for (int i = 0; i < 10 ; i++) {
//随机生成10个数
int ran = arc4random() % (40 - 20 + 1) + 20;
c[i] = ran;
printf("%d ",c[i]);
}
printf("\n");
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9 - i ; j++) {
if (c[j] > c[j + 1]) {
d = c[j];
c[j] = c[j + 1];
c[j + 1] = d;
}
}
}
for (int i = 0; i < 10 ; i++) {
printf("%d ",c[i]);
}
// 字符数组两种表现形式
// 字符串比字符数组多了一个 '\0'
// '\0' 用来结束字符串
char str2[] = {'i', 'p', 'h', 'o', 'n', 'e'};
char str3[] = "iphone"; //字符串
// 打印数据类型或者变量的 所占字节数的函数
// sizeof()
// %lu 无符号的长整型
// unsigned long number = sizeof(str2);
printf("\n%lu",sizeof(str2));
printf("\n%lu",sizeof(str3));
// 计算字符串长度
// strlen(要计算的字符串);
char str4[] = "I Love LanOu";
// 打印 有效 长度
// 从第一个字符开始,如果不是'\0',长度 + 1 ,遇到'\0'结束 并且输出的长度不包含'\0'
printf("\n%lu",strlen(str4));
// 字符串的拷贝
// 拷贝: 从第一个字符开始拷贝 遇到'\0'拷贝结束
// 注意: 目标字符串的长度最好大于源字符串
char str5[20] = {0}; // 目标字符串
char str6[] = "I Love LanOu"; // 源字符串
// strcpy( 目标字符串 , 源字符串 );
strcpy(str5, str6);
// 打印字符串 用%s 一个字符一个字符的输出,如果遇到'\0',就结束
printf("\n%s\n", str5);
// 字符串拼接
// 注意: 被拼接的字符串长度一定要够接收拼接完的字符串长度
char str7[20] = "da jun ";
char str8[] = "Love ";
// 把后面的str8 拼接到 str7 的后面
strcat(str7, str8);
printf("%s\n",str7);
// 字符串比较
// 从第一个字符开始比较 如果一样,继续看第二个字符,如果不一样,开始进行比较,比较的内容是该字符在ASCII表中对应的数 前面的减去后面的,得到一个返回值 返回值是正数 则前面大 反之后面大.然后比较结束 如果返回值是0 ,那么两个字符串相同
char str9[] = "I Love You";
char str10[]= "I Miss You";
// 接收比较的结果
int number = strcmp(str9, str10);
printf("%d ",number);
// 查找字符串中的空格数: 例如:“I love iOS, i want an iPhone5s”
char st[] = "I love iOS, i want an iPhone5s";
// 声明一个变量 计算空格数
int count = 0;
for (int i = 0; i < strlen(st); i++) {
// 判断字符是不是空格,如果是空格,就自增
if (st[i] == ' ') {
count++;
}
}
printf("\n空格数:%d",count);
printf("\n");
// 将字符串倒转: 例如:“afjnpue” 转变成字符串“eupnjfa”
//声明字符串
char strValue[] = "afjnpue";
//倒转只需要倒转长度的一半次数
for (int i = 0; i < strlen(strValue) /2 ; i++) {
char temp = strValue[i];
strValue[i] = strValue[strlen(strValue) - i -1];
strValue[strlen(strValue) - i - 1] = temp;
}
for (int i = 0; i < strlen(strValue); i++) {
printf("%c",strValue[i]);
}
return 0;
}