刚学C,各位帮我看看哪里出现问题了,要求输出公共字符串,我的没有输出。看了半天没看出问题在哪?自己好菜。
#include
int main(){
int n,num=0,k=0,t=0;
char a[60][30];
scanf("%d",&n);
while(num!=n){
scanf("%s",a[num]);
num++;
}
for(int i=0;i-1;i++){
k=k+a[i][0]-a[i+1][0];
}
if(k!=0)printf(" ");
for(int j=0;j<30;j++){
for(int i=0;i1][j];
}
if(t==0){
printf("%c",a[0][j]);
}else{
break;
}
return 0;
}
}
第一个循环中的 while(num!=n) 应该是 while(num<n),因为你需要读入 n 个字符串。
第二个循环中的 for(int i=0;i<num-1;i++) 应该是 for(int i=0;i<n-1;i++),因为你需要比较 n-1 对相邻的字符串。
在第二个循环中, t 在每次比较时都应该被重置为0,以免影响后面的比较。
最后一个循环应该放在第二个循环的外面,以便在找到公共字符串后输出它。
#include <cstdio>
int main() {
int n, num = 0, k = 0, t = 0;
char a[60][30];
scanf("%d", &n);
while (num < n) {
scanf("%s", a[num]);
num++;
}
for (int i = 0; i < n - 1; i++) {
k = k + a[i][0] - a[i + 1][0];
}
if (k != 0) {
printf(" ");
}
for (int j = 0; j < 30; j++) {
t = 0;
for (int i = 0; i < n - 1; i++) {
t = t + a[i][j] - a[i + 1][j];
}
if (t == 0) {
printf("%c", a[0][j]);
} else {
break;
}
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: