C语言——第十四、十五周作业
题目
题目一:交换最小值和最大值
1.实验代码
#include<stdio.h> int main() { const int N = 10; int i , n; int a[N]; int x , y; scanf("%d",&n); for(i = 0 ; i < n ; i++) { scanf("%d",&a[i]); } x = a[0]; y = 0; for(i = 1 ; i < n ; i++) { if(x < a[i]) { x = a[i]; y = i; } } a[y] = a[n - 1]; a[n-1] = x; x = a[0]; y = 0; for(i = 1 ; i < n ; i++) { if(x > a[i]) { x = a[i]; y = i; } } a[y] = a[0]; a[0] = x; for(i = 0 ; i < n ; i++) printf("%d ",a[i]); printf("\n"); }
2.设计思路
①算法
第一步:定义变量,定义数组。
第二步:循环输入数组。
第三步:使用循环结构比较数组中所有数的最小值,并将其储存在一个变量中,然后将最小值与第一个数交换;然后同样使用循环结构比较数组中所有数的最大值,并将其储存在另一个变量中,然后将最大值与最后一个数交换。
第四步:输出交换后的序列。
②流程图
3.本题调试过程碰到问题及解决办法
截图
本题错误是读题不够认真导致的。我错误地理解了题目意思,导致多次修改总是存在测试点错误情况,通过询问同学才明白错误原因,下次做题前一定会认真审题,不再犯类似的错误。
题目二:判断上三角矩阵
1.实验代码
#include<stdio.h> int main () { const int N = 10; int a[N][N]; int n , m , k , i , j , flag; scanf("%d",&n); for(k=1 ; k<=n ; k++) { scanf("%d",&m); for(i=0 ; i<m ; i++) { for(j=0 ; j<m ; j++) { scanf("%d",&a[i][j]); } } flag=1; for(i=0 ; i<m ; i++) { for(j=0 ; j<m ; j++) { if(i>j && a[i][j]!=0) { flag = -1; } } } if(flag == -1) { printf("NO\n"); } else if(flag == 1) { printf("YES\n"); } } return 0; }
2.设计思路
①算法
第一步:定义变量,定义数组。
第二步:输入所需值,循环输入数组。
第三步:通过循环结构判断矩阵下三角的数值是否未0(通过定义的flag值判断),由于可能存在多个矩阵,同一个矩阵的输入输出在同一个循环结构中。
第四步:若flag值未初始值,输出YES;否则,输出NO。
②流程图
3.本题调试过程碰到问题及解决办法
截图
本题并未找到题目错误原因,由于长时间没有进展,改换了另外一种思路,答案成功通过测试。
我的git地址:https://git.coding.net/dx200798/fourteen-fifteen.git
项目截图
个人总结
本周学习内容:
本周练习了一维数组,学习练习了二维数组,简单学习了字符数组。
疑点难点:
对数组的应用不够熟练,对字符串的应用非常不熟练。
互评和学习进度
互评链接
链接1:http://www.cnblogs.com/fengzx/p/7955263.html
链接2:http://www.cnblogs.com/exo123/p/7954060.html
链接3:http://www.cnblogs.com/lixiaojing/p/7878001.html
图表