LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 不死潜龙

关于数组的问题!谢谢!

[复制链接]
 楼主| 发表于 2004-11-21 09:58:58 | 显示全部楼层
说得好!我会慢慢的提高的!一口吃个胖子是不可能的!谢谢kj501兄弟的教导,我现在觉得我还差很多!
但是kj501兄弟!你说我的问题大大的有,这我没话说,很多基本概念都不清楚,我也服,但是我不能光服,我也想知道,我在这个题中都牵涉到了那些基本概念?而且我都弄错了那些基本概念?能不能给个方向,我好针对这些来改正呀!?谢谢了!:)呵呵!:)
发表于 2004-11-21 11:34:59 | 显示全部楼层
你学C语言看的是什么教材?
 楼主| 发表于 2004-11-21 11:48:38 | 显示全部楼层
谭浩强的c程序设计第二版!:)
兄弟有没有好的材料呀?推荐几个给小弟谢谢!!:)
发表于 2004-11-21 20:35:59 | 显示全部楼层
入门这本书足够了。把书上的习题好好做做。如果碰到一些概念不理解,多半是汇编没学好造成的。可以在适当的时候复习一下。
发表于 2004-11-21 21:36:19 | 显示全部楼层
这个,首先,尽量不要用goto
其次,人家只是说了数组是有序的,没有说是升序还是降序,还是需要先判断一下的,不好直接就默认是升序了吧

最初由 orphen 发表
帮你写了一个,你试一下
[PHP]
main()
{
float a[7]={1,2,3,4,5,6},i;
int n,m=0;
printf("Input a number:");
scanf("%f",&i);
if(i>a[5])
{
a[6]=i;
goto loop;
}
else
{
for(n=0;n<7;n++)
{
if(i<=a[n])
{
for(m=6;m>n;m--)
a[m]=a[m-1];
a[n]=i;
goto loop;
}
}
}
loop:
for(n=0;n<7;n++)
printf("%f\n",a[n]);
}
[/PHP]
之前的代码没有实际上机,这回改了一下,判断了一下输入数据大于a[5]的情况。
发表于 2004-11-21 22:37:13 | 显示全部楼层
我也知道用goto不好,但是在这里更直观些,也方便,因为要跳转到相同的地方。
至于升降序的问题,我只是根据楼主的代码做的。如果要判断也很简单,添加对原来两个数组中相邻元素的大小判断就好
如果你要说原来的是乱序的......我无语了:confused: :confused:
呵呵

PS。能不能告诉我为什么goto不好?我不是学计算机,没有深入了解,只是听说或是知道“不好”。:p :p :p
发表于 2004-11-22 10:03:37 | 显示全部楼层
数组肯定是有序的,这个题目明确说了
goto的问题,其实要是自己没事写个好玩,那没有什么。不过要是做大的项目,或者需要和别人交流,那么就需要考虑维护和尽量方便别人理解的问题了。程序尽量写的结构清晰一些是个比较好的习惯。
发表于 2004-11-22 13:33:10 | 显示全部楼层
小弟不才,谈谈我所认识的goto:

结构化的程序设计一般认为程序的流程有三种结构类型:顺序的,分支的(if else 语句)和循环的。任何复杂的(非并行的)流程都可以由这三种结构经过若干次的嵌套组成。

在C语言中不用goto语句完全可以实现这三种结构,而用了goto语句一不小心就会破坏这种结构,使得程序结构混乱,难以维护。因此,一般不提倡使用goto语句,即便使用,也只能从内向外或从上向下的goto。

goto也并非一无是处,当需要从一个很深的循环中跳出时(往往由于发生了某种错误而去执行一段错误处理的代码),goto真的很好用。
发表于 2004-11-22 14:42:07 | 显示全部楼层
总的目的就是方便自己和别人的理解。如果有时用goto更加有助于实现这个目的,那当然就要用了。:>
发表于 2004-11-22 16:09:56 | 显示全部楼层
看看 UNIX 的源代码吧,那里有正确使用 goto 的例子。

还有就是,如果效率非常重要,也需要使用 goto。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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