第四周作业春

这个作业属于哪个课程 c语言程序设计
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2774
我在这个课程的目标是 学会用数组解决复杂问题
这个作业在哪个具体方面帮助我实现目标 选择排序这个题目让我知道了如何用数组解决排序问题
参考文献 http://c.harson.co/

1. 选择法排序

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

输入样例:

4
5 1 7 6

输出样例:

7 6 5 1

1).实验代码

#include<stdio.h>
int main()
{
  int n,c,b;
  int a[10];
  int z,min;
  scanf("%d",&n);
  for(c=0;c<n;c++)
  {
   scanf("%d",&a[c]);
  }
  for(b=0;b<n-1;b++)
  {
   min=b;
   for(c=b+1;c<n;c++)
   {
     if(a[c]>a[min]){
       min=c;
     }
   }
   z=a[min];
   a[min]=a[b];
   a[b]=z;
  }
  for(c=0;c<n-1;c++){
    printf("%d ",a[c]);
  }
  printf("%d",a[n-1]);
  return 0;
}

2).设计思路

3).问题和解决方案

格式不对,空格没有,然后在%d后加了空格,但是还是不对,因为题目要求末行不能有多余空格
最后我将for循环里不输出最后一个元素,在for循环外输出最后一个元素,这样就避免了末尾有空格

4).运行结果

2. 找鞍点

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

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

输入样例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()
{
 int n,i,j,m,p;
 int a[6][6];
 int min=0,f=1;
 m=0;
 p=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++)
  {  
    min=i;   
    for(p=0; p<n; p++)
    {   
      if(a[i][m]<=a[i][p]){  
          m=p;  
        }  
     }
    for(j=0; j<n; j++)
    {   
      if(a[min][m]>a[j][m]){ 
           min=j;  
           break;  
       }  
     } 
     if(i==min){ 
        f=0;  
         break;  
     }  
 }
 if(f==0)	printf("%d %d",i,m);  
 else 		printf("NONE");  
return 0;
}

2).设计思路

3).问题和解决方案

一开始知道思路,大体就是找到一行中的最大值,记下它的行列下标,再在列中判断是否为这一列的最小值
但是表示出来有点麻烦,变量很多
最后参考了助教发的视频,把每一步镶嵌了起来

4).运行结果

学习总结

| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点 | 目前比较疑惑的问题 |
| -------- | :-----: | :----: | :-----: | :----------😐:---------😐
|3/18-3/23 | 6小时 | 145 | 选择排序法,二分排序 | 暂无 |

学习感悟

题目有点复杂,非常考验心态,需要用的变量能把自己都整懵

posted @ 2019-03-22 22:15  laozhupeiqi  阅读(230)  评论(1编辑  收藏  举报