輸入輸出掛

昨晚做一道題,本來想暴力剪枝來着,剪枝沒法減了還過不了,去學習了一下輸入輸出掛,結果還是過不了,事實證明是自己算法比較渣,還有沒有掌握熟練"合理估計問題複雜度"的知識,不過還是寫一下輸入輸出掛吧,萬一以後用得到呢~~~

純整數輸入輸出掛

#include <stdio.h>


bool scan_d(int &num)//輸入整型
{
        char in;bool IsN=false;
        in=getchar();
        if(in==EOF) return false;
        while(in!='-'&&(in<'0'||in>'9')) {
            if(in==EOF)
                return false;
            in=getchar();
        }
        if(in=='-'){ IsN=true;num=0;}
        else num=in-'0';
        while(in=getchar(),in>='0'&&in<='9'){
                num*=10,num+=in-'0';
        }
        if(IsN) num=-num;
        return true;
}




 bool scan_lf(double &num)//輸入double型
{
        char in;double Dec=0.1;
        bool IsN=false,IsD=false;
        in=getchar();
        if(in==EOF) return false;
        while(in!='-'&&in!='.'&&(in<'0'||in>'9'))
                in=getchar();
        if(in=='-'){IsN=true;num=0;}
        else if(in=='.'){IsD=true;num=0;}
        else num=in-'0';
        if(!IsD){
                while(in=getchar(),in>='0'&&in<='9'){
                        num*=10;num+=in-'0';}
        }
        if(in!='.'){
                if(IsN) num=-num;
                return true;
        }else{
                while(in=getchar(),in>='0'&&in<='9'){
                        num+=Dec*(in-'0');Dec*=0.1;
                }
        }
        if(IsN) num=-num;
        return true;
}




void print_d(int num)//輸出整型
{
    bool flag = false;
    if(num < 0) {
        putchar('-');
        num = -num;
    }
    int ans[10], top = 0;
    while(num != 0) {
        ans[top++] = num%10;
        num /= 10;
    }
    if(top == 0) putchar('0');
    for(int i = top-1; i >= 0; i--) {
        char ch = ans[i] + '0';
        putchar(ch);
    }
}




int main()
{
    int i,j;
    int a[1000];
    double b[1000];
    int n;
    while(scan_d(n)){
        for(i=1;i<=n;i++)
            scan_d(a[i]);
        for(i=1;i<=n;i++)
            scan_lf(b[i]);


        for(i=1;i<=n;i++){
            print_d(a[i]);
            putchar(' ');
        }
        putchar('\n');


        for(i=1;i<=n;i++){
            printf("%lf",b[i]);
            putchar(' ');
        }
        putchar('\n');
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章