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í)羁铡?/p>
# 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)制方式打開,通過(guò)讀入的字節(jié)數(shù)求出文件的長(zhǎng)。這是因?yàn)檎奈募绞酱蜷_時(shí),文件中的雙字符(回車字符和換行字符)讀入后將被當(dāng)作一個(gè)字符存儲(chǔ),二進(jìn)制方式不進(jìn)行這樣的轉(zhuǎn)換。