课后作业S1E19
#include <stdio.h>#define MAX 1024
int main()
{
char str1;
char str2;
int i = 0;
unsigned int n;
printf("请输入第一个字符串:");
while ((str1 = getchar()) != '\n')
;
printf("请输入第二个字符串:");
i = 0;
while ((str2 = getchar()) != '\n')
;
printf("请输入比较的字符数:");
scanf("%u", &n);
for (i = 0; i < n; i++)
{
if (str1 - str2)
{
i++;
break;
}
}
printf("比较的结果是:%d\n", str1 - str2);
return 0;
}
最后那句printf("比较的结果是:%d\n", str1 - str2); 里面的str1- str2 为什么里面i要减1? 因为你if条件是当字符不相等的时候触发的,触发后执行了{ }里面的i++,所以要比较不同字符差了多少,就要在下标-1 ,换种写法
for (i = 0; i < n; i++)
{
if (str1 - str2)
{
break;
}
}
printf("比较的结果是:%d\n", str1 - str2);
效果和你的一样,对比一下就明白了 machimilk 发表于 2017-5-9 00:23
因为你if条件是当字符不相等的时候触发的,触发后执行了{ }里面的i++,所以要比较不同字符差了多少,就要在 ...
不对吧 for (i = 0; i < n; i++)
{
if (str1 - str2)
{
break;
}
}
printf("比较的结果是:%d\n", str1 - str2);
for()循环那比如 n 是 3 i(2) < n(3) 真执行里面循环体 然后 i(2)+1再去判断下一个循环 i(3) < n(3) 假跳出循环 i 不 -1就变成 str[ i(3) ] 访问第四个元素了(和你想访问的 n(3) 不符合)
页:
[1]