#include<stdio.h> int main() { char s[4][50]; int n[4]={0,0,0,0},i,j,max; for(i;i<4;i++) for(j;j<50;j++) { scanf("%c",&s[i][j]); if(s[i][j]!='\0') n[i]=n[i]+1; else break; } if(n[0]>n[1]) { if(n[0]>n[2]) { if(n[0]>n[3]) { max=n[0]; } else { max=n[3]; } } else { if(n[2]>n[3]) { max=n[2]; } else { max=n[3]; } } } else { if(n[1]>n[2]) { if(n[1]>n[3]) { max=n[1]; } else { max=n[3]; } } else { if(n[2]>n[3]) { max=n[2]; } else { max=n[3]; } } } printf("%d",max); return 0; }这段程序想要输出最长字符串的长度,请问哪里出了问题
时间: 2024-02-14 21:04:53 浏览: 5
这段程序的问题在于变量 i 和 j 没有初始化,会导致未知的行为。建议在外层循环中将 i 初始化为 0,内层循环中将 j 初始化为 0,例如:
```
#include <stdio.h>
int main() {
char s[4][50];
int n[4] = {0, 0, 0, 0}, i, j, max;
for (i = 0; i < 4; i++) {
for (j = 0; j < 50; j++) {
scanf("%c", &s[i][j]);
if (s[i][j] != '\0')
n[i] = n[i] + 1;
else
break;
}
}
if (n[0] > n[1]) {
if (n[0] > n[2]) {
if (n[0] > n[3]) {
max = n[0];
} else {
max = n[3];
}
} else {
if (n[2] > n[3]) {
max = n[2];
} else {
max = n[3];
}
}
} else {
if (n[1] > n[2]) {
if (n[1] > n[3]) {
max = n[1];
} else {
max = n[3];
}
} else {
if (n[2] > n[3]) {
max = n[2];
} else {
max = n[3];
}
}
}
printf("%d", max);
return 0;
}
```