OJ1061: 顺序输出各位数字(C语言)(谈程序优化问题及pow函数耗时问题)
生活随笔
收集整理的這篇文章主要介紹了
OJ1061: 顺序输出各位数字(C语言)(谈程序优化问题及pow函数耗时问题)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
輸入一個整數(shù),從高位開始逐位分割并輸出各位數(shù)字。
輸入
輸入一個正整數(shù)n,n是int型數(shù)據(jù)
輸出
依次輸出各位上的數(shù)字,每一個數(shù)字后面有一個空格,輸出占一行。例如,輸入 12345 ,輸出 1 2 3 4 5
樣例輸入 Copy
12345
樣例輸出 Copy
1 2 3 4 5
提示
注意整數(shù)運算避免使用double類型的函數(shù)如pow()。
本題可先用一個循環(huán)計算出最高位的位權(quán)h,然后再用一個循環(huán),循環(huán)內(nèi)容為: 輸出最高位(n/h)、扔掉最高位(n = n%h)、降低最高位位權(quán)(h = h/10),直到位權(quán)h為0。
我第一次提交時未按提示來,如下:
#include<stdio.h> #include<math.h>int main() {int a;int n,i=0,j;scanf("%d",&n);j=n;//為了避免n的變化,選擇新變量計數(shù)while(j/10!=0)//確定n的位數(shù){j=j/10;i++;//i為n的位數(shù)-1}while(n/10!=0){a=n/pow(10,i);//從首項開始剝離各位數(shù)字printf("%d ",a);n=n%(int)pow(10,i);//將位數(shù)剝離后剩下尾數(shù)達循環(huán)目的進行下次運算//%只能進行整型運算,將pow函數(shù)強制轉(zhuǎn)換為整型i--;}printf("%d",n);return 0; }輸出答案正確(有興趣的可以復(fù)制試一試),
但是!!
結(jié)果·····超時!!!
所以,我們編寫程序應(yīng)該使其運算量盡可能減少,不然很容易超時,不僅僅是為了答題正確,也是為了養(yǎng)成良好習(xí)慣。
修改如下:
對比兩個代碼,只是改掉了pow函數(shù),但事實上其運算挺耗時間,提示了明確不用pow。
總結(jié)
以上是生活随笔為你收集整理的OJ1061: 顺序输出各位数字(C语言)(谈程序优化问题及pow函数耗时问题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS的小例子
- 下一篇: OJ1039: n个数求和(C语言for