字符数组c语言例题,c语言中的字符串数组
一.数组1.1。数组的概念是一种数据结构,用于存储一组相同类型的数据。有点像班上的手机袋,超市的储物柜。
特点:只能存储一种类型的数据,比如全int类型或者全char类型,数组中的数据变成元素。
1.2.数组的定义格式:键入数组名[元素个数];
示例:存储五个人的年龄。
int ages[5];//在内存中开辟4x5=20字节的存储空间
char str[]={x , y };
char str[]= xy ;
双数组[10];
您可以在定义数组时初始化它:
int ages[5]={17,18,19,20,21 };
遍历数组:
for(int I=0;我我)
{
printf("ages[%d]=%d\n ",I,ages[I]);
}
注意:
(1)数组的初始化
.int ages[5]={17,18,19,20,21 };//一般写作
.int ages[5]={17,18 };//只给前两个元素赋值
.int ages[5]={[3]=10,[4]=11 };//为指定的元素赋值,这里是第三和第四个元素
.int ages[]={11,12,13}。//正确。如果确定了右边的元素,则可以省略该数字。这里,有三个。
.int ages[];//错误,编译器无法知道应该分配多少存储空间。
.int ages[5];年龄={17,18,19,20,21 };//错误,定义数组时只能这样初始化。
.int ages[A]={1,2,3 };//正确,相当于年龄[65]
.int count=5;int ages[count];//不初始化的话,这个写法是对的。编译器不会报告错误,并为其分配20字节的存储空间。年龄[0]=1;年龄[1]=2;可以像这样给数组的元素赋值,但是元素2,3,4等的值。都不确定。
。并且int count=5;int ages[count]={1,2,3,4,5 };//这种写法不对。定义数组时,数组被初始化。元素的数量必须是常数或不成文的,而不是变量。
然而,当访问一个数组时,它是通过使用相同的数组名及其不同的下标来访问的。下标必须从0开始计算,所以最后一个元素的下标是“length -1”。也就是说,数组元素的一般形式是:数组名[下标]
#include stdio.hvoid main(){ //数组定义int a[5],I;//定义一个长度为5的int类型数组,相当于定义了5个变量。//使用数组元素,0-5称为下标a[0]=100;a[1]=200;a[2]=300;a[3]=400;a[4]=500;//循环输入for(I=0;i5;i ) { scanf(%d ,a[I]);}//遍历数组中的每个元素for(I=0;i5;i ) { printf(%d \n ,a[I]);}}
1.3.计算平均分和总分。/*注:你的选择是c ide */# include stdio . h void main(){//定义一个长度为10的float数组,//循环输入10个学生的成绩//计算平均分和总分//用数组定义int I;浮点标记[10],s=0;//为(I=0,定义一个长度为10,0-9的浮点数组;i 10i ) { printf(mark[%d]=,I);scanf(%f ,标记[I]);} for(I=0;i 10i ) { s=s标记[I];} printf(总分:%.2f ,s);Printf(平均分:%.2f ,s/10);}
1.4.数组初始化初始化赋值的一般形式是:
类型说明符数组名[常量表达式]={value,value…value };
其中,{}中的每个数据值是每个元素的初始值,这些值用逗号分隔。例如:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 };
相当于a[0]=0;a[1]=1.a[9]=9;
只能给一些元素赋初始值,但是值的个数大于数组元素的个数。当{}中值的个数小于数组元素的个数时,只对第一部分元素赋值;当数目大于数组元素的数目时,它就越界了。
只能逐个给元素赋值,而不能给整个数组赋值。
如果所有元素都被赋值,数组元素的数目可能不会在数组的描述中给出。
# include stdio . h void main(){ int I,a[]={1,2 };for(I=0;i3;i ) { printf(%d\n ,a[I]);} }1
2
1.5.求最大数# include stdio . h void main(){ int a[]={ 95,59,98,0,35,46,8,-1,99,98},max,I;//假设最大数是a[0]max=a[0];//遍历并枚举for(I=1;i 10I){ if(a[I]max){ max=a[I];} } printf(%d ,max);}99
1.6.冒泡排序是计算机科学领域中一种简单的排序算法。
冒泡排序算法的操作如下:比较相邻元素(从后向前)。如果第一个比第二个大,两个都换。对每一对相邻的元素做同样的工作,从开始的第一对到结束的最后一对。此时,最后一个元素应该是最大的数字。对除最后一个元素之外的所有元素重复上述步骤。每次对越来越少的元素重复上述步骤,直到没有要比较的数字对。
泡泡分类舞蹈示范
/*注意:您的选择是C IDE */
#include stdio.h
void main()
//冒泡排序
int a[]={195,99,98,0,-35,46,8,-10,99,98},I,j,t;
for(I=0;I 9;我)
for(j=0;j 9-I;j)
if(a[j] a[j 1])
t=a[j];
a[j]=a[j 1];
a[j ^ 1]=t;
for(I=0;i 10我)
printf(%d \n ,a[I]);
}
N数排序,外重循环N-1,内重循环N-1-i,比较交换
泡泡分类和匈牙利民间舞蹈
第二,字符串
2.1.字符串的概念和定义
C中的字符数组是一个字符串,字符串是一个特殊的字符数组。
单字符数组的定义
例如:
char c[10];/*单字符数组,即字符串*/
单字符数组的初始化
例如:
char c[10]={H , e , l , l , \ 0 };
char c[]={H , e , l , l , o ,0 };
在这种初始化方法中,系统不会自动添加字符串终止符,也就是 \0 字符,只好人工添加。
字符串结束标志:C语言中没有特殊的字符串变量。通常,字符数组用于存储字符串。字符串常量总是使用 \0 作为字符串的终止符。因此,当字符串存储在数组中时,终止符 \0 也存储在数组中,用作字符串结束的标志。有了 \0 标志,就不再需要根据字符数组的长度来判断字符串的长度。
/*注意:您的选择是C IDE */
#include stdio.h
void main()
//字符串(糖葫芦)
char str[]={H , e , l , l , \ 0 };
int I;
char str 1[]= Kitty ;
printf(%s ,str 1);
for(I=0;i5;我)
printf(\n %c ,str 1[I]);
}
2.2、字符串输入和输出
2.2.1、使用scanf和printf可以完成字符串的输入。
字符串[100];
scanf(%[^\n]s,str);
printf(%s ,str);
2.2.2.使用get和puts来完成。
/*注意:您的选择是C IDE */
#include stdio.h
#include string.h
void main()
//输入数组字符串时不需要获取地址。
char name[100];
获取(名称);//从键盘输入字符串
认沽(名称);//输出字符串
}
2.3.字符串连接函数strcat
格式:
Strcat(字符数组名1,字符数组名2)
功能:
将字符数组2中的字符串连接到字符数组1中的字符串后面,删除字符串1后面的字符串标记“\0”。这个函数的返回值是字符数组1的第一个地址。
注意:第一个参数只能是字符数组变量,不能是字符串常量。
#include stdio.h
# include“string . h”;
void main()
char str 1[100]= Hello ;
char str 2[]= Kitty ;
//使用strcat函数将str2的内容复制到
//str1,仅适用于字符串。
strcat(str1,str 2);
printf(%s \n ,str 1);
printf(%s \n ,str 2);
}
2.4.字符串复制函数strcpy
格式:
Strcpy(字符数组名1,字符数组名2)
功能:
将字符数组2中的字符串复制到字符数组1中。字符串结束标志“\0”也被复制。字符2也可以是字符串常量。这相当于将一个字符串赋给一个字符数组。
/*注意:您的选择是C IDE */
#include stdio.h
# include“string . h”;
void main()
char str1[100]=好家伙!;
char str2[]=女孩!;
printf(%s \n ,str 1);
printf(%s \n ,str 2);
//将str2的内容复制到str1中
strcpy(str1,str 2);
printf(%s \n ,str 1);
printf(%s \n ,str 2);
}
2.5.字符串比较函数strcmp
格式:
Strcmp(字符数组名1,字符数组名2)
功能:
按照ASCII码顺序比较两个数组中奇偶校验字母的大小,通过函数的返回值返回比较结果。
如果字符串1=字符串2,返回值=0;
2 string字符串2,返回值为0;
1字符串string 2,返回值为0。
这个函数也可以用来比较两个字符串常量,或者用字符串常量比较数组。
/*注意:您的选择是C IDE */
#include stdio.h
# include“string . h”;
void main()
char str 1[]= Abe 123 ;
char str 2[]= Abd ;
//-1小于
//0等于
//1大于
printf(%d ,strcmp(str1,str 2));
}
一个
2.6.获取字符串长度函数strlen
格式:
Strlen(字符数组名)
功能:
计算数组中字符串的实际长度(不包括字符串结束标志“\ 0”),并将该长度作为函数返回值返回;你也可以计算字符串常量的长度。
/*注意:您的选择是C IDE */
#include stdio.h
# include“string . h”;
void main()
char str 1[]= Abe 123 ;
//获取字符串的长度,中文占两位数
printf(\n %d ,strlen(str 1));
}
六
更多功能请点击此处。
2.7.阵列移动作业P181
/*注意:您的选择是C IDE */
#include stdio.h
void main()
//10
int a[]={3,6,9,15,18,26,98,0,0,0},n,p=7,I;
//输入要插入的数字
scanf(%d ,n);
//确定位置
for(I=0;I 7;我)
If(a[i]=n)//如果数组中的当前数字与n相同
p=I;
打破;
//移动
for(I=7;我我-)
a[I]=a[I-1];
//插入
a[p]=n;
//显示结果
for(I=0;I 8;我)
printf(%d \t ,a[I]);
}
3.二维数组
一个数组是线性的,两个数组是平面的。
/*注意:您的选择是C IDE */
#include stdio.h
void main()
int a[3][3],I,j;
a[0][0]=1;
a[0][1]=5;
for(I=0;i3;我)
for(j=0;j 3;j)
a[I][j]=I * j;
for(I=0;i3;我)
for(j=0;j 3;j)
printf(a[%d][%d]=%d \t ,I,j,a[I][j]);
printf( \ n );
}
/*注意:您的选择是C IDE */
#include stdio.h
void main()
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},I,j;
for(I=0;i3;我)
for(j=0;j 3;j)
printf(a[%d][%d]=%d \t ,I,j,a[I][j]);
printf( \ n );
}
四。课堂范例和作业源文件下载
点击下载。
来自的。转载请联系作者取得授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。