C语言入门(五)

数组运算、字符、字符串

数组运算

数组的集成初始化和定位

//集成初始化
int a[] = {1,2,6,4,3,8,12,34};
//集成初始化的定位
int b[10] = {
	[0] = 2, [2] = 3,6,
};
  • 用n在初始化中给出定位
  • 没有定位的数据接在前面的数据位置的后面
  • 其他的位置的值补零
  • 没有n的时候让编译器自己数
  • 特别适合比较稀疏的数组

数组的大小和赋值

  • sizeof给出整个数组内容所占的大小,单位是字节:sizeof(a)/sizeof(a[0])
  • sizeof(a[0])是数组中单个元素的大小,于是相除就得到了数组元素的个数
  • 数组变量本身不能被赋值
  • 想要进行数组的赋值只能通过遍历的方式

选择排序
数组实现选择排序

#include <stdio.h>
int max(int a[], int n)
{
	int mid = 0;
	for(int i = 1; i < n; i++)
	{
		if(a[i] > a[mid])
		{
			mid = i;
		}
	}
	return mid;
}

int main()
{
	int n;
	scanf("%d", &n);
	int a[n];
	for(int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	int len = sizeof(a)/sizeof(a[0]);
	for(int j = len-1; j > 0; j--)
	{
		int maxid = max(a, j+1);
		int t = a[maxid];
		a[maxid] = a[j];
		a[j] = t;
	}
	for(int m = 0; m < len; m++)
	{
		printf("%d ", a[m]);
	}
	return 0;
}; 

字符

char是一种整数,也是一种特殊的类型:字符
用单引号表示字符:‘a’,‘2’
printf和scanf中用%c来输入输出字符

a = 1;
scanf("%c",&a);	//a = 1
scanf("%d",&a)	//a = 49
  • '1’的ASCll表中编码是49,所以a == 49也表示a=‘1’;

逃逸字符

字符意义字符意义
\b回退一格"双引号
\t到下一个表格位单引号
\n换行|反斜杠本身
\r回车

字符串

  • 以0(整数0)为结尾的一串字符
  • 0和’\0’是一样的但是和’0’不同
  • 0表示字符串结束的标志,但不是字符串的一部分
  • 计算字符串长度的时候不包括这个0
  • 字符串以数组的形式存在,以数组或指针的方式访问

字符串变量

//字符串变量
char *str = "hello";
char str[] = "hello";
char str[10] = "hello";
  • C语言的字符串是以数组的形式存在的
  • 不能用运算符对字符串进行操作
  • 可以用数组的方式对字符串进行遍历

字符串常量

char *s = "hello world";
  • s是一个指针,初始化指向一个字符串常量
  • 实际上char *s == const char *s;
  • 如果需要修改字符串应该用:char s[]=“hello world”;

常见的字符串函数

  • strlen
    求字符串长度
//原型
size_t strlen(const char *s);
//返回值
返回s的字符串长度(不包括结尾的0);:
int a = "hello";
strlen(a) = 5;
sizeof(a) = 6;
  • strcmp
    比较两个字符串
//原型
int strcmp(const char *s1,const char *s2);
//返回值
0:s1 == s2
1:s1 > s2
-1:s1 < s2
  • strcpy
    把src字符串拷贝到dst
//原型
char* strcpy(char *restrict dst,const char *restrict src);
//返回值
返回dst
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晶小生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值