第四周作业

7-2 选择法排序 (20 分)

本题要求将给定的n个整数从大到小排序后输出。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

4
5 1 7 6

输出样例:

7 6 5 1

1.代码:

#include<stdio.h>
int main(void)
{
	int i,temp,k,n,inmax;
	int a[10];
	
	scanf("%d",&n);
	for(i=0; i<n; i++)
	   scanf("%d",&a[i]);
	   
	   for(k=0; k<n-1; k++){
	   	  inmax=k;
	   	  for(i=k+1; i<n; i++)
	   	     if(a[i]>a[inmax])
				inmax=i;
				temp=a[inmax];
				a[inmax]=a[k];
				a[k]=temp;
	}
	
	   printf("%d",a[0]);
	   
	      for(i=1; i<n; i++)
	          printf(" %d",a[i]);
	          printf("
");
	 
	return 0;   
	   
}

2.算法思想.:

3.错误截图:


4.运行截图:

5.总结:这个题目书上有一个类似的,看懂了。就很容易想出来,一个小难点就是输出时候的有要求,导致格式错误。

用时:30分钟

7-1 找鞍点 (20 分)

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

输出样例1:

2 1

输入样例2:

2
1 7
4 1

输出样例2:

NONE

1.代码:

#include<stdio.h>
int main(void)
{
	int a[10][10];
	int c[10],b[10];
	int i,j,n,x,y,max,min,flag=0;                /*定义二维数组*/ 
	
	scanf("%d",&n);             /*输入n*/ 
	for(i=0; i<n; i++)
	   for(j=0; j<n; j++)
	      scanf("%d",&a[i][j]);             /*输入数组*/ 
		
	for(i=0; i<n; i++){
		max=a[i][0];
		for(j=0; j<n; j++){
			if(max<a[i][j])
			max=a[i][j];              /*找出每一行的最大值 */
	        if(max==a[i][j])
	           c[i]=j;
	  }	           
	}	  
	
	for(y=0; y<n; y++){
		min=a[0][y];
		for(x=0; x<n; x++){
			if(min>a[x][y])
		    min=a[x][y];	                            /*找出每一列的最小值*/ 
		if(min==a[x][y])
		    b[y]=x;
		}
	}
	    
	for(i=0; i<n; i++){
	   y=c[i];
	    if(b[y]==i){
		 printf("%d %d
",i,y);                /*判断*/ 
		  flag=1;            
	}
	}
	if(flag==0){
		printf("NONE");
 }
	
  return 0; 
}

2.算法思想:

3.错误截图:

4.正确运行:

5.总结,这个题目做的很有意思的,我的思想和别人不一样,我要先找出来每一行的最大值和每一列的最小值,然后进行坐标判断,如果有同一个坐标,那就有鞍点,没有就没有鞍点。

6.遇到的问题:在找最值的时候,使用for循环括号看的内容不正确,导致了很久,还有在判断的时候,没有想到使用b[i]=j存储,然后进行判断,导致用时过长,不过自己写出来了,还是挺开心的。以后再做题目之前要先写出算法思想,这样就不会写到一半,自己就混乱了。

原文地址:https://www.cnblogs.com/xudo/p/10578347.html