可能我不理解break的含义
#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;
}
for循环里的if语句表达式为真的情况下,break直接跳出循环了,怎末判断后面的字符。
不理解这个地方,还有我不能编出这个程序,是我太笨了吗?
每次都有看不懂的题目
本帖最后由 jackz007 于 2021-10-25 19:32 编辑
这个题应该是输出两个字符串中的第一个不同的字符,所以,在逐字符比较的过程中,当两个字符串的对应字符不相等时,就立即使用 break 语句直接终止循环,至于后面的字符,自然就不需要再继续比较了。
如果两个字符串一致,那么,printf() 输出的就是两个字符串结束标志 '\0' 的差值 0。如果不一致,输出的就是两个字符串中头一个不同字符 ASCII 编码的差值。 #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++;//这里和打印的-1多余了
break;
}
}
printf("比较的结果是:%d\n", str1 - str2);//i如果是0的话括号中会是[-1]
return 0;
} hujiamiao1990 发表于 2021-10-25 19:51
i++不多余把,i= 0的话i-1等于0
这是小甲鱼给的标准答案,也许这就是他的强大之处
页:
[1]