自考“高級(jí)語(yǔ)言程序設(shè)計(jì)”習(xí)題答案詳解(51)

字號(hào):

2.設(shè)計(jì)一個(gè)程序,將隨啟動(dòng)程序執(zhí)行時(shí)輸入的兩個(gè)整數(shù)的和、差、積、整除商、模運(yùn)算的結(jié)果輸出。 「解」直接寫出程序如下:
    # include
    main( int argc,char *argv[])
    { int tl,t2;
    if( argc < 3) {
    printf(“Parmenters missing!\n”); return 0;
    }
    t1=atoi( argv[l] );t2=atoi( argv[2] );
    printf(“%d+%d=%d\n”, t1, t2, t1+t2);
    printf(“%d-%d=%d\n”, t1,t1,t1-t2);
    printf(“%d*%d=%d \n”,t1,t2,t1*t2);
    printf(“%d/%d=%d\n”,t1,t2, t1/t2);
    printf(“%d% %d=%d\n”,t1,t2, t1%t2);
    }
    3.設(shè)計(jì)一個(gè)比較字符串的程序,兩個(gè)字符串隨啟動(dòng)程序執(zhí)行的命令輸入,輸出其中大的字符串。
    「解」直接寫出程序如下:
    # include
    main(int argc,char *argv[])
    { char *s1,*s2;
    if( argc < 3) {
    printf(“Parameters missing! \n”);return 0;
    }
    for(s1=argv[1],s2=argv[2];*s1 && *s1==*s2;s1++,s2++ );
    printf(“%s\n”,*s1< *s2? argv[2]:argv[1]);
    }
    3.下面的程序用來(lái)統(tǒng)計(jì)文件中字符的個(gè)數(shù),請(qǐng)?zhí)羁铡?BR>    # include
    # include
    main()
    { FILE *fp;
    long num=0;
    if(( fp =fopen(“fname.day”,“r”))== NULL)
    { printf(“Cann‘t open file! \n”); etit(0); }
    while________ { fgetc(fp); num++; }
    printf(“num =%d \n”。 num);
    fclose(fp);
    }
    「解」若要統(tǒng)計(jì)文件中的字符個(gè)數(shù),程序設(shè)計(jì)一個(gè)計(jì)數(shù)器,并預(yù)置該計(jì)數(shù)器為0值,并打開文件。在正確打開情況下,接著是一個(gè)循環(huán)。循環(huán)在文件未結(jié)束的情況下,反復(fù)讀人字符,并增加字符計(jì)數(shù)器。所以循環(huán)條件可寫成:!feof(fp)。程序有一個(gè)錯(cuò)誤,由于num變量的類型是long型的,輸出它的值應(yīng)在格式符d之前加上格式修飾符‘l’,不加這個(gè)修飾符只有在long型與int型實(shí)現(xiàn)相同的系統(tǒng)才是正確的。另外,要統(tǒng)計(jì)文件的長(zhǎng)度,用二進(jìn)制方式打開,通過讀入的字節(jié)數(shù)求出文件的長(zhǎng)。這是因?yàn)檎奈募绞酱蜷_時(shí),文件中的雙字符(回車字符和換行字符)讀入后將被當(dāng)作一個(gè)字符存儲(chǔ),二進(jìn)制方式不進(jìn)行這樣的轉(zhuǎn)換。