2014-01-30 29 views
0

问:编写一个程序,该程序读取一个正整数,然后找到大于或等于读取的数字的最小幂。例如,如果程序读取的25的值,但是应当注意,32 = 2^5是两个大于或等于25。在以下代码中使用WHILE LOOP的正确方法是什么?

我的方法的最小功率:

**

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    int num1, n; 
    int num2 = 2^n; 
    printf("Please type in num1: "); 
    scanf("%d", &num1); 
    n = 0; 
    while (num1 > num2) 
    { 
     n=n+1; 
    } 
    printf("The power value is %d", n); 
    return (0); 
} 

** 我还是一个初学者所以......

+0

你需要写什么程序输出,所以我们可以提供直接的反馈。 while循环本身被正确格式化,但可能不会给你正确的输出。 –

+0

所以你应该拿笔和纸,算出算法。然后,你可以尝试在C中翻译它,如果你恰好被卡住了某处,请随时来这里问问。但不要指望SO用户为你编码。如果你已经知道你想用C编写代码,那么编辑问题并用简单的英文写,这样我们就可以讨论你的问题。 –

+4

'2^n'对于功率n是* * 2。使用math.h中定义的pow函数或位移('1 << n') – Sinkingpoint

回答

1

当你的循环开始,num1有一些特殊的价值,并num2具有另一个值。

每次通过循环,您都不会更改或者的值。
所以表达将永远保持真实,循环将永远持续运行,永不退出!

如果您希望循环最终结束,您必须以某种方式更改循环的表达式!
您应该修改循环内的num1num2的值。

0
  1. 尝试,这是算法快速

    int a, b = 1; 
    printf("Enter no \n"); 
    scanf("%d",&a); 
    while (a >= b) 
    { 
        b = b << 1 ; 
    } 
    printf("%d",b); 
    
相关问题