实验八:数组
一,实验目的
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.实验过程图
三,实验心得
通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。
在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。