飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1868|回复: 0

[C/C++] 第九课作业:平方数(goto版本) 以及 简单加密字符

[复制链接]
  • TA的每日心情
    擦汗
    2016-4-19 21:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-4-17 15:47:06 | 显示全部楼层 |阅读模式
    本帖最后由 wai1216 于 2016-4-17 21:52 编辑

    看第九课开始的时候,Nisy老师提到了平方数的作业,于是开始用两个for和if加上一个break,实现了一次。
    后来看到Nisy老师所讲的goto,于是在看完视频后,开始试着用goto写了一次。其中对于两个for循环有的逻辑没理清,在调试了几次后终于弄清。
    在分析哪里出错的时候,感觉就是for循环的一步步然后与goto相对应进行判断分析。
    关键是一个goto 循环体内的东西,goto 跳出。以及多个for的时候对于循环初始化的清空

    代码如下:main()
    {
            int i = 0;
            int j = 0;
            int k = 0;
            int a[10];

    scanf:
            scanf("%d",(a + i));
            i++;
            goto start1;

    start1:
            if(i < 10)
            {
                    goto scanf;        
            }

            i = 0;  /* 将0重新放入i所在的空间内 */

    af:
            if(*(a + i) == j * j)
            {
                    k++;
                    printf("No.%d = %d | ",k,*(a + i));
                    i++;
                    j = 0;
                    goto for_w;                                             /* 注意于else中的goto for_n之间的逻辑区别*/
            }
            else
            {
                    j++;
                    goto for_n;
            }

    for_n:
            if(j <= *(a + i))
            {
                    goto af;               
            }
            else
            {
                    i++;
                    j = 0;                                      /* 将j的空间内的数据重新变为0 */
                    goto for_w;
            }

    for_w:
            if(i < 10)
            {
                    goto for_n;
            }

            printf("\n");
            printf("all:%d",k);
    }
    ---------------------------------------------------------------------
    一个简单的取反
    代码如下:
    void scr1(char *str)
    {
            int i = 0;
            for( ; *(str + i) ; i++)
            {
                    *(str + i) = ~*(str + i);
            }
            return;
    }

    void show(char *str)
    {
            int i = 0;
            for( ; *(str + i) ; i++)
            {
                   printf("%2X",*(str + i));
            }
            printf("\n");
            return;
    }

    main()
    {
            char *str = "Hello,world";
            printf("before:");
            show(str);
            scr1(str);
            printf("now:");
            show(str);
            scr1(str);
            printf("restore:");
            show(str);
    }



    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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