C语言实验七(数组)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨理工大学实验报告
学院系部课程名称结构化程序设计(C)
姓名E-mail 指导教师李胜利联系方式班级学号
实验顺次07 实验名称数组
实验目的1.掌握一维数组的定义、初始化和输入输出方法。
2.掌握一维数组在编程中的使用。
3.掌握二维数组的定义、初始化和输入输出方法。
4.掌握二维数组在编程中的应用。
实验内容1.一个数组有10个整数,用键盘人艺术出个数组元素的值,寻找该
数组元素的最大值并将其与数组的第一个元素交换。
2.计算数组中10个正整数元素的而平均值,把大于平均值的数放到
另一个数组中,并输出后一个数组的元素。
3.输入8个数列到一个数组中,然后按降序对数组元素排序,再输
入一个数,查找该数是否属于该数组,若属于,则输出该数在数组的位置;若不属于,则输出“未找到“。
4.求任意的一个3行3列二维数组对应的矩阵的正对角线元素的和
以及反对角线元素的和。
5.将一个5行5列二维数组的右上部门元素置0。
解题思路、算法描述或实验步骤1.利用for循环中的scanf函数对数组进行动态赋值,首先假设最
大值max=a[0],在接下来的循环中对每个a[i]与max的值比较,确定最大值的下标。利用临时变量t,实现语句(t=a[i];a[i]=a[0];a[0]=t;)完成交换。最终利用循环输出数组即可。
2.定义完数组之后,定义sum=0,j=0。首先利用for循环中加入scanf
函数完成对数组的动态赋值。其次利用循环完成对10个元素的求和,求出其平均数。在接下来的循环中利用if语句判断数组中元素和平均值的比较,若比平均值大,则将此元素复制到另一数组中(此时利用y[j]=x[i]完成,每次成立后j++)。最终利用for 循环输出数组y。
3.首先利用循环中的scanf函数对数组进行动态赋值,利用冒泡法
进行排序(冒泡法需要进行双层循环,外层循环控制趟数,内层循环控制元素比较次数),然后利用for循环输出降序后的数组。
利用for循环中的if语句判断数组中是否有x,若有则输出i的值,若没有则打印“未找到”。
4.首先,使用循环嵌套动态输入二维数组后。再使用循环嵌套输出
数组,正对角线满足的条件为i==j,反对角线满足的条件为i+j=2,最后输出即可。
5.首先,使用双层循环对数组b进行赋值,赋值过程中当符合i>j
条件的元素直接将a数组的值赋值给b数组,不符合条件的b数组元素为0。最终循环输出数组b即可。
实验结果1.
#include
int main()
{
int a[10],i,t,x,max;
for(i=0;i<10;i++)
{
printf("a[%d] = ",i); scanf("%d",&a[i]);
}
max=a[0];
for(i=0;i<10;i++)
{
if(a[i]>max)
{
max = a[i];
x = i;
}
}
t = a[x];
a[x] = a[0];
a[0] = t;
for(i=0;i<10;i++)
{
printf("%d ",a[i]); }
printf("\n");
return 0;
}
2.
#include
int main()
{
int x[10], y[10] = {0}, sum = 0; int i,j=0;
double average;
for(i=0;i<10;i++)
{
printf("x[%d] = ",i);
scanf("%d",&x[i]);
}
for(i=0;i<10;i++)
{
sum = sum + x[i];
}
average = sum /10;
for(i=0;i<10;i++)
{
if(x[i] > average)
{
y[j] = x[i];
j++;
}
}
for(i=0;i { printf("%d ",y[i]); } printf("\n"); return 0; } 3. #include int main() { int a[8],x,i,j,temp; for(i=0;i<8;i++) { printf("a[%d] = ",i); scanf("%d",&a[i]); } for(i=0;i<7;i++) { for(j=0;j<7-i;j++) {