1. 程式人生 > 實用技巧 >簡單的RPC框架

簡單的RPC框架

任務一

該實驗可以以返回值的形式返回根。

只需要將函式型別更替為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;
}
long
long 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;
}