6.4 实验六 数组
一、 实验目的与要求
1. 掌握一维数组的定义、赋值和输入输出的方法。
2. 理解一维数组的存储方法及下标的表示方法。
3. 掌握与数组有关的算法(特别是排序算法)。
4. 掌握二维数组的定义、赋值和输入输出的方法。
5. 理解二维数组的存储方法及下标的表示方法。
6. 实验4 学时。
二、实验内容
这里有改动
1.程序验证题与改错题
(1)程序验证题
① 给定一个整型数组a,要求求出其中小于0 的元素的个数。请验证下面的程序是否
符合题目要求。
#defineN 10
voidmain()
{
int a[N] {11,2,4,-1,5,-3,-66,0,10,-5};
int i; /*变量i 用于for 循环*/
int count 0; /*变量count 用于技术,初始化为0*/
for (i 0;i
if(a[i]<0)
count++; /*如果元素a[i]<0,count 计数+1*/
printf("%d\n",count);
}
② 给定一个整型二维数组a(3,3),要求求出对角线元素的和。请验证下面的程序是否
符合题目要求。
#include
#defineN 3
voidmain()
{
int a[N][N] {{1,2,3},{4,5,6},{7,8,9}};
int i,j; /*变量i,j 用于for 循环*/
int sum 0; /*变量sum 用于求和,初始化为0*/
for (i 0;i
for(j 0;j
if(i j)sum+ a[i][j]; /*如果是对角线元素,sum+a[i][j]*/
printf("%d\n",sum);
return 0;
}
注1:在程序验证题①的基础上,修改程序,求出数组a 中大于a[0]的元素之和。
答;
#include
#defineN 10
voidmain()
{
int a[N] {11,2,4,-1,5,-3,-66,0,10,-5};
int i,sum 0;
int count 0;
for(i 0;i
{
if(a[i]<0)
count++;
if(a[i]>a[0])
sum+ a[i];
}
printf("小于0元素的个数为:%d\n",count);
printf("大于a[0]的元素之和为:%d\n",sum);
}
注2:对上述程序②进行优化,消除内循环,实现同样的效果。在② 的基础上,修改
程序,求出数组a 中反对角线元素之和。提示:内循环用逆序;i+j N-1。
答:
①
#include
#define N 3
void main()
{
int a[N][N] {{1,2,3},{4,5,6},{7,8,9}};
int i,j;
int sum 0;
for (i 0;i
{
j i;
sum+ a[i][j];
}
printf("%d\n