钱能C++教材习题答案七

   /2005-05-08

 

//********************
//*     8.3.(2)      *
//********************
# include <iostream.h>
# include <stdlib.h>

int compare(const void * a,const void * b);
double list1[10]={32.1,456.87,332.67,442.0,98.12,451.79,340.12,54.55,99.87,72.5};
double * list[10]={& list1[0],& list1[1],&list1[2],&list1[3],&list1[4],&list1[5],&list1[6],&list1[7],&list1[8],&list1[9]};

void main()
{
        qsort((void *) list,10,sizeof(list[0]),compare);
        for(int i=0;i<10;i++)
        {
                cout<<*list<<endl;
        }
}
int compare(const void * a,const void * b)
{
        double temp1=**(double**)a;
        double temp2=**(double**)b;
        if(temp1<temp2)
                return -1;
        else
        {
                if(temp1==temp2)
                        return 0;
                else
                        return 1;
        }
}

//********************
//*     8.3.(3)*******
//********************
# include <iostream.h>
# include <stdlib.h>
# include <string.h>

int compare(const void * a,const void * b);

char * list[10]={"enter","number","size","begin","of","cat","case","program","centain","a"};

void main()
{
        qsort((void *) list,10,sizeof(list[0]),compare);
        for(int i=0;i<10;i++)
        {
                cout<<list<<endl;
        }
}
int compare(const void * a,const void * b)
{
        int l,m;
        const char * p;
        const char * q;
        p=(const char *)a;
        q=(const char *)b;

        for(l=0; * p != '/0';l++)
                p++;
       
        for(m=0; * q != '/0';m++)
                q++;

        if(l<m)
                return -1;
        else
        {
                if(l>m)
                        return 1;
                else
                        return strcmp(*(char**)a,*(char**)b);
        }
}

//********************
//*     8.4***********
//********************
# include <iostream.h>
# include <stdlib.h>
# include <string.h>

char list[]={"the result of 3 and 2 is not 8"};
//注意使用list[]
char unlist[]={"xqk/"zlvyuz/"wm#7>gpl's$ry/"vvw$A"};
int num[]={4,9,6,2,8,7,3};

char * convert(char * a);
char * unconvert(char * b);

void main()
{
        char * m=list;
        char * n=convert(m);
        cout<<endl;
        for(;*n!='/0'
        {
                cout<<*n;
                n++;
        }
        cout<<endl<<endl;

       char * x=unlist;
        char * y=unconvert(unlist);
        cout<<endl;
        for(;*y!='/0'
        {
                cout<<*y;
                y++;
        }
        cout<<endl;
}

char * convert(char * a)
{

        int i=0,j,k=0;
        for(;*(a+k)!='/0'
        {
               
                j=num;
                i=(i+1)%7;
                cout<<"("<<*(a+k)<<""<<int(*(a+k))<<"+"<<j<<",";
                        a[k]=char((int(*(a+k))-33+j)%91+33);

                k++;
        }

        return a;
}

char * unconvert(char * b)
{
        int i=0,j,k=0;
        for(;*(b+k)!='/0'
        {
               
                j=num;
                i=(i+1)%7;
                cout<<"("<<*(b+k)<<""<<int(*(b+k))<<"+"<<j<<",";

                if(int(*(b+k))-33<j)
                        b[k]=char(91+(int(*(b+k))-j));//如何转换为原来的代码?
                else
                        b[k]=char(int(*(b+k))-j);

                k++;
        }

        return b;
}

//**********
//*     8.5*
//**********
# include <iostream.h>

int strcmp(const char * str1,const char * str2);

void main()
{
        char list1[]={" "};
        char list2[]={" "};
        int a=strcmp(list1,list2);
        cout<<a<<endl;
}

 

int strcmp(const char * str1,const char * str2)
{
        if((*str1=='/0')&&(*str2=='/0'))
                return 0;
        if((*str1=='/0')&&(*str2!='/0'))
                return -1;
        if((*str1!='/0')&&(*str2=='/0'))
                return 1;

        if(int(*str1)<int(*str2))
                return -1;
        else
                        if(int(*str1)>int(*str2))
                                return 1;
                        else
                        {
                                str1++;str2++;
                                return strcmp(str1,str2);
                        }
}

//**********
//*     8.6*
//**********
# include <iostream.h>

char * strcpy(char * dest,const char * source);

void main()
{
        char list1[]={"sdfhdahaha"};
        char * list2=NULL;
        list2=strcpy(list2,list1);
        cout<<list2<<endl;
}

 

char * strcpy(char * dest,const char * source)
{
        int k=0;
        const char * l=source;
        for(;*l!='/0';k++)
                l++;
        dest=new char[k+1];

        for(int i=0;i<k;i++)
        {
                dest=*source;
                source++;
        }

        dest[k]='/0';

        return dest;
}

//*************
//*     8.7****
//*************
# include <iostream.h>

int strcmp(const char * str1,const char * str2);

void main(int argc,char * argv[])
{
       

       
        int i=strcmp(argv[0],argv[1]);
        if (i==0)
                cout<<"equal"<<endl;
        else
                if (i=-1)
                        cout<<"<"<<endl;
                else
                        if (i=1)
                                cout<<">"<<endl;

}

 

int strcmp(const char * str1,const char * str2)
{
        if((*str1=='/0')&&(*str2=='/0'))
                return 0;
        if((*str1=='/0')&&(*str2!='/0'))
                return -1;
        if((*str1!='/0')&&(*str2=='/0'))
                return 1;

        if(int(*str1)<int(*str2))
                return -1;
        else
                        if(int(*str1)>int(*str2))
                                return 1;
                        else
                        {
                                str1++;str2++;
                                return strcmp(str1,str2);
                        }
}

閻庢鍠掗崑鎾绘⒑椤愶絿顣叉繝鈧幍顔惧崥婵顦糚闂佹寧绋掗惌顔剧博鐎涙ḿ鈻旈柛銉㈡櫓濞兼岸鏌ら弶鍨殶闁绘牜鍎ょ粙澶愬箻閼碱剛鎳濋柣鐘叉处瀹曟﹢锝炵€n偓绱i柟杈鹃檮椤撶懓銆掑铏《婵犫偓閸涘瓨鏅悘鐐插⒔濡层劑鏌¢崼顐㈠幐缂佹顦靛畷姘紣娴d警浼囬梺鍛婂笒濡繈骞愰崼鏇熸櫖濞达綀娅i崡婊堟倵閻㈠灚鍤€闁搞劍绻勭划璇参旂€n剛锛�
547闂佸湱顣介崑鎾绘⒒閸曗晛鐏柣妤€閰i幊鎾诲礃椤忓棗鐓涢梺鍏兼緲閸燁偄鐣烽敓锟�1130缂備礁顦粔鐢碘偓鍨皑閳ь剝顫夌喊宥夊汲閳ь剟鏌℃径瀣婵炲牊鍨垮畷锟犲礃瑜忕粙鍥╃磼婢跺﹦效闁告ǜ鍊栫缓钘壩旈崪浣规瘜闁圭厧鐡ㄩ幐鍫曞焵椤戞寧绁版い顐㈩儐閿涙劙骞嬮婊咁槷濠电偞鍨归弫绋棵烘繝鍥ㄥ殣閺夊牜鍋掗崵鏃堟煏閸℃洝鍏岀紒顔光偓瓒佽鎯斿☉鎺戜壕濞达絿鏅Σ鍫ユ煕閹烘挻鍋犻柍褜鍏涚欢姘跺闯妤e啯鎳氱€广儱鍟犻崑鎾存媴閻戞ê鈧偟鈧鎮堕崕顖炲焵椤戣儻鍏屾い鎾存倐閹爼宕遍幇銊ヤ壕濞达絾浜芥禒锕€霉閸忕厧鎼搁柍褜鍏涘ù鍥磼閵婏箑顕辨慨妯稿劗閸嬫挻鎷呯憴鍕暚闂佺厧寮惰ぐ鍐紦妤e啯鍋犻柛鈩冨姀閸嬫挻鎷呴悿顖氬箑闂佸搫鍊稿ú銏ゅ焵椤戞寧绁板瑙勬崌瀵敻顢涘Ο宄颁壕濞达綀顫夐悡鈧梻鍌氬€介濠勬閸洖绠绘い鎾村閸嬫挻鎷呴崷顓溾偓濠囨倵濞戝疇绀嬮柍褜鍏涚粈浣轰焊閹殿喒鍋撳☉瀹犵闁逞屽厸濞村洭顢橀崫銉т笉婵°倓鐒︾花姘舵煏閸℃洜顦︾€圭ǹ顭峰畷锝囦沪閸屾浜惧ù锝呮啞閸曢箖鏌i悙鍙夘棑闁逞屽厸閻掞箓寮崒姘f煢婵懓娲犻崑鎾存媴閸涘﹥鍣搁柣搴㈠喕鐠愮喖鍩€椤戞寧顦风紓宥咁儔閹虫牠鎳犻鍐炬蕉缂備焦鍐婚幏锟�28缂備緡鍋夐褔顢楅悢铏圭煋闁规惌鍨崇壕锟�

相关话题/

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19