第四周作业春
这个作业属于哪个课程 | 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 | 选择排序法,二分排序 | 暂无 |
学习感悟
题目有点复杂,非常考验心态,需要用的变量能把自己都整懵