• 2019年春季学期第四周作业


    一、本周完成的作业:

    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,j,k,n,temp;
    
       	scanf ("%d",&n);
       	int a[n];
       	
       	for (i=0;i<n;i++)
    	   {
    		scanf("%d",&a[i]);
    }
      
      for(i=0;i<n;i++)
      {  
            k=i;  
            for(j=i;j<n;j++)  
            {  
                if(a[k]<a[j])  
                {  
                    k=j;  
                }  
            }  
           temp=a[i];            
           a[i]=a[k];            
           a[k]=temp;           
        }                         
     
      	for(i=0;i<n;i++)
    	  {
    	  	if(i==0)
    		  {
    	  	printf("%d",a[i]);		
    		  }
    		  else
    	  	printf(" %d",a[i]);	
    }
    
    	return 0;
    }
    

    2) 设计思路

    3).本题调试过程碰到问题及解决办法

    a.错误问题截图:

    b.问题及其解决办法:
    问题:运行之后发现格式错误
    解决办法:加了个条件就可以做到末尾无空格

    4).运行结果截图:

    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 i,j,k,n,flag=0,row=0,col=0;
    
       	scanf ("%d",&n);
       	int a[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++)
      {   
        for(j=0;j<n;j++)
    	{
    		row=i;
    		col=j;
    		for(k=0;k<n;k++)
    		{
    		if(a[i][j]<a[i][k])
              {
              	col=k;
    		  }
    	
    		if(a[i][j]>a[k][j])
    		{
    			row=k;	
    		}	
    	}
    	if(row==i&&col==j){
    		printf("%d %d",row,col);
    		flag=1;	
    	}
    }
    }
            if(flag==0){
    	  	printf("NONE");
    	}
    
    	return 0;
    }
    

    2) 设计思路

    3).本题调试过程碰到问题及解决办法

    a.错误问题截图:

    b.问题及其解决办法:
    问题:如果一行中有相同的找不到鞍点
    解决办法:把代码从一次判断改成2次判断,在没一次行列下标都固定的情况再判定.
    之前用的是只判断一次,记录下来这一行最大的,然后再进行判断.
    后来改成固定行列下标,用2个额外的行列下标代指进行这个点在的行和列判断,如果这2个代指没有变动,则证明这个点是鞍点.

    4).运行结果截图:

    7-1 冒泡法排序 (10 分)

    输入1个正整数n(1<=n<=10),然后输入n个整数并存放在数组中,将这n个整数从大到小排序后输出,相邻数字间有一个空格,行末不得有多余空格。

    输入格式:

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

    输出格式:

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

    输入样例:

    4 
    75 71 77 76
    

    输出样例:

    77 76 75 71
    

    1).实验代码

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

    2) 设计思路

    3).本题调试过程碰到问题及解决办法

    a.错误问题截图:

    b.问题及其解决办法:
    问题:出现答案错误
    解决办法:发现是自己为了省事把上面的代码复制一小段改,导致printf里出现了&,(截取上面scanf的片段)
    后面还有格式错误,加个条件就解决了

    4).运行结果截图:

    二、学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    3/15-3/22 15小时 350左右 学会处理数组的数据 对于指针还有很多不理解

    三、学习感悟

    选择排序法和冒泡排序法没有花很多时间去写,倒是找鞍点写的十分头疼,还是自己的想法和实际会有所出入,改变自己的想法进行编写是很重要的,不能在一棵树上吊死.

  • 相关阅读:
    hdu 1823 Luck and Love 二维线段树
    UVA 12299 RMQ with Shifts 线段树
    HDU 4578 Transformation 线段树
    FZU 2105 Digits Count 线段树
    UVA 1513 Movie collection 树状数组
    UVA 1292 Strategic game 树形DP
    【ACM】hdu_zs2_1003_Problem C_201308031012
    qsort快速排序
    【ACM】nyoj_7_街区最短路径问题_201308051737
    【ACM】nyoj_540_奇怪的排序_201308050951
  • 原文地址:https://www.cnblogs.com/zhuwanxing/p/10579742.html
Copyright © 2020-2023  润新知