//字符数组,存储字符的数组
char str1[7] = {'h','e','l','l','o','a','\0'};
//打印下标为3的字符
printf("%c\n",str1[3]);
//将小写的o改为大写的O
str1[4] = 'O';
printf("%s \n",str1);
//定义字符串--
//字符串 本身就都是字符数组,只是字符串的结尾是以\0来结束的,如果在字符数组中也设置了\0那么此数组也可以当做字符串来输出
char str2[]="Hello World";
printf("%s \n",str2);
//来列举字符串的情况
//1.设置元素个数大于实际元素的个数
char str3[10]={'r','s','y','q'};
printf("%s \n",str3);
//2.手动设置\0
char str4[] = {'h','e','\0'};
printf("%s \n",str4);
//##########字符串操作函数
//计算字符串长度,以\0结束的标识
char string1[]="you are my love";
//注意长度属于计算类型,但是>=0的 strlen只能用来计算字符串
unsigned long strLenght = strlen(string1);
// printf("%lu \n",strLenght);
//字符串拼接,将一个字符串拼接给另一个字符串
//字符串2的内存必须要给大
char string2[30] = "Wuli xiao fan";
char string3[] = "World";
strcat(string2, string3);//将字符串3拼接到2后面
printf("%s \n",string2);
//长度不用考虑容量,但是字符串拼接和拷贝必须注意变量内存问题
//3.字符串拷贝
strcpy(string2, string3);//后面的复制到前面
printf("%s \n",string2);
//4.比较两个字符串对应位置的字符,比较的是字符串的整数值,对应位置的相减,结果不为0就结束比较
char s1[]="abcde";
char s2[]="bbcdf";
int result = strcmp(s1, s2);//前-后,,,一旦不一样就停止
printf("差值为%d \n",result);
//练习1:已知一个字符串,计算出字符串中的空格的数量
char ss[]="slsl lplp lp lpp lpl";//32 回车10
unsigned long strLenght1 = strlen(ss);
int count=0;
for (int i=0; i<strLenght1; i++) {
if (ss[i] == ' ') {
count++;
}
}
printf("%d \n",count);
}
return 0;
//1.数组:帮助创建多个变量
//缺点:数组中只能存储相同类型的数据
//数组定义的规则
//数据类型 数组名[元素个数] = {值1,值2,值3....}
//注意:数组的元素个数只能为整型常量,不要写变量
//开始写
int array[5] = {2,5,89,10,6};
char a[4] = {'i','h','k','l'}; // 4个字节
//2.可以不设置数组个数,系统会按照数组的赋值自行分配
short b[] = {9,80,6,9};//默认就是占8个字节的空间
//函数sizeof()可以帮助计算变量在内存中占用的字节 用lu输出 unsigned--(-127~128)无符号默认正值
// 统计数据 无符号
//lu 无符号长整型 unsigned long
printf("%lu \n",sizeof(array));
printf("%lu \n",sizeof(b));
//制定数组元素的个数,所给的数组赋的值得个数必须,小于等于元素个数 只要保证数组不越界
// int c[5] = {90,8,7,9,88,9,99};
// printf("%d\n",c);
//3.数组的下标
//下标从0开始,最大下标就是元素个数减1
//下标意义:就是帮助准确找到某一个元素
//使用规则:数组名[元素下标]
printf("%d \n",array[2]);
//修改
array[2] = 2222;
printf("%d \n",array[2]);
//数组的输出,依赖循环
//通过循环遍历数组的每一个下标,来取出数组的值
//注意 初始化变量值要从0开始
for (int i = 0; i < sizeof(array) / 4; i++) {
printf("&&%d***\n",array[i]);
}
//随机数----arc4random() 中间数:(大区间-小区间+1)+小区间
int num1 = arc4random()%(90-55+1)+55;
printf("随机数为:%d\n",num1);
//定义整形数组,包含10个元素,元素的值范围[30,70],数组的初始值是0.给数组赋随机值,并求和还有平均数
int a1[10] = {0},sum = 0,arg=0.0;
for (int i = 0; i<10 ; i++) {
a1[i] = arc4random() % (70 - 30 + 1) + 30;
printf("数组%d \n",a1[i]);
sum += a1[i];
arg=sum / 10.0;
}
printf("和为%d \n 平均值%d \n",sum,arg);
//l2 有两个元素的个数为10整型数组a和b(数组个自定义)数组a中的元素随机赋值[20,40],然后将数组a的元素赋值到b中
int a2[10],b2[10];
for (int i = 0; i < 10; i++) {
a2[i] = arc4random() % (40-20+1) +20;
printf("a2 %d\n",a2[i]);
b2[i] = a2[i];
printf("b2 %d\n",b2[i]);
}
//输出打印,数组之间不能相互赋值也不能相互打印
// for (int i = 0; i<10; i++) {
// printf("a2 %d %db2 \n",a2[i],b2[i]);
// }
//3.元素个数为10的整形数组,元素赋值随机的范围[30,70],求数组中的最小值和最大值
int a3[10],min=70,max=0;
// for (int i = 0; i<10; i++) {
// for (int j = 0; j<10; j++) {
// a3[i] = arc4random() % (70-30+1) + 30;
// a3[j] = a3[i+1];
// if (a3[i]>a[j]) {
// a[j] = a3[i];
// max = a[j];
//
// }
// }
//
// }
// printf("max===%d \n",max);
//
//
// for (int i = 0; i<10; i++) {
//
// a3[i] = arc4random() % (70-30+1) + 30;
// if (a3[i]< min) {
// min = a3[i];
//
// }
// }
//
// printf("min====%d \n",min) ;
for (int i=0; i<10-1; i++) {
for (int j=0; j<10-i-1; j++) {
a3[i] = arc4random() % (70-30+1) + 30;
if (a3[j]>a3[j+1]) {
int temp = a3[j];
a3[j]= a3[j+1];
a3[j+1] = temp;
max=a3[j+1]; printf("max===%d \n",max);
}
}
}
//4定义两个整型数组,元素的个数为10,数组的取值范围为随机[20,60]将这两个数组的元素放入一个新的数组中
// int a4[10],b4[10],c4[20];
// for (int i = 0; i<10; i++) {
// a4[i]=arc4random() % (60 - 20+1) +20;
// b4[i]=arc4random() % (60 - 20+1) +20;
//
// c4[i] = a4[i];
// c4[i+10] = b4[i];
// printf("a4=%d \n b4=%d",a4[i],b4[i]);
// }
// for (int i =0; i<20; i++) {
// printf("cccccc4=%d\n",c4[i]);
// }
//-------------------------------------------------------------------
//冒泡排序
//1.需要双层循环,外层控制循环的趟数,内层控制每趟循环的次数
//2.提高效率而言.外层趟数为元素个数-1,内层循环次数处于递减的状态,为元素个数-1(必须减,会越界)-i(为了提高效率,不和最后一个比较)
//3.VIP--内存循环必须设置元素的个数-1的操作要防止下标越界
// int f[6]={89,7,9,66,24,18};
// for (int i=0; i<6-1; i++) {
// for (int j = 0; j<6-1-i; j++) {
// //升序
// if (f[j]>f[j+1]) {
// //前者大于后者的话就交换位置
// int temp = f[j];
// f[j]= f[j+1];
// f[j+1] = temp;
//
// }
// }
// }
//
// for (int i = 0; i<6; i++) {
// printf("%d\n",f[i]);
// }