一维数组
数 组:一组具有相同数据类型的数据的有序集合
数组名:这个集合的名称
下 标:某个数据在数组中的序号
数组名和下标唯一确定数组中的一个元素
一维数组:数据类型符 数组变量名[整型常量表达式];int a[10]; float b[20]; char c1[5],c2[10];
一维数组元素:数组名[元素下标0 1 2 3...]
一维数组的赋值
1.初始化赋值: 数据类型符 数组变量名[常量表达式] = {表达式1,表达式2,....表达式n}
2.先声明,再赋值。
赋值语句: int a[3]; a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 2;
int a[3];
for(i = 0; i < 3; i++)
scanf("%d",&a[i]); //循环赋值
应用实例:
1.字符统计:输入一行字符,统计其中各个大写字母出现的次数。
#include <stdio.h>
void main()
{
char ch;
int num[26] = {0}, i;
while(ch = (getchar()) != '\n') //输入字符,判断统计
if(ch >= 'A' && ch <= 'Z') //是否为大写字母
num[ch-'A']++;
for(i = 0; i < 26; i++) //输出结果
{
if(i % 9 == 0)
printf("\n");
printf("%c(%d)", 'A'+i, num[i]);
}
printf("\n");
}
2.冒泡排序
用冒泡排序法将10个整数按照从小到大的顺序排序。
#include <stdio.h>
#define NUM 10
void main()
{
int a[NUM], i, t, flag;
printf("input %d numbers:", NUM);
for(i = 0; i < NUM; i++)
{
scanf("%d", &a[i]);
}
for(i = 1; i < NUM; i++)
{
flag = 0;
for(j = 0; j < NUM -i; j++ )
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
flag-1;
}
}
if(flag == 0) break;
}
printf("the sorted numbers:\n");
for(i = 0; i < NUM; i++)
printf("%d ", a[i]) ;
printf("\n");
}
3.选择排序
#include <stdio.h>
void main()
{
int a[6], i, j, k, x;
printf("input 7 numbers : \n");
for(i=0; i<6; i++)
{
k = i;
for(j=i+1; j<=6; j++)
{
if(a[j]<a[k])
k = j;
if(i != k)
x = a[i]; a[i] = a[k]; a[k] = x;
}
}
printf("the sorted numbers : \n");
for(i=0; i<6; i++)
printf("%d ", a[i]);
}
4.斐波那契排序
F1 = 1
F2 = 1
Fn = Fn-1 + Fn-2 (n>=2)
#include <stdio.h>
void main()
{
int F[20] = {1, 1}, i;
for(i = 2; i < 20; i++)
F[i] = F[i-2] + F[i-1];
for(i=0; i<20; i++)
printf("%d ",F[i]);
}