数组
一般表达式
定义一维数组的一般形式:类型符 数组名[常量表达式] 例如int a[10]
下标法表示数组中某个值,从0开始计数
在内存中是连续的
cmd中 cd..是退回上层目录
int a[10];//总数为10个
int i;
//stupid赋值法
/*
a[0]=100;
a[1]=101;
a[2]=102;
a[3]=103;
...
*/
for(i=0;i<10;i++){
a[i]=i+100;
}
puts("初始化完毕,结果如下:");
for(i=0;i<10;i++){
printf("address: %p data: %d\n",&a[i],a[i]);
}
return 0;
结果:
初始化方式
全部初始化
int a[10]={1,2,3,4,5,6,7,8,9,10};
部分初始化
int b[10]={1,2,3};
自动补0
初始化0
int c[10]={0};
其他写法
int d[]={1,2,3,4,5,6};
例如
int d[]={1,2,3,4,5,6};
int size,size1,size2;
int i;
size = sizeof(d)/sizeof(d[0]);//数组元素个数,sizeof()是一个关键字,不是一个函数。计算字节数量
size1 = sizeof(d);
size2 = sizeof(d[4]);
printf("size %d\n",size);
printf("size1 %d\n",size1);
printf("size2 %d\n",size2);
for(i=0;i<size;i++){
printf("address: %p data: %d\n",&d[i],d[i]);
}
return 0;
练习
对一个数组赋值0,1,2,3,4,5,6,7,8,9并逆序输出
#include <stdio.h>
int main()
{
int a[10];
int i;
printf("a数组初始化如下:\n");
for(i=0;i<10;i++){
a[i]=i;
printf("%d ",a[i]);
}
printf("\na数组逆序输出如下如下:\n");
for(i=9;i>-1;i--){
printf("%d ",a[i]);
}
return 0;
}
斐波那契数列
#include <stdio.h>
int main()
{
int arr[30];
int i;
int arrayrSize;
arrayrSize = sizeof(arr)/sizeof(arr[0]);
arr[0]=0;
arr[1]=1;
puts("30个斐波那契数列如下:");
for(i=2;i<arrayrSize;i++){
arr[i]=arr[i-1]+arr[i-2];
}
for(i=0;i<arrayrSize;i++){
printf("%d ",arr[i]);
}
return 0;
}
冒泡排序法
#include <stdio.h>
int main()
{
int arr[] = {12,8,13,9,1,101,90,34,90};
int i;//行
int j;//列
int temp;
int len = sizeof(arr)/sizeof(arr[0]);
printf("原数组序列为:");
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
printf("\n升序排列:");
for(i=0;i<len-1;i++){
for(j=0;j<len-1-i;j++){
if(arr[j] > arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
printf("\n降序排列:");
for(i=0;i<len-1;i++){
for(j=0;j<len-1-i;j++){
if(arr[j] < arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
return 0;
}
简单选择排序法
#include <stdio.h>
int main()
{
int arr[] = {12,8,13,9};
int i;//行
int j;//列
int temp;
int num = 0;
int len = sizeof(arr)/sizeof(arr[0]);
printf("原数组序列为:");
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
printf("\n升序排列:");
for(i=0;i<len-1;i++){
for(j=i+1;j<len;j++){
if(arr[i] > arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
num++;
}
}
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
printf("\n一个比较了%d次\n",num);
num = 0;
printf("\n降序排列:");
for(i=0;i<len-1;i++){
for(j=i+1;j<len;j++){
if(arr[i] < arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
num++;
}
}
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
printf("\n一个比较了%d次\n",num);
return 0;
}
OK