#include
#include
using namespace std;
int main() {
double lat1, lon1, lat2, lon2, x, y;
cout << "请输入纬度1(单位:度):" << endl;
cin >> lat1;
cout << "请输入经度1(单位:度):" << endl;
cin >> lon1;
cout << "请输入纬度2(单位:分):" << endl;
cin >> lat2;
cout << "请输入经度2(单位:分):" << endl;
cin >> lon2;
char arr[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','I','S','T','U','V'};
x = (lat1 + 5) / 6;
y = (lon1 + 5) / 6;
int z = arr[x];
cout << "1:100万图幅编号" << z << "—— " << y << endl;
return 0;
}
有三个错误:表达式必须具有整数或未区分范围的枚举类型,是用未初始化的内存“z”和小标不是整型
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double lat1, lon1, lat2, lon2;
cout << "请输入纬度1(单位:度):" << endl;
cin >> lat1;
cout << "请输入经度1(单位:度):" << endl;
cin >> lon1;
cout << "请输入纬度2(单位:分):" << endl;
cin >> lat2;
cout << "请输入经度2(单位:分):" << endl;
cin >> lon2;
char arr[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','I','S','T','U','V'};
int x = (int)((lat1 + 5) / 6); // 修改
int y = (int)((lon1 + 5) / 6); // 修改
if (x >= 0 && x < sizeof(arr)/sizeof(arr[0])) { // 新增
cout << "1:100万图幅编号" << arr[x] << "—— " << y << endl; // 修改
} else {
cout << "x值超出范围" << endl; // 新增
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:题目:按照顺时针或逆时针的顺序,旋转向内扫描矩阵。一般使用数字从1到N标记矩阵元素来模拟这一过程。
思路:
1、观察矩阵中左右相邻元素的数值关系较为复杂,因此采用模拟旋转过程的方法扫描矩阵。分别设置四个哨兵,看守上下界、左右界,扫描碰到哨兵就转向(同时哨兵往内缩一步)。
#include <cstdio>
#include <cstdlib>
void printHuiZi(int** m, int n) {
int upb = 0; // upper bound
int lob = n - 1; // lower bound
int lfb = 1; // left bound
int rtb = n - 1; // right bound
int i = -1, j = 0;
int cnt = 1;
while (cnt <= n * n) {
for (++i; i <= lob; ++i)
m[i][j] = cnt++;
lob--; // update bound
i--; // pullback i
for (++j; j <= rtb; ++j)
m[i][j] = cnt++;
rtb--;
j--;
for (--i; i >= upb; --i)
m[i][j] = cnt++;
upb++;
i++;
for (--j; j >= lfb; --j)
m[i][j] = cnt++;
lfb++;
j++;
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf("%4d", m[i][j]);
printf("\n");
}
}
int main() {
int n;
printf("Input the dimension : ");
scanf("%d", &n);
int **x = new int*[n]; // allocate 2-dim array
for (int i = 0; i < n; i++)
x[i] = new int[n];
printHuiZi(x, n);
for (int i = 0; i < n; i++) // free heap space
delete[] x[i];
delete[] x;
return 0;
}
结果:
Input the dimension : 7
1 24 23 22 21 20 19
2 25 40 39 38 37 18
3 26 41 48 47 36 17
4 27 42 49 46 35 16
5 28 43 44 45 34 15
6 29 30 31 32 33 14
7 8 9 10 11 12 13