#include <stdio.h>#include <math.h>?int main (){ unsigned long num; unsigned long value=0;//2的n次方的值 size_t number_pow=0;//指數(shù)冪 printf("請輸入一個正整數(shù):"); scanf("%1d",&num); while (value<=num) ? //2的n次方大于number時循環(huán)停止 { value=pow(2,number_pow++); ? //調用數(shù)學函數(shù)pow if (value<num) { printf("小于%1d的所有2的乘方為%1d \n",num,value); } } return 0;}
1 回答
已采納

luofuxiang
TA貢獻34條經驗 獲得超34個贊
????pow的函數(shù)原型為double pow(double x,double y);所以樓主定義的num應該為double類型,返回值可以強制轉換為long unsigned int 類型(即unsigned long類型),然后輸出結果,輸出double類型的格式化輸出符號為“%lf”,unsigned long 類型格式化輸出符號為“%ld”,這里我發(fā)現(xiàn)樓主寫的是“%1d”。
????下面代碼是我根據(jù)樓主的代碼稍微做了一下修改,已經用調試運行過。
源代碼:
#include?<stdio.h> #include?<math.h> int?main?() { double?num; unsigned?long?value=0;//2的n次方的值 size_t?number_pow=0;//指數(shù)冪 printf("請輸入一個正整數(shù):"); scanf("%lf",&num); while?(value<=num)???//2的n次方大于number時循環(huán)停止 { value=(long?unsigned?int)pow(2,number_pow++);???//調用數(shù)學函數(shù)pow if?(value<num) { printf("小于%.0lf的2的乘方有%ld?\n",num,value); } } return?0; }
運行結果:
- 1 回答
- 0 關注
- 3903 瀏覽
添加回答
舉報
0/150
提交
取消