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

    |这个作业属于哪个课程| C语言程序设计II |
    | -------- | -----: | :----: |
    |这个作业要求在哪里|[2019年春季学期第四周作业](https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/)|
    |我在这个课程的目标是| 我希望通过学习能提高对数组的熟练度|
    |这个作业在哪个具体方面帮我实现目标|让我知道了多个排序法的运用|
    |参考文献|课本C语言程序设计II |
    7-1 找鞍点
    1).实验代码

    #include<stdio.h>
    int main()
    {
       int a[6][6];
       int n,i,j,x,y,k,max,min,flag=0;
       scanf("%d",&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]; y=0;               //首元素先作为行上“最大”的数
       for(k=1;k<n;k++)
       if(max<=a[i][k])                //找出行上的最大值
    { 
       max=a[i][k];  
       }  
       for(j=1;j<n;j++)
       if(max==a[i][j])                //检查行上最大值的列
    { 
       y=j;                             //记录本行上最大的数,及其列号y
       min=a[i][y];                     //把a[i][y]当作y列上最小的数
       for(k=0;k<n;k++)                  //找出y列上最小的数及所在的列号 
      if(min>=a[k][y])                  //等于号出现相同的两个数都为最小值(最大值)   
    {
      x=k;
      min=a[k][y];
        }
       if(min==max)                    //找到一个鞍点
    {
       printf("%d %d",x,y);
       flag=1;
       }
       }
       }
       if(flag==0)
       printf("NONE");
       return 0;
    }
    

    2).设计思路

    3).本题遇到的困难

    解决方法:未考虑n=1的情况和一行或一列出现相同的数字为最大值或最小值
    4).程序运行截图

    7-2 选择法排序
    1).实验代码

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

    2).设计思路

    3).本题遇到的问题

    解决方法:pta的格式出错,需要仔细仔细再仔细
    4).程序运行截图

    7-1 冒泡法排序
    1).实验代码

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

    2).设计思路

    3).本题遇到的错误

    把空格当成了 导致了格式错误

    大问题没有
    4).程序运行截图

    学习总结

  • 相关阅读:
    ORACLE日期时间函数大全
    orcal基础
    javaweb学习总结——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    一个DataTable赋值给另一个DataTable的常用方法
    ios开发 解释器和编译器
    ios面试题(五)-多线程
    ios面试题(四)-block
    ios面试题(三)
    ios开发面试题(二)
    ios开发面试题(一)
  • 原文地址:https://www.cnblogs.com/xiexin777/p/10579711.html
Copyright © 2011-2022 走看看