首页 > 试题广场 >

有一个函数“int f(int n)”,请编写一段程序调试函

[问答题]
有一个函数“int f(int n)”,请编写一段程序调试函数f(n)是否总是返回0,并添加必要的注视和说明。
推荐
xxj头像 xxj
int n = INT_MIN;
do
{
    if(0 != f(n))
    {
        //error
        break;
     }
}
while(n++ != INT_MIN);

if(n != INT_MIN) error;//
编辑于 2015-08-14 19:02:50 回复(3)
我觉得应该将n的值从最小的整数每次递增,直到最大的整数,依次测试f(n)的输出,如果都是0,则说明函数的确返回始终是0的,否则说明函数存在某些输入使得输出不为0.
发表于 2015-08-22 11:06:22 回复(0)
/**
 * 将int整型所有可能出现的数在while循环中逐一作为参数,调用fun()方法
 * 当fun()方法返回值不为0时,输出提示信息,跳出循环,
 */
public static void test() {
    int minValue = Integer.MIN_VALUE;           //int整型最小值
    int maxValue = Integer.MAX_VALUE;           //int整型最大值

    while (minValue <= maxValue) {            //从最小值开始,作为参数调用fun()方法
        if (fun(minValue++) != 0) {          //参数值加1
            System.out.println("不总是返回0");    //若返回值不为0,输出提示信息
            break;                  //跳出循环
        }
    }
}

发表于 2021-03-13 09:46:50 回复(0)
<div> #define Max_num pow(2,31) </div> <div> void main() </div> <div> { </div> <div> &nbsp;int n=Max_num -1; </div> <div> while((f(n)==0)&amp;&amp;(n!=-Max_num&nbsp;)) </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n--; </div> <div> if(n!=Max_num ) </div> <div> { cout&lt;&lt;"no always output 0"&lt;&lt;endl; </div> <div> return; </div> <div> } </div> <div> if(f(n)) </div> <div> <div> { cout&lt;&lt;"no always output 0"&lt;&lt;endl; </div> <div> return; </div> <div> } </div> </div> <div> else </div> <div> <div> { cout&lt;&lt;"always output 0"&lt;&lt;endl; </div> <div> return; </div> <div> } </div> </div> <div> } </div>
发表于 2015-09-11 18:50:23 回复(0)
<pre class="prettyprint lang-java">import java.util.*; public static Solution{ public static void main(String[] args){ &nbsp; Random random = new Random(new Date().getTime()); &nbsp; int i = 0; while(i ++ &lt; 1000000){ if(0 != f(random.nextInt()) break; } if(i &gt;= <span>1000000) &nbsp; System.out.println("f returns 0 all the time"); else </span><span>System.out.println("f doesn't return 0 all the time");</span><span> </span> } public static int f(int n ){ ... } }</pre> <br />
发表于 2015-09-11 09:31:26 回复(0)
我觉得
首先判断0,正数,负数 3个区间,然后0区间很容易了,正数用random生成一些随机数测试,负数也生成一些随机数,然后循环规定的次数,结束。看看循环区间有没有不符合要求的,如果有,则不是,如果没有,就通过测试。
发表于 2015-09-07 21:18:15 回复(0)
&lt;div&gt; int test(){ &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; //求出机器内整数的范围 &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; int size=sizeof(int)*8; &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; int range=powertwo(size); &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; //遍历范围内的所有整数,有返回1的,立即停止遍历返回1否则遍历完成返回0 &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; for(int i=-range;i&amp;lt;range;i++){ &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(f(i)==1){ &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 1; &lt;/div&gt; &lt;div&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/div&gt; &lt;div&gt; &lt;br /&gt; &lt;/div&gt; &lt;div&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp;return 0; &lt;/div&gt; &lt;div&gt; } &lt;/div&gt; &lt;div&gt; //求2的次幂 &lt;/div&gt; &lt;div&gt; int powertwo(int n){ &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; int result=1; &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; for(int i=0;i&amp;lt;n;i++){ &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result=result*2; &lt;/div&gt; &lt;div&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/div&gt; &lt;div&gt; &amp;nbsp; &amp;nbsp; return result; &lt;/div&gt; &lt;div&gt; } &lt;/div&gt;
发表于 2015-08-29 18:12:07 回复(0)
首先看n的范围,如果n的范围是千万级别以下,就
for(int i  = 0; i <= n; i++) if(f(n) != 0) return false;
如果上亿了,就是random出几个n
发表于 2015-08-22 10:48:53 回复(0)
<div> public class Test{ </div> <div> &nbsp; &nbsp; //此处为函数<br /> </div> <div> <br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;<br /> </div> <div> &nbsp; &nbsp; public void test(){ </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;1000;i++){ </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; //使用线程多次调用函数,只有局部变量,保证线程安全<br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; New Demo().start();&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;}<br /> </div> <div> &nbsp; &nbsp;} </div> <div> class Demo extends Thread{ </div> <div> &nbsp; &nbsp; &nbsp;public int f(int n){ </div> <div> <br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;} </div> <div> &nbsp; &nbsp; &nbsp;public void run(){ </div> <div> &nbsp; &nbsp; //生成随机数测试<br /> </div> <div> &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if(new Demo.f((int)math.random()*10000)!=0){ </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; System.out.print("并非一直为0");<br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /> </div> <div> &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} </div> <div> } </div>
发表于 2015-08-16 20:34:32 回复(0)
以java语言为例,解如下,直接system.out.println(f(n));
发表于 2014-11-29 13:16:22 回复(0)