zoukankan      html  css  js  c++  java
  • 第四周作业

    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存储,然后进行判断,导致用时过长,不过自己写出来了,还是挺开心的。以后再做题目之前要先写出算法思想,这样就不会写到一半,自己就混乱了。

  • 相关阅读:
    DevExpress.XtraScheduler控件的使用方法
    读写Excel文档
    让程序以管理员身份运行
    读写TXT文档
    判断程序是自动启动还是用户启动
    用指针读BMP图像
    判断网络是否连接通
    WSL初体验
    Realsense内参标定
    FreeSwitch权威指南
  • 原文地址:https://www.cnblogs.com/xudo/p/10578347.html
Copyright © 2011-2022 走看看