# include< stdio.h> int main () { int i=0; char x[]= "study"; char y[]= "student"; while(x[i]!= '\0' && y[i] !='\0') { if(x[i]==y[i] !='\0') printf ("%c",x[i]) ; i++ ; } return 0; }
时间: 2024-01-06 09:04:56 浏览: 128
这段代码的功能是比较两个字符串x和y的每个字符是否相同,如果相同,则输出该字符。但是它的实现有一些问题:
1. if语句中的判断条件应该是 x[i] == y[i] 而不是 x[i]==y[i] !='\0' ,因为这样的判断会被解释成 (x[i] == y[i]) && (y[i] != '\0') ,即只有当x[i]和y[i]相等且y[i]不为'\0'时才会执行if语句,这不是我们想要的结果。
2. 当两个字符串的长度不相等时,会出现数组越界的情况,因为程序会一直遍历最长的那个字符串,直到遍历到其中一个字符串的'\0'为止。
下面是修正后的代码:
```c
#include <stdio.h>
int main() {
int i = 0;
char x[] = "study";
char y[] = "student";
while(x[i] != '\0' && y[i] != '\0') {
if(x[i] == y[i]) {
printf("%c", x[i]);
}
i++;
}
return 0;
}
```
输出结果为:
```
stu
```
阅读全文