十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一、字符数组的定义
创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,微信平台小程序开发,十余年建站对岗亭等多个行业,拥有丰富的网站建设经验。
一维字符数组:用于存储和处理1个字符串,其定义格式与一维数值数组一样。
char str[20];
二维字符数组:用于同时存储和处理多个字符串,其定义格式与二维数值数组一样。
char country[10][20];
country[i]:第i个字符串
二.字符数组的初始化
字符数组的初始化.
1.可以通过为每个数组元素指定初值字符来实现。
char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};
char str[ ]={"I am happy"}; 可以省略花括号,如下所示
char str[ ]="I am happy";
char country[10][20]={“china”,”japanese”,……};
注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的
char str[15];
str="I am happy";
strcpy(str, "I am happy");
不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘’括起来的)作为初值。
‘a’ “a”区别
三、字符数组的引用
字符数组的逐个字符引用,与引用数值数组元素类似。
(1)字符数组的输入
除了可以通过初始化使字符数组各元素得到初值外,也可以使用getchar()或scanf()函数输入字符。
例如:
char str[10];
…… for(i=0; i10; i++)
{ scanf(\"%c\", str);
fflush(stdin); /*清除键盘输入缓冲区*/
}
这里只是一部分具体你查看这里:
//代码1
//要输入多少个数据:6
//1 2 3 4 5 6 (连续输入6个数据)
//1 4 9 16 25 36 (结果)
#includestdio.h
#includestdlib.h //用于调用函数malloc()
void pr(int p[],int j);
int main()
{
int i,j;
int *a; //指向动态内存
printf("要输入多少个数据:");
scanf("%d",j);
//创建动态内存
a=(int *)malloc(j * sizeof(int));
if(a == NULL)
{
printf("\n分配动态内存时出错.\n");
exit(1);
}
for(i=0;ij;i++)
{
scanf("%d",a[i]);
}
pr(a,j);
//原代码for(int i=0;ij;i++)
for(i=0;ij;i++)
{
//原代码printf("%5d\n",a[i]);
printf("%d ",a[i]);
}
return 0;
}
void pr(int p[],int j)
{
int i;
for(i=0 ; ij ; i++)
{
p[i]=p[i]*p[i];
}
}
//
//代码2
#includestdio.h
#includestdlib.h //用于调用函数malloc()
void pr(int p[],int j);
int main()
{
int buf[]={1,2,3,4,5,6};
int i,j;
int *a; //指向动态内存
//计算数组buf的大小
j=sizeof(buf)/sizeof(int);
//创建动态内存
a=(int *)malloc(j * sizeof(int));
if(a == NULL)
{
printf("\n分配动态内存时出错.\n");
exit(1);
}
for(i=0;ij;i++)
{
a[i]=buf[i];
}
pr(a,j);
printf("原数组里的数据: ");
for(i=0;ij;i++)
{
printf("%d ",buf[i]);
}
printf("\n");
printf("运算后的数据: ");
for(i=0;ij;i++)
{
printf("%d ",a[i]);
}
return 0;
}
void pr(int p[],int j)
{
int i;
for(i=0 ; ij ; i++)
{
p[i]=p[i]*p[i];
}
}
//
给你看一下我的代码
#includestdio.h
void main(){
int a[10],b[10],i,j,temp;
for(i=0;i10;i++){
printf("请输入第%d个数:",(i+1));
scanf("%d",a[i]);
//保存数组,因为输入完数组要冒泡排序,排序后的元素顺序可能和原数组不一样
b[i]=a[i];
}
//冒泡排序,求最大值
for(i=0;i9;i++){
for(j=0;j9-i;j++){
if(a[j]a[j+1]){ //这里控制的升序还是降序,我这是降序
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//查找最大值在原数组的位置
for(i=0;i10;i++){
if(b[i]==a[0]){ //降序的话最大值是a[0],升序的话最大值是a[9]
break; //一旦找到最大值,马上跳出循环
}
}
printf("最大值是%d,它在原数组中是第%d个元素!\n",a[0],(i+1));
}
没有这样的库函数,都比较简单的,自己写个好了
如果是字符串数组,strchrstring.h可以查找某个字符是否在这个字符串数组中