思想都在注释里面了
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
const int N =1000;
char bb[N][N];
//定义二维数组,方便存储单词,可以把二维数组想象成一个矩阵,就像秦始皇的人列计算机一样
int n1 =0;
int minx =N;
int main()
{
cin>>n1;
getchar();
//小白注意啊!在这里你不用这个缓冲一下回车,有你好受的,基础不牢的去看看getchar能吃掉什么数据
for(int i =0;i < n1;i++)
{
cin.getline(bb[i],N);
//关于getline的用法为:N为可以向bb[i]中输入的字符数量,最后默认有一个‘\0’,所以用它来处理字符串会很方便
minx = min(minx,(int)strlen(bb[i]));
//这里就相对简单了,这么做的原因就是你不可以让你数组中某行的字符串“过载”
//要有一个适当的范围
}
for(int k =0;k < minx;k++)
{
bool zhendema = true;//这么做的原因是提升你的if语句机动性,要问为什么这么做??
//你就按照这个来,老家伙的经验,这样处理很爽就对了,只要涉及判断,这就是个很好的习惯
for(int j = 0;j < n1;j++)
{
if(bb[0][k] != bb[j][k])//这里比较容易看懂,这就是以第一个数组容器中的单词为标准,来往后面比较前缀是否相同
{
zhendema = false;
break;
}
}
if(zhendema)
{
printf("%c",bb[0][k]);
}
else
{
printf("\n");
}
}
return 0;
}