1.一维数组:
(1)一维数组的定义:
数据类型 数组名[数组长度]; int a[10];
(2)数组的地址就是第一个元素的首地址,数组的名字就代表数组的地址,且是一个常量。
(3)数组的下标:元素在数组中的位置,下标是从0开始的。所以数组的下标最大只能为数组的长度减1,使用过程中,注意不要下标越界。
(4)数组的初始化:
直接给所有元素进行赋值;
给部分元素进行赋值,未赋值的元素默认为0;
直接省略长度,大括号里元素个数就是数组长度;
(5)冒泡排序:
排序思路:
假设数组有n个元素,那么最外层循环(一共要比较多少趟)循环变量 ( i )需要 i<n-1,里层的循环(每趟要比较多少次)循环变量 ( j ),需要 j<n-1-i
例:
1.输入10个成绩并计算其平均分
#include <stdio.h>
int main(int argc, const char * argv[])
{
float grade[10];
printf("请输入成绩:");
for (int i=0;i<10;i++)
{
scanf("%f",&grade[i]);
}
float ave=0.0;
for (int j=0;j<10;j++)
{
ave = ave+grade[j];
}
printf("ave= %f",ave/10);
return 0;
#include <stdio.h>
int main(int argc, const char * argv[])
{
float grade[10];
printf("请输入成绩:");
for (int i=0;i<10;i++)
{
scanf("%f",&grade[i]);
}
float ave=0.0;
for (int j=0;j<10;j++)
{
ave = ave+grade[j];
}
printf("ave= %f",ave/10);
return 0;
}
2.求数组中最大的元素:
#include <stdio.h>
int main(int argc, const char * argv[])
{
int a[4];
printf("请输入数据:");
for (int i=0;i<4;i++)
{
scanf("%d",&a[i]);
}
int j,max=*a;
for (j=1;j<4;j++)
{
if(max<a[j])
max=a[j];
}
printf("max= %d",max);
return 0;
int main(int argc, const char * argv[])
{
int a[4];
printf("请输入数据:");
for (int i=0;i<4;i++)
{
scanf("%d",&a[i]);
}
int j,max=*a;
for (j=1;j<4;j++)
{
if(max<a[j])
max=a[j];
}
printf("max= %d",max);
return 0;
}
数组的应用实例:
给定某年某月某日,将其转换成这一年的第几天并输出。
#include <stdio.h>
int main(int argc, const char * argv[])
{
int year,month,day;
int run[]={0,31,29,31,30,31,30,31,31,30,31,30,31}; //定义闰年的月份的天数
int pin[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义平年的月份的天数
printf("请输入您查找的日期:");
scanf("%d,%d,%d",&year,&month,&day);
if ((year%4==0&&year%100!=0)||(year%400==0)) //判断是否是闰年:
{
for(int i=1;i<month;i++)
{
day=day+run[i];
}
}else
for(int i=1;i<month;i++)
{
day=day+pin[i];
}
printf("day= %d",day);
return 0;
给定某年某月某日,将其转换成这一年的第几天并输出。
#include <stdio.h>
int main(int argc, const char * argv[])
{
int year,month,day;
int run[]={0,31,29,31,30,31,30,31,31,30,31,30,31}; //定义闰年的月份的天数
int pin[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义平年的月份的天数
printf("请输入您查找的日期:");
scanf("%d,%d,%d",&year,&month,&day);
if ((year%4==0&&year%100!=0)||(year%400==0)) //判断是否是闰年:
{
for(int i=1;i<month;i++)
{
day=day+run[i];
}
}else
for(int i=1;i<month;i++)
{
day=day+pin[i];
}
printf("day= %d",day);
return 0;
}
输入10个成绩并且从大到小排序。
#include <stdio.h>
int main(int argc, const char * argv[])
{
float grade[10];
printf("请输入成绩:");
for (int i=0;i<10;i++)
{
scanf("%f",&grade[i]);
}
for(int i=0;i<9;i++)
{
for (int j=0;j<9-i;j++)
{
int temp;
if (grade[j]<grade[j+1])
temp=grade[j];
grade[j]=grade[j+1];
grade[j+1]=temp;
}
}
for(int i=0;i<10;i++)
{
printf("%.2f ",grade[i]);
}
return 0;
}
#include <stdio.h>
int main(int argc, const char * argv[])
{
float grade[10];
printf("请输入成绩:");
for (int i=0;i<10;i++)
{
scanf("%f",&grade[i]);
}
for(int i=0;i<9;i++)
{
for (int j=0;j<9-i;j++)
{
int temp;
if (grade[j]<grade[j+1])
temp=grade[j];
grade[j]=grade[j+1];
grade[j+1]=temp;
}
}
for(int i=0;i<10;i++)
{
printf("%.2f ",grade[i]);
}
return 0;
}