实验七 数组

更新时间:2023-03-16 03:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验七 数组(上)

1.改错题(请纠正程序中存在错误,使程序实现其功能)

⑴输入9个数,按照每行3个数的格式显示,并求出这些数中的最大值、最小值以及平均值。

#include #define N 9;0 void main() { int i,sum=0,a[N],max,min; for(i=0;imax) max=a[i]; if(a[i]

for(i=0;i

{ printf(\

if(i+1%3==0) printf(\ }

printf(\

}

⑵计算一个n×n矩阵中对角线(含正、反对角线)上的因素之和(注意:奇数阶对角线有交叉)。

#include void main(void) { const int n=3;

int i,j,sum,a[][n]={1,2,3,4,5,6,7,8,9}; for(i=0;i<=n;i++) for(j=0;j<=n;j++)

if(i==j||i+j==n-1) sum+=a[i][j]; printf(\}

2.程序填空题(请填写适当的符号或语句,使程序实现其功能)

⑴输入不多于10个数,将它们按照素数与合数分类,并分2行分别显示素数与合数数列以及对应的个数,使用一个数组完成(数组全部部分存放素数,后半部分存放合数)。

#include #include int Is_sushu(int x) { int i,re; re=x>1?1:0;

for(i=2;i

void main(void) { const int n=10;

int sz[n],k,m,head,tail; head=-1,tail=n; for(k=1;k<=n;k++)

{ printf(\ scanf(\

if( Is_sushu (m) ) { head++; sz[head]=m; } else

{ tail-- ; sz[tail]=m; } }

for(k=0;k<=head;k++)

printf(\ printf(\ for(k=n-1;k>=tail;k--)

printf(\

printf(\}

⑵寻找并显示矩阵中的“鞍点”(鞍点,即该位置上的元素在该行上最大,在该列上最小,一个矩阵也可能没有鞍点)。若有则显示其所在位置(x,y坐标值)和值,否则显示“None”。

#include #define ROW 3 //行数 #define COL 4 //列数 void main()

{ int a[ROW][COL]; int i,j,k; int find=0;

for(i=0; i

scanf(\ &a[i][j] ); for(i=0; i

{ k=0;//行内最大值所在的列位置下标 for(j=0;j

if(a[i][j]>a[i][k]) k=j;

for(j=0;j

{ printf(\ }

if(!find) printf(\}

⑶ 采用随机函数生成10个介于[100,200]之间的整数,并应用“冒泡”排序法对10个数按照升序(由小到大)排序。(注意:int rand()函数返回一个[0,32767]之间的随机整数)

程序设计思路:设有10个元素a[0]~a[9],将a[0]与a[1]比较,若a[0]比a[1]大,则将a[0]与a[1]交换,接着a[1]与a[2]比较,若a[1]比a[2]大,则将a[1]与a[2]交换,依此类推,直到a[8]与a[9]比较、交换,至此,10个数中的最大值就保存在a[9]中,完成一轮冒泡;依照同样的方法从剩下的a[0]~a[8]中冒泡出其中的“最大值”(即10个数中的次大值),将其存放在a[8]处。依此类推,共进行9遍冒泡,a[0]到a[9]就已按由小到大顺序存放。

#include #include

void main( ) { int a[10],i,j,t; for(i=0;i<10;i++) { a[i]= (int ) rand()0+100 ; //生成随机整数 printf(\ \ } for(i=0;i<9;i++) for(j=0;j< 10-i ; j++) if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1]; a[j+1]=t ;} printf(\ for(i=0;i<10;i++) printf(\ \}

思考:若降序排列呢,该如何修改以上的程序?

本文来源:https://www.bwwdw.com/article/m03v.html

Top