#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { float line1,line2; scanf("%f",&line1); char str1[500]; char str2[500]; fgets(str1, sizeof(str1), stdin); fgets(str2, sizeof(str2), stdin); int sum = 0; for(int i = 0; i < strlen(str1); i ++) { for(int j = 0; j < strlen(str2); j ++) if(str1[i] == str2[i]) { sum ++; } } line2 = sum / strlen(str1); if(line1 == line2) { printf("yes"); } else { printf("no"); } return 0; }哪里出了问题
时间: 2024-01-07 18:03:45 浏览: 170
#include<stdio.h>
在第 15 行的 if 语句中,应该是比较 str1[i] 和 str2[j] 是否相等,而不是比较 str1[i] 和 str2[i] 是否相等。因此,需要将 if 语句修改为如下形式:
```c
if (str1[i] == str2[j]) {
sum++;
}
```
此外,在读取字符串时,fgets 函数会读入换行符,因此需要在字符串比较之前去掉换行符。可以使用以下代码将换行符替换为空字符:
```c
str1[strcspn(str1, "\n")] = '\0';
str2[strcspn(str2, "\n")] = '\0';
```
修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
float line1, line2;
scanf("%f", &line1);
char str1[500];
char str2[500];
fgets(str1, sizeof(str1), stdin);
fgets(str2, sizeof(str2), stdin);
str1[strcspn(str1, "\n")] = '\0';
str2[strcspn(str2, "\n")] = '\0';
int sum = 0;
for (int i = 0; i < strlen(str1); i++) {
for (int j = 0; j < strlen(str2); j++) {
if (str1[i] == str2[j]) {
sum++;
}
}
}
line2 = (float)sum / strlen(str1);
if (line1 == line2) {
printf("yes");
} else {
printf("no");
}
return 0;
}
```
阅读全文