各位高手,菜鸟请教一个编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 08:24:46
有30个数,每个数按顺序编号(0-29),要求找出该组数中与数值b相差最小的数。谢谢前辈!!!
(我这里求极小值的运算mathmin()只能在两个数中比较)

你没提具体的编程语言什么的。
这种题目在数据结构(C)的里都应该有的
30个数的从编程思想上讲,应该是用b这个数依次减去这30个数,首先是了b-编号1的数,取它们差的绝对值(有绝对值函数),先把和第一个数的差的绝对值和第一个数的值或位置分别记录到两个变量中(比如把绝对值的值给变量a,把第一个数值给c),然后用一个循环分别用另外的29个数与b相减,再依次比较它们的差的绝对值是不是比原来的小,即比a的数值小,如果小的话,就重新给变量c和a赋值.循环结束后,变量c里存的就是与b相差最小的数了

另外你说的极小值运算不会是说两个数中小的那个数吧?

你这30个数有没有规律呢?范围?还是随机数?你的数值b是什么范围内的数?这些都关乎代码的效率,通过这些看似无关的条件,来有目的的设计你的代码才是关键阿。什么代码都可以写出来,你也可以什么算法都用,但是这就忽略了写代码本身的目的性——为解决实际问题而写代码。你所学的全部算法都是为了解决(或者适应)某些实际问题而诞生的。所以在你写代码的时候尽量去考虑实际的问题相关性,代码在实际情况中的执行效率。最好做到既不大材小用,又不杯水车薪,这才是锻炼自己的方法。否则你写什么都只是在浪费时间了。

给一些实际条件把。

很简单,都比较一下就可以了,用一个变量保存第一数的差(用绝对值),然后用这个直译与其它的比较,比这个数小就把那个数赋给这个变量.