#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//刚开始的序列 18 58 7 37 22
//第一趟:
//第一次:18 58 7 37 22
//第二次:18 7 58 37 22
//第三次:18 7 37 58 22
//第四次:18 7 37 22 58 第一趟得到了一个最大的数为58
//第二趟:
//第一次:7 18 37 22
//第二次:7 18 37 22
//第三次:7 18 22 37 第二趟得到了一个第二大的数37
//第三趟:
//第一次:7 18 22
//第二次:7 18 22 第三趟得到了一个第三大的数22
//第四趟:
//第一次:7 18 第四趟出结果得到了一个第四大的数,自然而然剩下的那个数就是最小的。排序结束
//最终的排序结果为 7 18 22 37 58
//冒泡排序的原则是:比较相邻两个数的大小,如果前面的大于后面的,交换位置,否则位置不动,依次比较完成之后,从每一趟中都可以得到这一趟比较的所有数中最大的那个数。
//count 表示 数组容量。array 代表数组名
//这个是好理解版本
/*
for (int i = 1; i < count; i ++) {//控制趟数
for (int j = 0; j < count - 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 < count - 1; i ++) {//控制趟数
for (int j = 0; j < count - i - 1; j ++) {//控制的是每一趟比较多少次
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
*/
//定义一个具有十个元素的整型数组,随机赋值(范围20~40),并且按照升序 输出 所有的元素。
/*
int array[10] = {0};
//1、通过for循环给数组元素进行随机赋值
for (int i = 0; i < 10; i ++) {
array[i] = arc4random() % (40 - 20 + 1) + 20;
printf("%d ",array[i]);
}
printf(" ");
//2、冒泡排序
for (int i = 0; i < 10 - 1; i ++) {
for (int j = 0; j < 10 - 1 - i; j ++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
//通过for循环将排序好后的数组元素打印出来
for (int i = 0; i < 10; i ++) {
printf("%d ",array[i]);
}
*/
//字符数组
//字符数组 就是存放 字符类型元素的容器。string
/*
char str1[30] = {'i', 'P', 'h', 'o', 'n', 'e'};
char str2[30] = "iPhone";//这种方式 是我们以后声明字符数组的常用方式。
char str3[30] = {'i', 'P', 'h', 'o', 'n', 'e', ' '};
//C语言中的字符串就是以 ' ' 结尾的字符数组。
//打印C语言字符串 占位符为 %s
printf("str1 = %s, str2 = %s, str3 = %s",str1, str2, str3);
*/
//字符串操作函数
//1、计算字符串长度的函数 strlen();
char str[30] = "iPhone6sPlus";
char str1[10] = {'i', 'P', 'h', 'o', ' '};
// int a = 10;
// a = 11;
//
// const int b = 11;
// b = 12;
//字符串长度的类型为无符号的长整型,打印占位符为%lu
unsigned long strLength = strlen(str);
printf("strLength is %lu,%lu",strLength,strlen(str1));
//2、字符串拷贝函数 strcpy
char str2[30] = {0};
char str3[30] = "i want an iPhone6sPlus";
strcpy(str2, str3);//将str3里面的内容拷贝到str2里面。
printf("str2 = %s, str3 = %s",str2, str3);
//3、字符串拼接函数 strcat
char str4[255] = "marry beautiful girl";
char str5[30] = "become a boss";
strcat(str4, str5);
printf("str4 = %s",str4);
//4、字符串比较函数 strcmp
char str6[30] = "i want a girlFriend";
char str7[30] = "i want a boyFriend";
//result的结果为 两个字符串首位不相同的字符 ascii码值的差值。
int result = strcmp(str6, str7);
printf("result = %d",result);
if (result > 0) {
char strTemp[30] = {0};
//字符串的交换需要借助拷贝函数,不能直接赋值
strcpy(strTemp, str6);
strcpy(str6, str7);
strcpy(str7, strTemp);
}
/**
* 将字符串 倒转:
例如:“afjnpue”
转变 成字符串“eupnjfa”
(注:是改变 字符串本身,不是 反向输出)
*/
char string[30] = "fangyuanbaili";
int length = (int)strlen(string);
printf(" ");
for (int i = 0; i < length / 2; i ++) {
char temp = string[i];
string[i] = string[length - 1 - i];
string[length - 1 - i] = temp;
}
printf("%s",string);
// for (int i = length - 1; i >= 0; i --) {
// printf("%c",string[i]);
// }
return 0;
}