```#include
#include
using namespace std;
struct people
{
char name[10];
char num[10];
}a[10];
int main()
{
int n,i,l;
struct people t;
cin >> n;
for (i = 0; i < n; i++)
{
cin>>a[i].name;
cin>>a[i].num;
}
for (i = 0; i < n-1; i++)
{
for (l = 0; l < n - i - 1; l++)
{
if (strcmp(a[l].name,a[l+1].name)>0)
{
t = a[l+1];
a[l+1] = a[l];
a[l] = t;
}
}
}
for (i = 0; i < n; i++)
{
printf("%12s", a[i].name);
printf("%12s\n", a[i].num);
}
}****

name长度太短了,你输入名字有10个字符。而name当字符串使用,实际只能存储9个字符,最后一个字符必须存储字符串结束符。但你输入10个字符后,导致name没有字符串结束符,输出时会一直找到内存后面第一个字符串结束符为止,也就是num字符串后面的结束符。
看看那打印输出?