您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
035第七章 函数04 自己實現系統函數
发布时间:2021-04-30 18:31:40编辑:雪饮阅读()
這次要介紹實現的幾個題目
pow實現
系統函數pow用于實現x^y這樣的表達式的結果。
其實自己實現也不難
#include<stdio.h>
int pow_u(int x,int y){
int result=1;
for(int i=0;i<y;i++){
result*=x;
}
return result;
}
void main()
{
printf("%d^%d=%d",2,3,pow_u(2,3));
}
這裏是簡單的,僅僅考慮int型的。
由于僅僅考慮int型,所以這裏實現原理也是很簡單,只是單純的遍歷追乘而已。
甲魚竟然說這個很給力,這個沒有涉及到任何算法,基本大家應該都是秒懂的。
sqrt實現
系統函數sqrt是爲了實現開根,那麽這裏只模擬int型開根,不考慮精度問題,不考慮浮點根。且只計算算術平方根。
則其實現如:
#include<stdio.h>
int sqrt_u(int x){
int temp=x/2;
while(temp>=0){
if(temp*temp==x){
return temp;
}
temp--;
}
return -1;
}
void main()
{
int result=sqrt_u(4);
printf("%d開根:",4);
if(result!=-1){
printf("%d",result);
}
else{
printf("無解");
}
}
其實該實現中也可以不用temp/2,可以用傳統的一直遞減下去,但是除以2這種是從平方開根的規律中總結的,因爲一般根至少都是平方的一半,或者更小。這樣以來可以節約循環執行的次數。
輸入統計的實現
其實這裏第三題,也不算難,真心覺得不算難。甲魚又坑了一波人。
#include<stdio.h>
void main()
{
int c,nb,nt,nl,n0,n32;
nb=nt=nl=n0=n32=0;
while((c=getchar())!=EOF){
//輸入空格
if(c ==' '){
nb++;
}
//輸入制表符
if(c=='\t'){
nt++;
}
//輸入換行
if(c=='\n'){
nl++;
}
//其實關于\0和\32不是鍵盤可以輸入的了的,除非你用gets函數接收輸入
if(c=='\0'){
n0++;
}
if(c=='\32'){
n32++;
}
}
printf("nb=%d,nt=%d,nl=%d,n0=%d,n32=%d \n",nb,nt,nl,n0,n32);
}
关键字词:函數,系統函數
相关文章
-
无相关信息