#include<iostream>
#include<math.h>
using namespace std;
int gra[1000][4] = { 0 };
char name[1000][8];//这里的这个8,在输出的时候会出现问题
int main()
{
int count = 0, upl;
cin >> upl;
for (int n = 0; n < upl; n++) {
cin >> name[n] >> gra[n][0] >> gra[n][1] >> gra[n][2];
}
for (int n = 0; n < upl - 1; n++) {
for (int m = n + 1; m < upl; m++) {
if (abs(gra[m][0] - gra[n][0]) <= 5 && abs(gra[m][1] - gra[n][1]) <= 5 && abs(gra[m][2] - gra[n][2]) <= 5 && abs(gra[m][0] - gra[n][0] + gra[m][1] - gra[n][1] + gra[m][2] - gra[n][2]) <= 10) {
//count++;
//grp(n, m, count);
cout << name[n] << " " << name[m] << endl;
}
}
}
}
输入:
12
amu 9 24 14
annsha 16 7 14
aootkw 10 25 16
aorgovug 15 12 21
apkayehu 5 25 12
aqplmz 17 8 16
arjlxz 23 20 15
arrgcarp 6 7 16
at 21 26 16
atc 25 25 12
atit 6 21 13
av 9 22 24
输出:
amu aootkw
amu apkayehuaqplmz//这里有问题
amu atit
annsha aqplmz
aootkw apkayehuaqplmz//这里有问题
aorgovugapkayehuaqplmz aqplmz//这里有问题
apkayehuaqplmz atit//这里有问题
arjlxz atc
at atc
看起来输出问题都是cout无法输出准确位数的name字符串
当我将字符串大小调整为name[1000][10]后,问题就解决了
输入:
12
amu 9 24 14
annsha 16 7 14
aootkw 10 25 16
aorgovug 15 12 21
apkayehu 5 25 12
aqplmz 17 8 16
arjlxz 23 20 15
arrgcarp 6 7 16
at 21 26 16
atc 25 25 12
atit 6 21 13
av 9 22 24
输出:
amu aootkw
amu apkayehu
amu atit
annsha aqplmz
aootkw apkayehu
aorgovug aqplmz
apkayehu atit
arjlxz atc
at atc
题目里面提到所有名字都是“不超过 8 个字符的字符串,没有空格”。但是为什么我规定字符串为8时会出现问题?
可能是我忽略了什么,还是说我漏掉了字符串里的某个知识点,还请各位大佬帮忙解惑
不知道说什么好,就感谢各位大大吧( ̄︶ ̄*))