C语言之数组

1.数组的定义

*单一的变量很难满足需求,这个时候多变量的集合数组出现了 数组的定义 类型 数组名[数组大小];

 int arr[100];   //定义100个int类型的变量 

类型可以是int double float char 这些基本数据类型中的任意一种

2.数组的初始化

 int arr[10] = {1,2,3,4,5,6,7};  //初始化
 arr[1] = 100;                   //赋值

数组元素的使用

3.数组的使用方式

 for(int i=0;i<100;i++)
 {
     arr[i]=i+1; //给数组赋值从1到100
 }

下标运算符[]
[ ]里面的数字 称之为下标
下标从0开始
下标不能超过定义的数组大小
int arr[4];
arr[4] = 5; //错误写法 arr数组只有0,1,2,3这三个下标

4.注意事项

初始化可以给一组数据赋值,后面用{} 括起你要赋值的数据,数据用逗号隔开
赋值的个数少 未赋值的用0赋值
#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7}; //初始化
for (int i = 0; i < 10; i++)
{
printf("%d\t", arr[i]); //打印结果为1 2 3 4 5 6 7 0 0 0
}
printf("\n");
return 0;
}

——————————————————————————

定义数组的时候可以不指定数组大小,但必须初始化,系统自动分配大小
int arr[]; //错误
int arr[]={1,2,3,4,5,6};//正确
数组的大小不建议省略

——————————————————————————

5. 字符数组

字符串常量
什么是字符串常量
一般用一对双引号" “括起的一串字符来表示字符串常量 例如:“hello world”
字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中。
%s用于打印字符串
printf(”%s", “hello world”);
字符数组
字符串只能用字符数组存放
char str[128]; //字符数组
printf(“请输入一段文字\n”);
scanf("%s", str);//让用户输入一个字符串
printf(“用户输入的内容是:%s”, str);
字符串用’\0’ 作为字符串结尾
\0 对应的ASCII码是0
一般使用字符串的时候会自动加在后面

一段代码让你了解字符串
首先输入下面的代码,运行

#include<stdio.h>
int main()
{
char arr[128];
printf(“请输入一段文字:”);
scanf("%s",arr);
printf("%s\n",arr);
for(int i=0;i<128;i++)
{
printf("%c",arr[i]);
}
return 0;
}
输入helloworld 运行结果

请输入一段文字:helloworld
helloworld
helloworld 烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫 烫烫烫烫蘌ress any key to continue
你输入helloworld,%s打印helloworld
%c打印helloworld之后有一个空格,然后后面全是烫烫烫烫
事实表明每一个字符串后面都有一个’\0’
烫烫烫烫烫烫烫烫烫烫烫烫是没有意义的,因为他们没有赋值,换成%d打印arr里面的元素,你会发现烫烫烫对应的数字为-52,而ASCII码表只有0~128,所以显示乱码
字符串的赋值方式
单个元素赋值(不推荐)
char arr[6];
arr[0]=‘h’;
arr[1]=‘e’;
arr[2]=‘l’;
arr[3]=‘l’;
arr[4]=‘o’;
arr[5]=’\0’;
printf(“arr字符串内容为:%s\n”,arr); //输出hello
初始化赋值字符串
char arr[6]=“hello”;
printf(“arr字符串内容为:%s\n”,arr); //输出hello
中文 一个汉字需要占用两个char
汉字占用两个字节 (视为字符串) 不能用%c打印中文
注意事项
输入数组的时候不用加&取地址符号,只需要输入数组名(数组名就是地址)
char str[128]; //字符数组
scanf("%s", str);//让用户输入一个字符串
字符数组单个元素赋值一定要加’\0’否则会出现乱码 “烫烫烫”
尽量保证字符数组足够大,否则输入的内容大于字符数组大小会出现越界。
char arr[10] = “helloworld”; //数组大小太小了 会报错
字符串函数

字符串输入输出函数

gets
用法:gets(字符数组名) 用于输入一个字符串
puts
用法:puts(数组名) 用于输出一个字符串
字符串处理函数

需要加头文件#include<string.h>

strcmp
用法:strcmp(字符串,字符串2) 比较两个字符串
#include<stdio.h>
#include<string.h>
int main()
{
char a[20],b[20];
puts(“请输入字符串a:”);
gets(a);
puts(“请输入字符串b:”);
gets(b);
int temp=strcmp(a,b);
if(temp==0)
printf(“这两个字符串相同\n”);
else if(temp>0)
printf(“字符串a比b大”);
else if(temp<0)
printf(“字符串a比b小”);
return 0;
}
需要注意的是比较规则不是看ASCII码值的大小

strcpy
用法:strcpy(字符数组1,字符串2 ) 将字符串2复制到字符数组1中去(覆盖)
char str1[10],str2[]=“hello”;
strcpy(str1,str2); //str1的内容是"hello"
strcat
用法:strcat(字符数组1,字符数组2) 将字符串2拼接到字符数组1中去(追加)
char str1[10]=“hello”,str2[]=“world”;
strcat(str1,str2); //str1的内容是"helloworld"
strlen
用法:strlen(字符串) 求字符串长度(\0前面有效字符的个数)
printf(“字符串的长度为:%d”,strlen(“hello”));
//打印字符串的长度为:5
不常用函数
函数作用strstr(字符串1,字符串2)断一个字符串里面是否含有某个字符strlwr(字符串)将字符串中大写字母转换成小写字母strupr(字符串)将字符串中小写字母转换成大写字母

strstr使用示例

if (strstr("张三李四王五", "四王") != 0)	//字符串2属于字符串1返回不为0的数,否则返回0
{
	puts("字符串1中含有字符串1");
}
else
{
	puts("字符串1中不含字符串2");
}

注意事项

gets和scanf的区别
同样是输入字符串,gets输入的字符串可以包含空格,scanf遇空格结束输入

示例
#include<stdio.h>
int main()
{
char arr[128];
printf(“请输入字符串:”);
gets(arr);
printf(“你输入的字符串为:%s\n”,arr);

printf("请输入字符串:");
scanf("%s",arr);
printf("你输入的字符串为:%s\n",arr);
return 0;

}
输入输出:

请输入字符串:hello world
你输入的字符串为:hello world
请输入字符串:hello world
你输入的字符串为:hello
Press any key to continue
字符串处理函数一定要加头文件
#include<stdio.h>
strcpy,strcat这两个函数要注意字符数组的大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的;

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值