实验八:数组

一,实验目的

1.掌握一维数组和二维数组的定义方法,以及其元素的访问形式

2.能用字符数组来处理字符串及字符串处理函数

3.掌握数组处理中的有关排序和查找算法

二,实验内容

1.问题描述:(1)选择法排序:输入一个正整数n(1<=n<=10),再输入n个整数,将它们从大到小排序后输出。

                       (2) 求一批整数中出现最多的数字:输入一个正整数n(1<n<=1000),再输入n个整数,求出现次数最多的数字。

                     (3)判断上三角矩阵:输入一个正整数n(1<=n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则输出“NO”.

2.程序

(1)

#include<stdio.h>
int main()
{
int a[10],i,j,x,n,t;
printf("Enter n(1<=n<=10):");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=0;j<n;j++){
x=j;
for(i=j+1;i<n;i++)
if(a[x]<a[i])
x=i;
t=a[j];
a[j]=a[x];
a[x]=t;
}
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
return 0;
}

(2)

#include<stdio.h>
int main()
{
int a[10],b[1000],i,n,x;
printf("Enter n(1<n<=1000):");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
for(i=0;i<n;i++){
x=b[i];
while(x>0){
a[x%10]++;
x=x/10;
}
}
for(i=1,x=0;i<10;i++)
if(a[x]<a[i])
x=i;
printf("max=%d",x);
for(i=x+1;i<10;i++)
if(a[x]==a[i])
printf(",%d",i);
printf("\n");
return 0;
}

(3)

#include<stdio.h>
int main()
{
int a[6][6],n,i,j,x;
x=1;
printf("Enter n(1<=n<=6):");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<n;i++)
for(j=0;j<i;j++)
if(a[i][j]!=0){
printf("NO\n");
x=0;
break;
}
if(x==1)
printf("YES\n");
return 0;
}

3.实验过程图

三,实验心得

通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。

掌握了折半查找法的基本步骤,能从一个数组中找出所需要的数,并且能熟练运用break语句。
先两个两个(邻近的两个数据)比较,使得每次最大的数总在前面或后面,这样,经过n*(n-1)/2次的比较之后,所有的数据将会按照一定顺序排列。

在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。



 

posted @ 2019-06-10 21:18  巢玉洁  阅读(267)  评论(0编辑  收藏  举报