改错以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的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); }
时间: 2024-01-20 20:02:11 浏览: 78
改正后的程序如下:
```c
#include <stdio.h>
int main() {
char str1[100], str2[100];
int i, s;
printf("Input string 1: ");
scanf("%s", str1);
printf("Input string 2: ");
scanf("%s", str2);
i = 0;
while (str1[i] == str2[i]) {
if (str1[i] == '\0' || str2[i] == '\0') {
break;
}
i++;
}
if (str1[i] == '\0' || str2[i] == '\0') {
printf("Strings are identical!\n");
} else {
s = str1[i] - str2[i];
printf("The ASCII difference between first non-matching characters is %d.\n", s);
}
return 0;
}
```
改错的具体内容:
1. 主函数应该声明为 `int main()`。
2. 使用 `getchar()` 函数获取字符串是错误的,正确的方法是使用 `scanf()` 函数。
3. 字符串比较的 while 循环条件有误,应该是 `str1[i] == str2[i]`。
4. 在计算 ASCII 码之差时,应该是 `str1[i] - str2[i]`。
5. 在输出时应该加上单位或者提示信息。
阅读全文