ios--c DAY_4
2015-08-03 08:12
441 查看
//
// main.m
// LessonFour
//
// Created by lanou3g on 15/7/31.
// Copyright (c) 2015年 lanou3g. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//数组是一种构造类型
//是相同数据类型的一个集合
//构造类型:结构体、枚举、数组、共用体.
//一维数组:
//类型说明符 数组名[常量表达式]={值1,值2...};
//初始值之间用逗号隔开
int numberArray[4]={0};
for (int i=0; i<4; i++) {
printf("%d\t",numberArray[i]);
}
printf("\n");
float oc_score[6]={98,90,87,79,85,92};
for (int i=0; i<6; i++) {
printf("%.0f\t",oc_score[i]);
}
printf("\n");
//1、
int a[3]={1,2,3};
//2、数组中没有赋初值的元素,自动设置为0
int b[5]={1,2,3};
//3、
int c[5]={0};
//4、根据初始化的设置,自动计算数组的个数
int d[]={1,2,3,4,5};
int e[3]={1,1,2,3};//不报错,这样是不行的,是错误的。元素个数要小于初值的个数.
int f[]={0};//这是不规范的。既没有确定元素个数,也没有赋初值
//数组开辟空间---元素个数*类型所占的字节数
//开辟的空间是连续的
//数组元素的访问:
//1)、不能一次调用所有元素的值;
//2)、基本数据类型存储一个值,数组中存储多个数据.
//3)、使用下标实现数组元素的访问 数组名[下标]
//注意:下标的范围从0-(数组元素个数-1),数组是有序的。
//当下标超过数组元素的个数就成为数组越界行为。
int array[4]={1,2,3,4};
for (int i=0; i<4; i++) {
printf("%d\t",array[i]);
}
//倒序输出
for (int i=3; i>=0; i--) {
printf("%d\t",array[i]);
}
printf("\n");
for (int i=0; i<4; i++) {
printf("%d的地址:%p\t",array[i],&array[i]);
}
//数组越界,编译器不会检测出来
//越界元素的地址不属于这个数组,而是跑到了外面
printf("\n越界元素的地址:%p\n",&array[4]);
printf("打印越界元素:%d\n\n",array[4]);
//array[4]:*(array+4) 其中array是数组基地址
//越界:越界其实就是读取的位置超出了你定义的变量的内存空间位置
// 一般编译的时候不会报错,但实际运行的时候可能会产生一个致命的错误
// 有一条走廊,你划了一个起点和终点,表明这段你占有了。如果你走出了这个范围,就表明你跑到外面去了,如果那地方没有人占有,说明你运气不错; 如果已是别人的地方了,这说明你进入了别人的地方,别人可要收“过路费”的哟(付出代价,程序崩溃)。
//
//再比如
int array3[5]={11,22,33,44,55};
printf("%d\n",array3[5]);
//数组索引5是过去数组的结尾(包含5个元素
//修改数组元素
int arr1[]={1,2,3,4,5};
//遍历所有元素
for (int i=0; i<5; i++) {
printf("%d\t",arr1[i]);
}
// printf("\n--------------------------\n");
// arr1[1]=8;
// for (int i=0; i<5; i++) {
// printf("%d\t",arr1[i]);
// }
printf("\n");
printf("---------------------------\n");
for (int i=0; i<5; i++) {
arr1[i]+=5;
printf("%d\t",arr1[i]);
}
printf("\n");
//总结,在进入一个数学的逻辑思维之后,一定要学会能随时跳出来,不然,只会越钻越深,进入死胡同,这样的程序思维是不可取的。
int arr2[5]={0};
for (int i=0; i<5; i++) {
arr2[i]=arc4random()%(20-10+1)+10;
}
for (int i=0; i<5; i++) {
printf("%d\t",arr2[i]);
}
printf("\n");
//得到数组长度
int array1[]={1,2,3,45,3};
printf("%d\n",sizeof(array1)/sizeof(int));
//用循环的方式赋值,10个元素的值是【30,42】之间的随机数。
int array2[10]={0};
for (int i=0; i<10; i++) {
array2[i]=arc4random()%(42-30+1)+30;
printf("%d\t",array2[i]);
}
printf("\n");
//注意:数组做一个整体是不能参与运算的。
//定义一个数组,具有20个整型元素,每个元素的取值范围是2-13之间。求元素的和。
int array4[20]={0};
int sumOfarray4=0;
for (int i=0; i<20; i++) {
array4[i]=arc4random()%(13-2+1)+2;
sumOfarray4+=array4[i];
}
for (int i=0; i<20; i++) {
printf("%d\t",array4[i]);
}
printf("\n和:%d\n",sumOfarray4);
//复制一个数组,要有两个数组,把其中一个的值,复制到另一个的数组中。
//生成2个数组,每个数组有10个元素,范围是20-30,数组对应的元素相加,存放到第三个数组中。
int arrayA[10]={0},arrayB[10]={0},arrayC[10]={0};
for (int i=0,j=0; i<10,j<10; i++,j++) {
arrayA[i]=arc4random()%(30-20+1)+20;
arrayB[j]=arrayA[i];
arrayC[i]=arrayA[i]+arrayB[j];
}
printf(" ");
for (int i=0; i<10; i++) {
printf("%d\t",arrayA[i]);
}
printf("\n+");
for (int i=0; i<10; i++) {
printf("%d\t",arrayB[i]);
}
printf("\n---------------------------------------\n=");
for (int i=0; i<10; i++) {
printf("%d\t",arrayC[i]);
}
printf("\n\n");
//冒泡排序
int arraySort0[5]={12,34,3,24,44};
int tempSort0=0;
for (int i=0; i<5; i++) {
printf("%d\t",arraySort0[i]);
}
printf("\n----------------------------------\n");
for (int i=0; i<5; i++) {
for (int j=0; j<5-i-1; j++) {
if (arraySort0[j]>arraySort0[j+1]) {
tempSort0=arraySort0[j];
arraySort0[j]=arraySort0[j+1];
arraySort0[j+1]=tempSort0;
}
}
}
for (int i=0; i<5; i++) {
printf("%d\t",arraySort0[i]);
}
printf("\n");
//随机产生10个[20,40]的数,排序。
int arraySort[10]={0};
for (int i=0; i<10; i++) {
arraySort[i]=arc4random()%(40-20+1)+20;
printf("%d\t",arraySort[i]);
}
printf("\n-----------------------------------\n");
int tempSort=0;
for (int i=0; i<10; i++) {
for (int j=0; j<10-i-1; j++) {
if (arraySort[j]>arraySort[j+1]) {
tempSort=arraySort[j];
arraySort[j]=arraySort[j+1];
arraySort[j+1]=tempSort;
}
}
}
for (int i=0; i<10; i++) {
printf("%d\t",arraySort[i]);
}
printf("\n");
//二维数组的冒泡排序
//最主要的是找准要在哪去做排序这个过程
int arraySortDouble[3][4]={12,3,54,23,12,34,43,99,12,23,32,1};
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
printf("%d\t",arraySortDouble[i][j]);
}
printf("\n");
}
int tempSortDouble=0;
for (int i=0; i<3; i++){
for (int j=0; j<4;
j++) {
for (int m=0; m<4-j-1; m++) {
if (arraySortDouble[i][m]>arraySortDouble[i][m+1]) {
tempSortDouble=arraySortDouble[i][m];
arraySortDouble[i][m]=arraySortDouble[i][m+1];
arraySortDouble[i][m+1]=tempSortDouble;
}
}
}
}
printf("\n-----------------------\n");
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
printf("%d\t",arraySortDouble[i][j]);
}
printf("\n");
}
printf("\n");
//一维数组的冒泡排序的优化算法
int arraySortSingle[5]={1,2,3,4,5};
int tempSortSingle=0;
BOOL flagSort=NO;//默认是都没有交换过
for (int i=0; i<5; i++) {
for (int j=0; j<5-i-1; j++) {
if (arraySortSingle[j]>arraySortSingle[j+1]) {
tempSortSingle=arraySortSingle[j];
arraySortSingle[j]=arraySortSingle[j+1];
arraySortSingle[j+1]=tempSortSingle;
flagSort=YES;//交换过
}
}
if (flagSort==NO) {
printf("第%d趟后就不用交换了.\n",i);
break;
}
}
for (int i=0; i<5; i++) {
printf("%d\t",arraySortSingle[i]);
}
printf("\n");
//字符数组
//定义字符数组
//方式1、
char a1[4]={'a','b','c'};//默认设置'\0',空操作符,输出的时候,是不显示的。
for (int i=0; i<4; i++) {
printf("%c\t",a1[i]);
}
printf("\n--------------\n");
char b1[]={'a','b','c'};
char c1[10]={0};//全部是'\0'对应的%d输出为0
for (int i=0; i<10; i++) {
printf("%c\t",c1[i]);
}
printf("\n----------------------------------\n");
c1[2]='A';
c1[5]='\0';
c1[6]='m';
c1[9]='D';
for (int i=0; i<10; i++) {
printf("%c\t",c1[i]);
}
printf("\n");
//方式2、两种的区别
char str[]="hello";//字符串自身后面就有一个'\0',分配6个内存空间,但是字符串长度为5---有效字符的长度
char str1[]={'h','e','l','l','o'};//只有5个内存空间
//打印一下他们各自的地址,看一下
printf("字符串所占的地址:");
for (int i=0; i<6; i++) {
printf("%p\t",&str[i]);
}
printf("\n----------------------\n");
printf("字符数组所占的地址:");
for (int i=0; i<6; i++) {//字符占1个字节,查看输出结果会发现str1[5]和str1[4]
printf("%p\t",&str1[i]);//的地址是不连续的,所以str1[5]属于数组越界
}
printf("\n-------------------------\n\n");
//存储字符串的字符数组元素个数=有效字符个数+1;
//字符数组不一定是字符串
//字符串是一个字符数组
//存储字符串的数组,可以输出单个的字符,也可以用%s输出完整的字符串。输出的时候遇到'\0'结束输出。
printf("字符串本身:%s",str);
printf("\n-----------------------\n");
printf("单个输出字符串:\t");
for (int i=0; i<6; i++) {
printf("%c\t",str[i]);//最后一个'\0'转换成%d时为0,对应的ASCII码
}
printf("\n------------------------------\n");
printf("转换成ASCII码:\t");
for (int i=0; i<6; i++) {
printf("%d\t",str[i]);
}
printf("\n");
#pragma mark 字符串操作函数
//1、字符串长度 --strlen(字符串); ---返回值unsigned long ----%lu输出
//这个长度是有效字符的长度,不包括末尾的'\0'
char name[]="yibella";
printf("%s的长度:%lu\n",name,strlen(name));
//2、字符串拷贝 --strcpy(字符串1,字符串2);
char name1[]="gold";
char name2[5]={0};//如果这里,没有定义name2的长度,输出的时候,name1的第一个字符不输出
strcpy(name2, name1);
//字符串2可以是常量。
//字符数组1的存储空间>=字符数组2的存储空间
//注意'\0'的空间也要计算进去
//** 给一个字符数组赋值,只能用strcpy函数,不能直接用另一个字符数组去赋值给这个字符数组。比如:name2=name1。这是完全错误的。
printf("本身:%s,影子:%s\n",name1,name2);
//3、字符串拼接 --strcat(字符串1,字符串2);
//把字符串2的值直接拼接到字符串1的末尾
//字符串1的内存空间必须能够容下自身和字符串2
//字符串1的'\0'取消了,只在新的字符串后面有一个'\0'
char welcome1[50]="Welcome";
char welcome2[]=" to China.";//如果这里不加空格的话,拼接之后,to的t就连着Welcome的w。因为拼接的过程中,welcome1后面的'\0'就自动消失了。
strcat(welcome1, welcome2);
printf("%s\n",welcome1);
//4、字符串比较 --strcmp(字符串1,字符串2)
//字符串1的字符-字符串2 的字符
//结果>0 字符串1大
// <0 字符串1小
// =0 相等
char compare1[]="yibella";
char compare2[]="bellayi";
int resultCompare=strcmp(compare1, compare2);
if (resultCompare>0) {
printf("%s比%s大.\n",compare1,compare2);
}else if (resultCompare<0){
printf("%s比%s小.\n",compare1,compare2);
}else{
printf("%s和%s一样大.\n",compare1,compare2);
}
//查找字符串中的空格数 "i will right here waitting for you "
char findString[]="i will right here waitting for you ";
int countFind=0;
for (int i=0; i<strlen(findString); i++) {
if (findString[i]==' ') {
countFind++;
}
}
printf("for找到的共有%d个空格\n",countFind);
int i=0;
countFind=0;
while (findString[i]!='\0') { //因为字符串是以'\0'为结束的标识符
if (findString[i]==' ') {
countFind++;
} i++;
}
printf("while找到的共有%d个空格\n",countFind);
//定义一个字符串,倒序输出这个字符串
//1、
printf("利用数组的倒序:");
char printString[]="mnthqwer";
for (int i=strlen(printString); i>=0; i--) {
printf("%c",printString[i]);
}
printf("\n--------------\n");
//2、
//利用第三方来交换后获得倒序字符串
printf("老大老实的计算:");
char printOther[10]={0};
int lengthOfprintString=0;
lengthOfprintString=strlen(printString);
for (int i=0; i<lengthOfprintString; i++) {
printOther[i]=printString[lengthOfprintString-1-i];
}
for (int i=0; i<lengthOfprintString; i++) {
printf("%c",printOther[i]);
}
printf("\n");
return 0;
}
// main.m
// LessonFour
//
// Created by lanou3g on 15/7/31.
// Copyright (c) 2015年 lanou3g. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//数组是一种构造类型
//是相同数据类型的一个集合
//构造类型:结构体、枚举、数组、共用体.
//一维数组:
//类型说明符 数组名[常量表达式]={值1,值2...};
//初始值之间用逗号隔开
int numberArray[4]={0};
for (int i=0; i<4; i++) {
printf("%d\t",numberArray[i]);
}
printf("\n");
float oc_score[6]={98,90,87,79,85,92};
for (int i=0; i<6; i++) {
printf("%.0f\t",oc_score[i]);
}
printf("\n");
//1、
int a[3]={1,2,3};
//2、数组中没有赋初值的元素,自动设置为0
int b[5]={1,2,3};
//3、
int c[5]={0};
//4、根据初始化的设置,自动计算数组的个数
int d[]={1,2,3,4,5};
int e[3]={1,1,2,3};//不报错,这样是不行的,是错误的。元素个数要小于初值的个数.
int f[]={0};//这是不规范的。既没有确定元素个数,也没有赋初值
//数组开辟空间---元素个数*类型所占的字节数
//开辟的空间是连续的
//数组元素的访问:
//1)、不能一次调用所有元素的值;
//2)、基本数据类型存储一个值,数组中存储多个数据.
//3)、使用下标实现数组元素的访问 数组名[下标]
//注意:下标的范围从0-(数组元素个数-1),数组是有序的。
//当下标超过数组元素的个数就成为数组越界行为。
int array[4]={1,2,3,4};
for (int i=0; i<4; i++) {
printf("%d\t",array[i]);
}
//倒序输出
for (int i=3; i>=0; i--) {
printf("%d\t",array[i]);
}
printf("\n");
for (int i=0; i<4; i++) {
printf("%d的地址:%p\t",array[i],&array[i]);
}
//数组越界,编译器不会检测出来
//越界元素的地址不属于这个数组,而是跑到了外面
printf("\n越界元素的地址:%p\n",&array[4]);
printf("打印越界元素:%d\n\n",array[4]);
//array[4]:*(array+4) 其中array是数组基地址
//越界:越界其实就是读取的位置超出了你定义的变量的内存空间位置
// 一般编译的时候不会报错,但实际运行的时候可能会产生一个致命的错误
// 有一条走廊,你划了一个起点和终点,表明这段你占有了。如果你走出了这个范围,就表明你跑到外面去了,如果那地方没有人占有,说明你运气不错; 如果已是别人的地方了,这说明你进入了别人的地方,别人可要收“过路费”的哟(付出代价,程序崩溃)。
//
//再比如
int array3[5]={11,22,33,44,55};
printf("%d\n",array3[5]);
//数组索引5是过去数组的结尾(包含5个元素
//修改数组元素
int arr1[]={1,2,3,4,5};
//遍历所有元素
for (int i=0; i<5; i++) {
printf("%d\t",arr1[i]);
}
// printf("\n--------------------------\n");
// arr1[1]=8;
// for (int i=0; i<5; i++) {
// printf("%d\t",arr1[i]);
// }
printf("\n");
printf("---------------------------\n");
for (int i=0; i<5; i++) {
arr1[i]+=5;
printf("%d\t",arr1[i]);
}
printf("\n");
//总结,在进入一个数学的逻辑思维之后,一定要学会能随时跳出来,不然,只会越钻越深,进入死胡同,这样的程序思维是不可取的。
int arr2[5]={0};
for (int i=0; i<5; i++) {
arr2[i]=arc4random()%(20-10+1)+10;
}
for (int i=0; i<5; i++) {
printf("%d\t",arr2[i]);
}
printf("\n");
//得到数组长度
int array1[]={1,2,3,45,3};
printf("%d\n",sizeof(array1)/sizeof(int));
//用循环的方式赋值,10个元素的值是【30,42】之间的随机数。
int array2[10]={0};
for (int i=0; i<10; i++) {
array2[i]=arc4random()%(42-30+1)+30;
printf("%d\t",array2[i]);
}
printf("\n");
//注意:数组做一个整体是不能参与运算的。
//定义一个数组,具有20个整型元素,每个元素的取值范围是2-13之间。求元素的和。
int array4[20]={0};
int sumOfarray4=0;
for (int i=0; i<20; i++) {
array4[i]=arc4random()%(13-2+1)+2;
sumOfarray4+=array4[i];
}
for (int i=0; i<20; i++) {
printf("%d\t",array4[i]);
}
printf("\n和:%d\n",sumOfarray4);
//复制一个数组,要有两个数组,把其中一个的值,复制到另一个的数组中。
//生成2个数组,每个数组有10个元素,范围是20-30,数组对应的元素相加,存放到第三个数组中。
int arrayA[10]={0},arrayB[10]={0},arrayC[10]={0};
for (int i=0,j=0; i<10,j<10; i++,j++) {
arrayA[i]=arc4random()%(30-20+1)+20;
arrayB[j]=arrayA[i];
arrayC[i]=arrayA[i]+arrayB[j];
}
printf(" ");
for (int i=0; i<10; i++) {
printf("%d\t",arrayA[i]);
}
printf("\n+");
for (int i=0; i<10; i++) {
printf("%d\t",arrayB[i]);
}
printf("\n---------------------------------------\n=");
for (int i=0; i<10; i++) {
printf("%d\t",arrayC[i]);
}
printf("\n\n");
//冒泡排序
int arraySort0[5]={12,34,3,24,44};
int tempSort0=0;
for (int i=0; i<5; i++) {
printf("%d\t",arraySort0[i]);
}
printf("\n----------------------------------\n");
for (int i=0; i<5; i++) {
for (int j=0; j<5-i-1; j++) {
if (arraySort0[j]>arraySort0[j+1]) {
tempSort0=arraySort0[j];
arraySort0[j]=arraySort0[j+1];
arraySort0[j+1]=tempSort0;
}
}
}
for (int i=0; i<5; i++) {
printf("%d\t",arraySort0[i]);
}
printf("\n");
//随机产生10个[20,40]的数,排序。
int arraySort[10]={0};
for (int i=0; i<10; i++) {
arraySort[i]=arc4random()%(40-20+1)+20;
printf("%d\t",arraySort[i]);
}
printf("\n-----------------------------------\n");
int tempSort=0;
for (int i=0; i<10; i++) {
for (int j=0; j<10-i-1; j++) {
if (arraySort[j]>arraySort[j+1]) {
tempSort=arraySort[j];
arraySort[j]=arraySort[j+1];
arraySort[j+1]=tempSort;
}
}
}
for (int i=0; i<10; i++) {
printf("%d\t",arraySort[i]);
}
printf("\n");
//二维数组的冒泡排序
//最主要的是找准要在哪去做排序这个过程
int arraySortDouble[3][4]={12,3,54,23,12,34,43,99,12,23,32,1};
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
printf("%d\t",arraySortDouble[i][j]);
}
printf("\n");
}
int tempSortDouble=0;
for (int i=0; i<3; i++){
for (int j=0; j<4;
j++) {
for (int m=0; m<4-j-1; m++) {
if (arraySortDouble[i][m]>arraySortDouble[i][m+1]) {
tempSortDouble=arraySortDouble[i][m];
arraySortDouble[i][m]=arraySortDouble[i][m+1];
arraySortDouble[i][m+1]=tempSortDouble;
}
}
}
}
printf("\n-----------------------\n");
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
printf("%d\t",arraySortDouble[i][j]);
}
printf("\n");
}
printf("\n");
//一维数组的冒泡排序的优化算法
int arraySortSingle[5]={1,2,3,4,5};
int tempSortSingle=0;
BOOL flagSort=NO;//默认是都没有交换过
for (int i=0; i<5; i++) {
for (int j=0; j<5-i-1; j++) {
if (arraySortSingle[j]>arraySortSingle[j+1]) {
tempSortSingle=arraySortSingle[j];
arraySortSingle[j]=arraySortSingle[j+1];
arraySortSingle[j+1]=tempSortSingle;
flagSort=YES;//交换过
}
}
if (flagSort==NO) {
printf("第%d趟后就不用交换了.\n",i);
break;
}
}
for (int i=0; i<5; i++) {
printf("%d\t",arraySortSingle[i]);
}
printf("\n");
//字符数组
//定义字符数组
//方式1、
char a1[4]={'a','b','c'};//默认设置'\0',空操作符,输出的时候,是不显示的。
for (int i=0; i<4; i++) {
printf("%c\t",a1[i]);
}
printf("\n--------------\n");
char b1[]={'a','b','c'};
char c1[10]={0};//全部是'\0'对应的%d输出为0
for (int i=0; i<10; i++) {
printf("%c\t",c1[i]);
}
printf("\n----------------------------------\n");
c1[2]='A';
c1[5]='\0';
c1[6]='m';
c1[9]='D';
for (int i=0; i<10; i++) {
printf("%c\t",c1[i]);
}
printf("\n");
//方式2、两种的区别
char str[]="hello";//字符串自身后面就有一个'\0',分配6个内存空间,但是字符串长度为5---有效字符的长度
char str1[]={'h','e','l','l','o'};//只有5个内存空间
//打印一下他们各自的地址,看一下
printf("字符串所占的地址:");
for (int i=0; i<6; i++) {
printf("%p\t",&str[i]);
}
printf("\n----------------------\n");
printf("字符数组所占的地址:");
for (int i=0; i<6; i++) {//字符占1个字节,查看输出结果会发现str1[5]和str1[4]
printf("%p\t",&str1[i]);//的地址是不连续的,所以str1[5]属于数组越界
}
printf("\n-------------------------\n\n");
//存储字符串的字符数组元素个数=有效字符个数+1;
//字符数组不一定是字符串
//字符串是一个字符数组
//存储字符串的数组,可以输出单个的字符,也可以用%s输出完整的字符串。输出的时候遇到'\0'结束输出。
printf("字符串本身:%s",str);
printf("\n-----------------------\n");
printf("单个输出字符串:\t");
for (int i=0; i<6; i++) {
printf("%c\t",str[i]);//最后一个'\0'转换成%d时为0,对应的ASCII码
}
printf("\n------------------------------\n");
printf("转换成ASCII码:\t");
for (int i=0; i<6; i++) {
printf("%d\t",str[i]);
}
printf("\n");
#pragma mark 字符串操作函数
//1、字符串长度 --strlen(字符串); ---返回值unsigned long ----%lu输出
//这个长度是有效字符的长度,不包括末尾的'\0'
char name[]="yibella";
printf("%s的长度:%lu\n",name,strlen(name));
//2、字符串拷贝 --strcpy(字符串1,字符串2);
char name1[]="gold";
char name2[5]={0};//如果这里,没有定义name2的长度,输出的时候,name1的第一个字符不输出
strcpy(name2, name1);
//字符串2可以是常量。
//字符数组1的存储空间>=字符数组2的存储空间
//注意'\0'的空间也要计算进去
//** 给一个字符数组赋值,只能用strcpy函数,不能直接用另一个字符数组去赋值给这个字符数组。比如:name2=name1。这是完全错误的。
printf("本身:%s,影子:%s\n",name1,name2);
//3、字符串拼接 --strcat(字符串1,字符串2);
//把字符串2的值直接拼接到字符串1的末尾
//字符串1的内存空间必须能够容下自身和字符串2
//字符串1的'\0'取消了,只在新的字符串后面有一个'\0'
char welcome1[50]="Welcome";
char welcome2[]=" to China.";//如果这里不加空格的话,拼接之后,to的t就连着Welcome的w。因为拼接的过程中,welcome1后面的'\0'就自动消失了。
strcat(welcome1, welcome2);
printf("%s\n",welcome1);
//4、字符串比较 --strcmp(字符串1,字符串2)
//字符串1的字符-字符串2 的字符
//结果>0 字符串1大
// <0 字符串1小
// =0 相等
char compare1[]="yibella";
char compare2[]="bellayi";
int resultCompare=strcmp(compare1, compare2);
if (resultCompare>0) {
printf("%s比%s大.\n",compare1,compare2);
}else if (resultCompare<0){
printf("%s比%s小.\n",compare1,compare2);
}else{
printf("%s和%s一样大.\n",compare1,compare2);
}
//查找字符串中的空格数 "i will right here waitting for you "
char findString[]="i will right here waitting for you ";
int countFind=0;
for (int i=0; i<strlen(findString); i++) {
if (findString[i]==' ') {
countFind++;
}
}
printf("for找到的共有%d个空格\n",countFind);
int i=0;
countFind=0;
while (findString[i]!='\0') { //因为字符串是以'\0'为结束的标识符
if (findString[i]==' ') {
countFind++;
} i++;
}
printf("while找到的共有%d个空格\n",countFind);
//定义一个字符串,倒序输出这个字符串
//1、
printf("利用数组的倒序:");
char printString[]="mnthqwer";
for (int i=strlen(printString); i>=0; i--) {
printf("%c",printString[i]);
}
printf("\n--------------\n");
//2、
//利用第三方来交换后获得倒序字符串
printf("老大老实的计算:");
char printOther[10]={0};
int lengthOfprintString=0;
lengthOfprintString=strlen(printString);
for (int i=0; i<lengthOfprintString; i++) {
printOther[i]=printString[lengthOfprintString-1-i];
}
for (int i=0; i<lengthOfprintString; i++) {
printf("%c",printOther[i]);
}
printf("\n");
return 0;
}
相关文章推荐
- ios--c DAY_3
- 精通iOS
- iOS笔记060 - 自定义控件
- IOS开发基础之NSBundle
- iOS 之 block
- iOS集成ShareSKD第三方登录
- OC_NSArray和NSMutableArray
- ios CAAnimation动画结束后会闪烁一下
- iOS地图----MapKit框架
- (转载)iOS开发中断言的使用—NSAssert()
- ios开发中的小技巧
- IOS使用navigationController跳转到下一页面黑屏问题。
- iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
- IOS开发初学--XCODE篇
- iOS多线程编程之NSThread的使用
- IOS之pageControl
- iOS设计模式-模板方法
- iOS静态库与Workspace在项目中的使用
- iOS咱们一起学吧
- IOS NavigationBar 背景色