鱼C论坛

 找回密码
 立即注册
查看: 672|回复: 6

[已解决]比较字符数组课后习题

[复制链接]
发表于 2020-4-27 16:07:20 | 显示全部楼层 |阅读模式
5鱼币
比较字符串课后作业

#define MAX 1024

int main()
{
        char str1[MAX];
        char str2[MAX];
        int i = 0;
        unsigned int n;

        printf("请输入第一个字符串:");
        while ((str1[i++] = getchar()) != '\n')
                ;

        printf("请输入第二个字符串:");
        i = 0;
        while ((str2[i++] = getchar()) != '\n')
                ;

        printf("请输入比较的字符数:");
        scanf("%u", &n);

        for (i = 0; i < n; i++)
        {
                if (str1 - str2)
                {
                        i++;
                        break;
                }
        }

        printf("比较的结果是:%d\n", str1[i-1] - str2[i-1]);

        return 0;
}[/code]
请问最后的循环语句要表达的是什么意思?
谢谢
最佳答案
2020-4-27 16:07:21
萌笨笨萌 发表于 2020-4-27 16:43
请问下最后结果输出的是字符串所有的比较结果还是什么

遇到第一个不相同的字符就break了。差值是第一个不相同的字符的ASCII差值
例如你输入的这个ghj和GHJ,循环的时候,先读到g和G发现不一样,然后就break跳出循环了,最后得到的就是'g'-'G' 的值,32

最佳答案

查看完整内容

遇到第一个不相同的字符就break了。差值是第一个不相同的字符的ASCII差值 例如你输入的这个ghj和GHJ,循环的时候,先读到g和G发现不一样,然后就break跳出循环了,最后得到的就是'g'-'G' 的值,32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 16:07:21 | 显示全部楼层    本楼为最佳答案   
萌笨笨萌 发表于 2020-4-27 16:43
请问下最后结果输出的是字符串所有的比较结果还是什么

遇到第一个不相同的字符就break了。差值是第一个不相同的字符的ASCII差值
例如你输入的这个ghj和GHJ,循环的时候,先读到g和G发现不一样,然后就break跳出循环了,最后得到的就是'g'-'G' 的值,32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 16:38:17 | 显示全部楼层
while循环是从第一个字符开始逐个比较两个字符串,遇到第一个不相等的字符就break
if就是判断两个字符串对应的字符是否相等,若相等继续比较下一个字符,若不相等,就跳出循环
if中的i++是为结尾的printf做准备的,
因为若是比较的n个字符都相等的话,那是i的值是n,而第n个字符的下标应该是n-1,所以printf中应该是i-1
然而若是比较到不相等的字符了,下标是i,i还没到最后的个字符,那时候break跳出循环了,
这时循环外printf的第i-1字符是一样的,所以就在break之前先使i++,然后,for循环外就一致了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-27 16:43:35 | 显示全部楼层
sunrise085 发表于 2020-4-27 16:38
while循环是从第一个字符开始逐个比较两个字符串,遇到第一个不相等的字符就break
if就是判断两个字符串对 ...

请问下最后结果输出的是字符串所有的比较结果还是什么
VirtualBox_FishC_27_04_2020_16_41_25.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-27 16:50:57 | 显示全部楼层
sunrise085 发表于 2020-4-27 16:07
遇到第一个不相同的字符就break了。差值是第一个不相同的字符的ASCII差值
例如你输入的这个ghj和GHJ,循 ...

break是跳出if语句还是for语句  我记得是
break 语句

那么在循环体中,如果我们想要让程序在中途跳出循环,那么我们同样可以使用 break 语句来实现。

执行 break 语句,直接跳出循环体。

有一点需要注意的是,对于嵌套循环来说,break 语句只负责跳出所在的那一层循环,要跳出外层循环则需要再布置一个 break 语句才行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 16:52:29 | 显示全部楼层
萌笨笨萌 发表于 2020-4-27 16:50
break是跳出if语句还是for语句  我记得是
break 语句

。。。。。。。
break只能跳出循环。。。。if语句不成空间,不用break,也不能break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-27 16:53:27 | 显示全部楼层
sunrise085 发表于 2020-4-27 16:52
。。。。。。。
break只能跳出循环。。。。if语句不成空间,不用break,也不能break

哦哦对  好的谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 01:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表