内含经典问题:起泡法
一、一维数组
定义
类型说明符+数组名[ 常量(10)]表示从0-9的十个数组,并不存在数组元素为10的数组。
初始化
1.在定义的过程中赋予初值
可以用花括号直接定义赋值a[5]={0,1,2,3,4};也可以分开赋值:a[0]=0;a[1]=1;a[2]=2;…
自定义部分数组
计算机只会判断已定义的数组元素,默认未定义的数组元素为0
经典问题:冒泡法
对10个数从大到小排序(假设有n个数,一共要经过n-1趟比较,每i趟要进行n-i次比较)
#include<stdio.h>
int main ()
{
int a[10],i,j,t;
printf ("请输入10个任意整数:\n");
for (i=0;i<=9;i++)
scanf("%d",&a[i]);
for (j=0;j<=9;j++)
{
for (i=0;i<=9-j;i++)
{
if (a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for (i=0;i<10;i++)
{
printf("%d",a[i]);
printf("\n");
}
}
二、二维数组
定义
类型说明符+[ 常量表达式1 ] [ 常量表达式2 ],为表达式1 行,表达式2 列。也可以把a[0],a[1],a[2]分别当做3个一维数组名,计算机内存条数组是按行排列。
引用
1.全部定义:同一维,数组的元素都是从0开始。a[2] [2]={{1,2},{3,4}};
2.部分定义,没定义者按照0算。
三、字符数组
**注释: **
1.
如果是一个字符串,内中间含有空格。用数组分开表达。如:{How are you?}如果只一味的计算字节,设char c[13],但是输出结果只是How,因为系统会把空格字符作为分隔符。
2.scanf函数在输入字符数组时,不要在加&,因为在c语言中,数组名代表数组的起始位置。
字符处理函数
- stract 函数(字符串连接)
两个字符串的地址合并,但首先合并前的长度要足够。
stract(表达式1,表达式2)
2.strcpy和strncpy
strcpy为字符串复制函数:strcpy(字符数组1,字符串2)strcnpy是复制指定的前n个。strcnpy(str1,str2,2)及讲字符串2中的前两个字符传给字符串1。
3.strcmp函数:比较长度
strcmp(1,2)按照两个字符串的ASCII码大小比较。(即在字典前的大于在字典后的,大写小于小写)
4.strlen函数(测量字符串实际长度的函数)
5.gets()从终端输入一个字符串传到字符数组
6.strstr:返回字符串中首次出现子串的地址。
int main()
{
char s[6]="abcdef";
char c[2]="cd";
char *n=strstr(s,c);
printf("%s",n);
}
四、函数与数组
形式:int arry(double alr[],int n)
,第一个参数为另外一个数组名称,这里可看作成一个指针(表示alr数组的第一个元素地址),后者为要处理的元素个数