目录
今日知识点:
一维数组的创建
数组的初始化
数组的访问
今日题目解答:
1.输入10个整数,并存入数组,计算输出数组中值为奇数的元素的平均值。
2.输入10个整数,并存入数组,计算输出数组中值为偶数的元素的平均值。(也是三种方法,另外两种类似于奇数)
3.输入10个整数,并存入数组,要求对其逆序输出。
4.输入10个整数,并存入数组,要求对其进行升序排序。
5.输入10个整数,并存入数组,要求对其进行降序排序。
6.依次输入并算出10名同学成绩的平均分。
今日题目:
1.输入10个整数,并存入数组,计算输出数组中值为奇数的元素的平均值。
2.输入10个整数,并存入数组,计算输出数组中值为偶数的元素的平均值。
3.输入10个整数,并存入数组,要求对其逆序输出。
4.输入10个整数,并存入数组,要求对其进行升序排序。
5.输入10个整数,并存入数组,要求对其进行降序排序。
6.依次输入并算出10名同学成绩的平均分。
一维数组
数组是一组相同类型元素的集合。
数组的创建
int a1[10];
char a2[10];
float a3[1];
double a4[20];
//用宏定义的方式
#define X 3
int a5[X];
错误使用
int count = 10;
int arr6[count];
注意数组创建, [] 中要给一个常量才可以,不能使用变量。直接用常量或者使用宏定义。
a.对数组全部元素赋初值
int a[5] = {1,2,3,4,5};
b.对数组的部分元素赋初值
int b[6] = {1,2,3};
c.对数组的全部元素赋初值时,可以省略数组长度说明,C编译系统会根据元素实际个数自行确定。若定义数组长度大于元素个数,就不能省略数组长度的定义。
int c[] = {1,2,3,4};
char d[] = {'a','b','c'};
char e[] = "abcdef";
注意char f[6] = "abcdef";是错误的是,因为无法正常读取字符串的结束标志('\0'),导致字符串的长度和内容不能得知。
[ ] ,下标引用操作符。它其实就数组访问的操作符。
数组是使用下标来访问的,下标是从0开始。
例如:语句int [5];说明一个名为a的整型数组,他有5个元素,每一个元素都是int型的变量,数组下标从0开始,这五个元素各自是a[0],a[1],a[2],a[3],a[4]。
C语言数组元素下标从0开始,称a[0]为第1个元素,a[1]为第2个元素,如此等等。
解题思路:
判断奇偶数:对2取余,余数为0则为偶数,余数不为0则为奇数。
求平均值:数组中所有奇数(偶数)元素相加除以奇数(偶数)元素的个数。
解题思路:用循环依次读取数组中的元素,再进行判断是否为奇数(偶数),再进行累加输出,得到数组中奇数(偶数)元素之和,同时,每得到一个奇数(偶数),就要给计数变量加1,从而得到数组中所需元素的个数。最后计算平均值也就轻而易举了。
//输入10个整数,并存入数组,计算输出数组中值为奇数的元素的平均值
#include
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10};
int i;
double b=0,average;
for(i=0;i<10;i++)
{
if(a[i]%2!=0)
{
b=b+a[i];
}
}
average=b/5;
printf("%.2lf",average);
return 0;
}
//输入10个整数,并存入数组,计算输出数组中值为奇数的元素的平均值
#include
int main()
{
int a[9];
int n;
for(n=0;n<10;n++)
{
printf("请输入a[%d]:",n);
scanf("%d",&a[n]);
}
int i,m=0;
double b=0,average;
for(i=0;i<10;i++)
{
if(a[i]%2!=0)
{
b=b+a[i];
m++;
}
}
average=b/m;
printf("数组中值为奇数的元素的平均值为%.2lf",average);
return 0;
}
//输入10个整数,并存入数组,计算输出数组中值为奇数的元素的平均值
#include
double ave(int b[],int n);
double ave(int b[],int n)
{
double sum=0.0;
int i,j=0; //j:奇数个数
for(i=0;i
//输入10个整数,并存入数组,计算输出数组中值为偶数的元素的平均值
#include
int main()
{
int a[9];
int n;
for(n=0;n<10;n++)
{
printf("请输入a[%d]:",n);
scanf("%d",&a[n]);
}
int i,m=0;
double b=0,average;
for(i=0;i<10;i++)
{
if(a[i]%2==0)
{
b=b+a[i];
m++;
}
}
average=b/m;
printf("数组中值为偶数的元素的平均值为%.2lf",average);
return 0;
}
数组元素已知时,直接将数组从后往前输出,即逆序储存。
数组元素未知时,从键盘依次读取数组元素,再将数组元素从后往前输出,即逆序储存。
//输入10个整数,并存入数组,要求对其逆序存储
#include
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=9;i>=0;i--)
{
printf("%d ",a[i]);
}
return 0;
}
//输入10个整数,并存入数组,要求对其逆序存储
#include
int main()
{
int a[10];
int n;
for(n=0;n<10;n++)
{
printf("请输入a[%d]:",n);
scanf("%d",&a[n]);
}
for(int i=9;i>=0;i--)
{
printf("%d ",a[i]);
}
return 0;
}
如何实现两个变量×, y 中数值的互换?
不可以把 x = y , y = x ;要用中间变量 t = x ; x= y ; y = t 。
//输入10个整数,并存入数组,要求对其进行升序排序
#include
int main()
{
int i,a[10],t,j;
printf("输入数组中的元素:\n");//从键盘为数组元素赋值
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)//从小到大排序
{
for(j=i+1;j<10;j++)
{
if(a[j]
//输入10个整数,并存入数组,要求对其进行降序排序
#include
int main()
{
int i,a[10],t,j;
printf("输入数组中的元素:\n");//从键盘为数组元素赋值
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)//从大到小排序
{
for(j=i+1;j<10;j++)
{
if(a[j]>a[i])//如果后一个数比前一个数大,则交换
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<10;i++)//输出数组
{
printf("%d\t",a[i]);
}
return 0;
}
//依次输入并算出10名同学的平均分
#include
#define NUM 10
int main()
{
int s[NUM];
int i,sum=0;
for(i=0;i<10;i++)
{
printf("请输入第%i位同学成绩:",i+1);
scanf("%d",&s[i]);
sum+=s[i];
}
printf("成绩录入完毕,该次考试平均分是:%.2f\n",(double)sum/NUM);
return 0;
}