- UID
- 70756
注册时间2010-11-1
阅读权限85
最后登录1970-1-1
见习版主
TA的每日心情 | 擦汗 2016-4-19 21:35 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
|
本帖最后由 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);
}
|
|