9.2 填充題
1.設(shè)有定義“# define F(N) 2*N”,則表達(dá)式 F(2+)的值是_____.
「解」F(N)被定義成2*N,表達(dá)式F(2+3)被替換成2*2+3,其值是7.
2.設(shè)有下列程序:
# include
main(int argc,int *argv[])
{ while( ——argc 0) printf(“%s”,argv[argc]);
printf(“\n”);
}
假定上述程序編譯連接成目標(biāo)程序名為p.exe,如果輸入如下的命令:
P 123 AAA BBB ↓(其中的↓表示回車)
則輸出結(jié)果是_____.
「解」程序啟動時,參數(shù)argc的值是4,由于循環(huán)條件是一即組 0,是先減1后判大于0,循環(huán)共進(jìn)行三次,順序輸出argv[3],argv[2]和argv[1],即輸出BBBAAAl23.
9.3 程序分析題
1.閱讀下面程序,寫出程序運(yùn)行結(jié)果。
# define PR(ar) printf(“%d,”, ar)
main()
{ int j,a[] ={1,3,5,7, 9,11,15}, * p= a+5;
for(j=3; j; j——)
switch(j) { case 1:
case 2: PR( * p++); break;
case 3: PR(*(——p));
}
printf(“\n”);
}
「解」程序的宏定義PR以d格式輸出參數(shù)的值和遠(yuǎn)號字符。程序給數(shù)組a 賦初值,并由指針p指向元素a[5].程序讓j從3減至1,共循環(huán)三次。當(dāng)j是3時,讓p減1,并輸出p所指元素的值9;當(dāng) j是2和1時,輸出p所指的數(shù)組元素的值,并讓p增1,順序輸出9和11.所以
程序輸出:
9,9,11
2.設(shè)下面的程序經(jīng)編譯連接后生成的目標(biāo)程序名為: ABC.EXE,寫出輸入以下命令行后的輸出:
ABC FILE1 FILE2 ↓(其中的↓表示回車)
# include
main( int argc, char *argv[])
{ int i;
printf(“%d \n”,argc);
for(i=O;i ARGC;I++) PRINTF(“%S”,ARGV[I]);
printf(“\n”);
}
「解」程序首先輸出參數(shù)argv的值3,然后循環(huán)三次,順序輸出ABC、FILE1和FILE2,并回車