c语言常用算法累加法例题,C语言第三次模拟练习题部分解答.docx
單項(xiàng)選擇
號(hào):13334
若有如下語句
int x=3;
do {printf (,,%d\n/,, x-=2) ;}while(! (--x));
則上面程序段o
A、輸出的是1
B、輸出的是1和-2
C、輸出的是3和0
D、是死循環(huán)
答案:B
解答:循環(huán)變量x初值為3. Do-while是先執(zhí)行循環(huán)體,后判斷條件。若條 件為假,循環(huán)結(jié)束。條件為真,執(zhí)行循環(huán)體。
第一次循環(huán):
循環(huán)體printf ("%d\n", x-二2);是輸出x的值。而x-二2等價(jià)于x=x~2二
3-2 =lo 所以輸出l
條件是自增表達(dá)式與邏輯非表達(dá)式的綜合。先計(jì)算自增表達(dá)式- -x的值是x自減1后的值,為0.自增變量x的值是0.條件! (- -x) = !0=l. 為真。繼續(xù)執(zhí)行循環(huán)體。
第二次循環(huán)
循環(huán)體printf (,,%d\n,,> x-=2):是輸出x的值。而x-二2等價(jià)于x=x~2 =
0-2 =-2o 所以輸出-2
條件是白增表達(dá)式與邏輯非表達(dá)式的綜合。先計(jì)算--x.白增表達(dá)式-
-x的值是洎減1后的值,為-3.自增變量x的值是-3.條件! (- -x) = ! (-3)二0.為假。循環(huán)結(jié)束。
總結(jié):輸出 l-2
號(hào):13353 下面程斥的功能是在輸入的一批正整數(shù)中求出最大者,輸入0結(jié)束循環(huán)。請(qǐng) 選擇填空。
ttincludeO
void main ()
{ int a, max=0;
scanf (”%d", &a);
TOC \o "1-5" \h \z while ()
{ if(max
scanf&a);
}
pri ntfmax);
}
A、a==0
B、a
C、!a==l
D、!a
答案:B
解答:題目中說輸入0結(jié)束循環(huán)。它的另一個(gè)意思是輸入的變量a的值不是 0時(shí)就執(zhí)行循環(huán)或者說a為真就執(zhí)行循環(huán),為假就結(jié)束循環(huán)。所以條件是 a!=0 或 a
答案A a==0 a為假,即等于0時(shí),0=0,為真,執(zhí)行循環(huán)體。為真, 即非0,則a二二0的邏輯值為假。結(jié)束循環(huán)。總結(jié):a為假執(zhí)行循環(huán)體。 為真,結(jié)束循環(huán)。
答案C ! a二二1非運(yùn)算符!優(yōu)先級(jí)高于比較運(yùn)算符二二。所以先計(jì)算! a,然后再判斷是否和1相等。a為假時(shí),! a值是真,與1恒等,邏輯值 為為真時(shí),! a值是假,與1不等,邏輯值為0.所以它的含義是a為假執(zhí) 行循環(huán)體。為真,結(jié)束循環(huán)。
答案D。! a的含義,是a為假執(zhí)行循環(huán)體。為真,結(jié)束循環(huán)。
■@號(hào):13357
與下面程序段等價(jià)的是O
for (n二100;n<=200;n++)
{ if(n%3~0) continue;
printf (”%4d", n);
}
A、for (n=100;n<=200;n++) if(n%3==0) printf(〃%4d〃,n);
B、for(n=100;(n%3)&&n<=200;n++) printf("%4d", n);
C^ for (n=100; (n%3) | n<=200;n++) printf (,,%4d,\ n);
D、 for(n=100;n<=200;n++)
{ if (n%3) printf ("%4d", n);
else continue;
答案:D
解答:
程序的含義:
n=100;n<=200;n++o 含義是循環(huán)變量n的初值為100,終值為200,步 長(zhǎng)為1.
if(n%3==0) continue;含義是若n是3的倍數(shù),則結(jié)束此次循環(huán),進(jìn) 入下一次循環(huán)。即后面的printfC%4r,n);不執(zhí)行。直接執(zhí)行步長(zhǎng)加 1.
若n不是3的倍數(shù),則執(zhí)行printfC%4r,n);,即輸出n的值。且值占四 列,右對(duì)齊。
輸出100-200中所有不是3的倍數(shù)的數(shù)。
看四個(gè)答案:
答案A if(n%3=0)printf(〃%4d〃,n);的含義是n是3的倍數(shù),則輸出。 與源程序的題意不符。
答案B與關(guān)系表達(dá)式,兩邊的邏輯值均為1,結(jié)果才是真。若有一個(gè) 為假,結(jié)果為假。(n%3)&&n<=200 n%3為真,同時(shí)n<=200為真,則執(zhí) 行循環(huán)體,即輸出變量n .n%3為真,說明n不是3的倍數(shù)時(shí)為真。
(n%3)&&n<=200若n%3為假,或n>200,則條件為假,結(jié)束循環(huán)。所以,
當(dāng)n是3的倍數(shù)時(shí),就結(jié)束。即n二102時(shí),102%3二0,為假,就結(jié)束循環(huán)。不 符合題意。
答案C (n%3) |n<=200;是或關(guān)系表達(dá)式。有一個(gè)為真,結(jié)果為真。 全為假,結(jié)果為假。n%3 n是3的倍數(shù)時(shí),如n二102, n%3為假,但n二102〈二200 為真。所以102也要輸出。不符合題意。
答案D if (n%3) printf ("%4d", n) ; else conti
總結(jié)
以上是生活随笔為你收集整理的c语言常用算法累加法例题,C语言第三次模拟练习题部分解答.docx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为美学基因再升级 P50 Pocket
- 下一篇: 节能prru进入深度休眠节能_2021-