3.2 填充題
1.結(jié)構(gòu)化程序設(shè)計規(guī)定的三種基本結(jié)構(gòu)是________結(jié)構(gòu),選擇結(jié)構(gòu)和_______結(jié)構(gòu)。
「解」結(jié)構(gòu)化程序設(shè)計的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
2.若有定義“int a=25,b=14, c=19;”,以下語句的執(zhí)行結(jié)果是______.
if a++<=25&&b——<=2&&c++)
prinif(“***a=%d,b=%d,c=%d\n”, a,b,c);
else printf(“###a=%d,b=%d,c=%d\n”, a, b,c);
「解」問題所給的if語句中,條件a++<=25&&b——<=2&&c++是先求邏輯與的第一個運(yùn)算分量,它是一個關(guān)系式,關(guān)系成立。接著判定第二個邏輯與運(yùn)算分量,又是一個關(guān)系式,由于變量b的值是14,b不小于等于2,運(yùn)算分量的關(guān)系式不成立,導(dǎo)致if語句的條件為假,執(zhí)行else部分。在求且語句的條件時,計算了2個邏輯與分量,使變量a的值增了1,變量 b的值被減了1.所以輸出內(nèi)容是:###a=26,b=13,c=19.
3.以下兩條if語句可合并成一條if語句為_____________.
if(a<=b) x=1;
else y=2;
if(a>b)printf(“****y=%d\n” ,y);
else printf( “####x=%d\n” ,x);
「解」在以上兩條if語句中,兩個條件剛巧相反。若將前一個if語句的第一個成分語句與第二個if語句的第二個成分語句合并;第一個if語句的第二個成分語句與第二個if語句的第一個成分語句合并,寫成一條if語句如下:
if(a<=b){x=1;printf(“####x=%d\d,x);}
else{ y=2; printf(“****y=%d\n”,y);}
4.設(shè) i,j,k均為 int型變量,則執(zhí)行完下面的for語句后,k的值為_______.
for(i=0,j=10;i<=j(luò);i++,j——)k=i+j;
「解」該 for語句以i為0、j為10初始化,循環(huán)條件是 i<=j(luò),每次循環(huán)后 i增 1、j減 1,循環(huán)體是將 i與j的和賦給 k.這樣變量 k將保存的是最后一次賦給它的值。一次循環(huán)后 i為 l.j為 9,二次循環(huán)后 i為 2.j為 8,……,五次循環(huán)后 i為 5.j為 5,繼續(xù)第六次循環(huán),將 i與 j的和10存于 k后,i為 6、j為 4,結(jié)束循環(huán)。所以循環(huán)執(zhí)行后 k為10.
5.下列程序的功能是輸入一個整數(shù),判斷是不是素數(shù),若為素數(shù)輸出1,否則輸出0,請為程序填空。
main()
{int i,X,y=1;
scanf(“%d”,&x);
for(i=2;i<=x/2;i++)
if________________ { y=0; break; }
printf(“%d\n”,y);
}
「解」為判數(shù)x是否是素數(shù),預(yù)置變量y的值為1(x可能是素數(shù)),然后用循環(huán),用2至x/2的整數(shù)i測試對X的整除性,若能被其中的某個整數(shù)整除,則X是合數(shù),置y的值為0(不是素數(shù)),結(jié)束測試循環(huán)。若都不能整除,則X為素數(shù)。i能否整除X,可用求余運(yùn)算X%i等于0來判定。所以程序中的空框可填 X% i==0.測試 X為素數(shù)的代碼可寫成:
y=l;
for( i=2; i<=x/2; i++)
if(x%i==0){ y=0; bleak; }
1.結(jié)構(gòu)化程序設(shè)計規(guī)定的三種基本結(jié)構(gòu)是________結(jié)構(gòu),選擇結(jié)構(gòu)和_______結(jié)構(gòu)。
「解」結(jié)構(gòu)化程序設(shè)計的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
2.若有定義“int a=25,b=14, c=19;”,以下語句的執(zhí)行結(jié)果是______.
if a++<=25&&b——<=2&&c++)
prinif(“***a=%d,b=%d,c=%d\n”, a,b,c);
else printf(“###a=%d,b=%d,c=%d\n”, a, b,c);
「解」問題所給的if語句中,條件a++<=25&&b——<=2&&c++是先求邏輯與的第一個運(yùn)算分量,它是一個關(guān)系式,關(guān)系成立。接著判定第二個邏輯與運(yùn)算分量,又是一個關(guān)系式,由于變量b的值是14,b不小于等于2,運(yùn)算分量的關(guān)系式不成立,導(dǎo)致if語句的條件為假,執(zhí)行else部分。在求且語句的條件時,計算了2個邏輯與分量,使變量a的值增了1,變量 b的值被減了1.所以輸出內(nèi)容是:###a=26,b=13,c=19.
3.以下兩條if語句可合并成一條if語句為_____________.
if(a<=b) x=1;
else y=2;
if(a>b)printf(“****y=%d\n” ,y);
else printf( “####x=%d\n” ,x);
「解」在以上兩條if語句中,兩個條件剛巧相反。若將前一個if語句的第一個成分語句與第二個if語句的第二個成分語句合并;第一個if語句的第二個成分語句與第二個if語句的第一個成分語句合并,寫成一條if語句如下:
if(a<=b){x=1;printf(“####x=%d\d,x);}
else{ y=2; printf(“****y=%d\n”,y);}
4.設(shè) i,j,k均為 int型變量,則執(zhí)行完下面的for語句后,k的值為_______.
for(i=0,j=10;i<=j(luò);i++,j——)k=i+j;
「解」該 for語句以i為0、j為10初始化,循環(huán)條件是 i<=j(luò),每次循環(huán)后 i增 1、j減 1,循環(huán)體是將 i與j的和賦給 k.這樣變量 k將保存的是最后一次賦給它的值。一次循環(huán)后 i為 l.j為 9,二次循環(huán)后 i為 2.j為 8,……,五次循環(huán)后 i為 5.j為 5,繼續(xù)第六次循環(huán),將 i與 j的和10存于 k后,i為 6、j為 4,結(jié)束循環(huán)。所以循環(huán)執(zhí)行后 k為10.
5.下列程序的功能是輸入一個整數(shù),判斷是不是素數(shù),若為素數(shù)輸出1,否則輸出0,請為程序填空。
main()
{int i,X,y=1;
scanf(“%d”,&x);
for(i=2;i<=x/2;i++)
if________________ { y=0; break; }
printf(“%d\n”,y);
}
「解」為判數(shù)x是否是素數(shù),預(yù)置變量y的值為1(x可能是素數(shù)),然后用循環(huán),用2至x/2的整數(shù)i測試對X的整除性,若能被其中的某個整數(shù)整除,則X是合數(shù),置y的值為0(不是素數(shù)),結(jié)束測試循環(huán)。若都不能整除,則X為素數(shù)。i能否整除X,可用求余運(yùn)算X%i等于0來判定。所以程序中的空框可填 X% i==0.測試 X為素數(shù)的代碼可寫成:
y=l;
for( i=2; i<=x/2; i++)
if(x%i==0){ y=0; bleak; }