以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请改正程序中的错误,使程序能得到正确的结果。包含错误的源程序如下: #include <stdio.h> void main() { char str1[100],str2[100]; int i,s; printf("\n input string 1:\n"); getchar(str1); printf("\n input string 2:\n"); getchar (str2); i=0; while((str1[i]!=str2[i]&&(str1[i]=='0')) i++; s=str1[i]+str2[i]; printf("%d\n",s); }
时间: 2023-07-15 14:15:30 浏览: 131
以下是修改后的程序:
```c
#include <stdio.h>
int main() {
char str1[100], str2[100];
int i = 0, s;
printf("\n input string 1:\n");
scanf("%s", str1);
printf("\n input string 2:\n");
scanf("%s", str2);
while (str1[i] == str2[i] && str1[i] != '\0') {
i++;
}
if (str1[i] == '\0' && str2[i] == '\0') {
printf("The two strings are equal.\n");
} else {
s = str1[i] - str2[i];
printf("The ASCII difference between the first different characters is %d.\n", s);
}
return 0;
}
```
修改说明:
1. `void main()` 应该改为 `int main()`,因为 `main()` 函数必须有返回值;
2. `getchar()` 函数只能读取单个字符,应该使用 `scanf()` 函数读取字符串;
3. 在 `while` 循环中,判断条件应该改为 `str1[i] == str2[i] && str1[i] != '\0'`,否则如果两个字符串长度不同,会出现数组越界的情况;
4. 在输出结果前,应该判断两个字符串是否完全相等,如果相等,则输出提示信息,否则才计算第一个不相同字符的ASCII码之差。
阅读全文