簡單的RPC框架
阿新 • • 發佈:2020-12-01
任務一
該實驗可以以返回值的形式返回根。
只需要將函式型別更替為double等有返回值型別,並返回即可。
任務二
#include <stdio.h> long long fun(int n);//宣告函式 int main() { int n;//設定一個輸入 long long f;//設定一個輸出 while(scanf("%d",&n)!=EOF)//多組輸入 { f=fun(n);//呼叫函式 printf("n=%d,f=%lld\n",n,f);//列印結果 } return 0; } longlong fun(int n)//定義函式 { static long long a=1;//初始化2的0次方 static int i=0;//判斷是否遞歸回到第一次 static long long b; if(n)//判斷是否繼續遞歸併累計乘2次數,嚶嚶嚶 { n--; i++; fun(n);//強行遞迴大法,嚶嚶嚶 } if(i)//判斷是否乘2 { i--; a=a*2; } else//如果不是就減1並返回一個值 { b=a-1;//儲存返回值 a=1;//初始化return b; } }
#include <stdio.h> int main() { int n;//設定一個輸入 long long f;//設定一個輸出 while(scanf("%d",&n)!=EOF)//多組輸入 { int b[1000]={1};//多達一千位的輸出,嚶嚶嚶 int temp=0; for(int i=0;i<n;i++)//迭代演算法,遞迴太麻煩了Orz { if(b[0]<=1000)//減少執行次數。。。。b[0]*=2; else { int c=b[0]; for(int i=0;i<1000;i++)//高精度,你懂的。 { b[i]=b[i]*c+temp; temp=b[i]/10; b[i]%=10; } } } if(b[0]>0)//減1操作。。。。枯了 b[0]-=1; else { for(int j=1;j<1000;j++) { if(b[j]!=0) { b[j]-=1; break; } } } int x=1000-1; for(;x>=0;x--)//輸出判斷 if(b[x]!=0) break; for(;x>=0;x--)//列印輸出 printf("%d",b[x]); printf("\n"); } return 0; }
加個高精度,再加一個減1的判斷。不難,但是碼程式碼讓我吐了,特別是前面的遞迴。
任務五
#include <stdio.h> void draw(int n, char symbol); int main() { int n, symbol; while(scanf("%d %c", &n, &symbol) != EOF) { draw(n, symbol); printf("\n"); } return 0; } void draw(int n,char symbol) { for(int i=1;i<=n;i++) { for(int j=n-i;j>0;j--) printf(" "); for(int j=1;j<=(2*i-1);j++) printf("%c",symbol); printf("\n"); } return; }