1.一维数组
1.一维数组的定义格式为:
类型说明符 数组名[常量表达式]; 例如: int a[10];
它表示定义了一个整形数组,数组名为a,有10个元素。
2.在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。
3.常量表达式中可以包括常量和符号常量,但不能包含变量
2.``冒泡法,选择法。
#include<stdio.h> //冒泡法
int main()
{
int i,j;
int a[10] = {0};
for(i = 0; i < sizeof(a) / sizeof(a[0]); i++);
{
scanf("%d", &a[i]);
}
for(i=0; i < sizeof(a) / sizeof(a[0])- 1; i++)
{
for(j = 0; j < 10 - i - 1;j++)
{
if(a[j] > a[j+1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
for(i = 0; i < 10; i++)
{
printf("%d", a[i]);
}
print("\n");
return 0;
}
#include<stdio.h> //选择法
int main()
{
int a[10];
int i ,j;
for(i = 0; i < 10; i++)
{
printf("please input ten number:\n");
scanf("%d", &a[i]);
}
for(i = 0; i < 8 - 1; i++)
{
for(j=0; j < 10;j++)
{
int t;
if(a[i] > a[j])
t = a[i];
a[i] = a[j];
a[i] = t;
}
}
for(i = 0; i < 10; i++)
{
printf("%d\n",&a[i]);
}
return 0;
}
3.二维数组
a[2][3]={{1,2,3},{4,5,6}};
= | 1 2 3 |
| 4 5 6| a[0][0]=1 ,a[2][1]= 4
a[1] + 1 // a[1]数组第二行的首行首元素, +1 数组第二行的第二个元素 就是 a[1][1]
&a[1][1] // 取a[i][i]的地址
(*(a + 1)) +1 // (a + 1) = a[1] 取内容
a+ 5 // 首行地址 +5
4.字符数组
为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”——‘\0’。
输出字符不包括结束符′\0′ , 如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。
strcat函数
其一般形式为:strcat(字符数组1,字符数组2)
Strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个
strncat :eg:strncat (a, “1234567”,2)只连接到字符串“12”,后面不连接。
函数值——字符数组1的地址。
strcpy: 拷贝的作用(字符串)
strncpy : (字符)eg:strncpy (a,b,3) 只拷贝标数组的3个字符到a数组里
strcmp : 比较字符串大小
strncmp : 和上述一样,只比较到 n位。
比较的结果由函数值带回
(1) 如果字符串1=字符串2,函数值为0。
(2) 如果字符串1>字符串2,函数值为一正整数。
(3) 如果字符串1<字符串2,函数值为一负整数。
注意:对两个字符串比较,不能用以下形式:
if(str1>str2)
printf(″yes″);
而只能用
if(strcmp(str1,str2)>0)
printf(″yes″);
**strchr函数
函数原型:char strchr(const char s, int c);
函数功能:查找字符c在s指向的字符串中首次出现的位置。
例如:char str[32] = “helloworld”;
strchr(str, ‘o’) - str;
结果是4。
6.字符数组的位置编程
字符数组中在指定位置插入字符
char str[32]是初始化,
length是有输入进去的字符串,不是str[32]
数组的插入是向右移动的,是从最右边开始进行移动的。
7.函数调用及定义
eg:冒泡法
原程序:```
#include<stdio.h> //冒泡法
int main()
{
int i,j;
int a[10] = {0};
for(i = 0; i < sizeof(a) / sizeof(a[0]); i++);
{
scanf("%d", &a[i]);
}
for(i=0; i < sizeof(a) / sizeof(a[0])- 1; i++)
{
for(j = 0; j < 10 - i - 1;j++)
{
if(a[j] > a[j+1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
for(i = 0; i < 10; i++)
{
printf("%d", a[i]);
}
print("\n");
return 0;
}
```
可以用函数调用的方式改为:
调用函数的步骤:
1.通过函数名找到函数入口地址
2.给形参分配空间
3.传值(值传递,地址传递)
4.执行函数
5.返回
6.释放栈空间