今日学习笔记:绝对值函数
1.学到了一个绝对值函数,简化了计算逻辑,使用abs(rows - 2) + abs(cols - 2)直接计算需要移动的总次数
2.原代码中每次只移动一步的逻辑是错误的,正确的做法是计算水平和垂直方向需要移动的总步数之和
(我原来的思路是:if (rows>3) {
cnt++;
rows--;
}
if (rows<3) {
cnt++;
rows++;
}
if (cols>3) {
cnt++;
cols--;
}
if (cols<3 {
cnt++;
cols++;
}
不过我还是有点不明白为什么代码执行起来总是少了个1,有懂的牛友欢迎来指正)
#include<stdio.h> #include<math.h>// 需要使用绝对值函数abs int main() { int rows,cols,i,j; rows=-1; cols=-1; int arr[5][5]; int cnt=0; //输入二维数组的数字 for (i=0;i<5;i++) { for (j=0;j<5;j++) { scanf("%d",&arr[i][j]); } } //找到1的位置 for (i=0;i<5;i++) { for (j=0;j<5;j++) { if (arr[i][j]==1) { rows=i; cols=j; } } } cnt=abs(rows-2)+abs(cols-2); printf("%d\n",cnt); return 0; }