?2022年湖北專(zhuān)升本C語(yǔ)言循環(huán)控制模擬題
摘要:本文是2022年湖北專(zhuān)升本C語(yǔ)言循環(huán)控制模擬題,共有52道選擇題和10道填空題,供大家參考。具體詳細(xì)內(nèi)容見(jiàn)下文。
一、單項(xiàng)選擇題
1.下面程序段的運(yùn)行結(jié)果是( C )。
int n=0;
while(n++<=2);
printf(“%d”,n);
A) 2
B) 3
C) 4
D) 有語(yǔ)法錯(cuò)
2.設(shè)有程序段:
t=0;
while(printf(“*”))
{t++;
if(t<3) break;
}
下面描述正確的是( D)。
A) 其中循環(huán)控制表達(dá)式與 0 等價(jià)
B) 其中循環(huán)控制表達(dá)式與'0'等價(jià)
C) 其中循環(huán)控制表達(dá)式是不合法的
D) 以上說(shuō)法都不對(duì)
3.下面程序的功能是將從鍵盤(pán)輸入的一對(duì)數(shù),由小到大排序輸出,當(dāng)輸入一對(duì)相等數(shù)時(shí)結(jié)束循環(huán),請(qǐng)選擇填空( B )。
#include
main()
{int a,b,t;
scanf(“%d%d”,&a,&b);
while( ___________ )
{if(a>b)
{t=a;a=b;b=t;}
printf(“%d,%d\n”,a,b);
scanf("%d%d",&a,&b);
}}
A) !a=b
B) a!=b
C) a==b
D) a=b
4.C 語(yǔ)言中,while 和 do-while 循環(huán)的主要區(qū)別是(A)。
A) do-while 的循環(huán)體至少無(wú)條件執(zhí)行一次
B) while 的循環(huán)控制條件比 do-while 的循環(huán)控制條件更嚴(yán)格
C) do-while 允許從外部轉(zhuǎn)到循環(huán)體內(nèi)
D) do-while 的循環(huán)體不能是復(fù)合語(yǔ)句
5.對(duì)以下程序段描述正確的是(C)。
x=-1;
do
{x=x*x;}
while(!x);
A) 是死循環(huán)
B) 循環(huán)執(zhí)行二次
C) 循環(huán)執(zhí)行一次
D) 有語(yǔ)法錯(cuò)誤
6.以下描述中正確的是( C)。
A) do-while 循環(huán)中循環(huán)體內(nèi)不能使用復(fù)合語(yǔ)句
B) do-while 循環(huán)由 do 開(kāi)始,用 while 結(jié)束,在 while(表達(dá)式)后面不能寫(xiě)分號(hào)
C) 在 do-while 循環(huán)體中,一定要有能使 while 后面表達(dá)式的值變?yōu)榱?“假”)的操作
D) do-while 循環(huán)中,根據(jù)情況可以省略 while
7.若有如下語(yǔ)句
int x=3;
do{ printf(“%3d”,x-=2);} while(!(--x));
則上面程序段(B)。
A) 輸出的是 1
B) 輸出的是 1 和-2
C) 輸出的是 3 和 0
D) 是死循環(huán)
8.下面有關(guān) for 循環(huán)的正確描述是( D)。
A) for 循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B) for 循環(huán)是先執(zhí)行循環(huán)的循環(huán)體語(yǔ)句,后判斷表達(dá)式
C) 在 for 循環(huán)中,不能用 break 語(yǔ)句跳出循環(huán)體
D) for 循環(huán)的循環(huán)體語(yǔ)句中,可以包含多條語(yǔ)句,但必須用花括號(hào)括起來(lái)
9.對(duì) for(表達(dá)式 1; ;表達(dá)式 3)可理解為(B )。
A) for(表達(dá)式 1;0;表達(dá)式 3)
B) for(表達(dá)式 1;1;表達(dá)式 3)
C) for(表達(dá)式 1;表達(dá)式 1;表達(dá)式 3) D) for(表達(dá)式 1;表達(dá)式 3;表達(dá)式 3)
10.若 i 為整型變量,則以下循環(huán)執(zhí)行次數(shù)是( B)。
for(i=2;i==0;) printf(“%d”,i--);
A) 無(wú)限次 B) 0 次 C) 1 次
D) 2 次
11.以下不是無(wú)限循環(huán)的語(yǔ)句為( A)。
A) for(y=0,x=1;x>++y;x=i++) i=x;
B) for(;;x++=i);
C) while(1){x++;}
D) for(i=10;;i--) sum+=i;
12.下面程序段的運(yùn)行結(jié)果是( C )。
for(y=1;y<10;) y=((x=3*y,x+1),x-1);
printf(“x=%d,y=%d”,x,y);
A) x=27,y=27 B) x=12,y=13 C) x=15,y=14 D) x=y=27
13.執(zhí)行語(yǔ)句 for(i=1;i++<4;) ;后變量 i 的值是( C )。
A) 3
B) 4
C) 5
D) 不定
14.有一堆零件(100 到 200 之間),如果分成 4 個(gè)零件一組的若干組,則多 2 個(gè)零件;若分成 7 個(gè)零件一組,則多 3 個(gè)零件;若分成 9 個(gè)零件一組,則多 5 個(gè)零件。下面程序是求這堆零件總數(shù),請(qǐng)選擇填空( D)。
#include
main()
{int i;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!((i-3)%7))
if( ______ )
printf(“%d”,i);
}
A) i%9=5
B) i%9!=5
C) (i-5)%9!=0
D) i%9==5
15.下面程序的功能是把 316 表示為兩個(gè)加數(shù)的和,使兩個(gè)加數(shù)分別能被 13 和 11 整除,請(qǐng)選擇填空( B )。
#include
main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while( _k%11______ );
j=k/11;
printf(“316=13*%d+11*%d”,i,j);
}
A) k/11 B) k%11 C) k/11==0
D) k%11==0
16.下面程序的運(yùn)行結(jié)果是( D)。
#include
main()
{int y=10;
do{y--;}while(--y);
printf(“%d\n”,y--);
}
A) -1
B) 1
C) 8
D) 0
17.若運(yùn)行以下程序時(shí),從鍵盤(pán)輸入 ADescriptor(表示回車(chē)),則下面程序的運(yùn)行結(jié)果是(D)。
#include
main()
{char c;
int v0=1,v1=0,v2=0;
do{
switch(c=getchar())
{case‘a(chǎn)’:case‘A’:
case‘e’:case‘E’:
case‘i’:case‘I’:
case‘o’:case‘O’:
case‘u’:case‘U’:v1+=1;
default:v0+=1;v2+=1;
}
}while(c!=’\n’);
printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2);
}
A) v0=7,v1=4,v2=7
B) v0=8,v1=4,v2=8
C) v0=11,v1=4,v2=11
D) v0=12,v1=4,v2=12
18.下面程序的運(yùn)行結(jié)果是(B)。
#include
main()
{int a=1,b=10;
do
{b-=a;a++;}
while(b--<0);
printf(“a=%d,b=%d\n”,a,b);
}
A) a=3,b=11
B) a=2,b=8
C) a=1,b=-1
D) a=4,b=9
19.以下程序的輸出結(jié)果是( B )。
main()
{ int num=0;
while(num<=2)
{ num++; printf(“%d\n”,num);}
}
A) 1 2 3 4
B) 1 2 3
C) 1 2
D) l
20.設(shè)有程序段
int k=10;
while(k=0) k=k-1;
則下面描述中正確的是( C)。
A) while 循環(huán)執(zhí)行 10 次
B) 循環(huán)是無(wú)限循環(huán)
C) 循環(huán)體語(yǔ)句一次也不執(zhí)行
D) 循環(huán)體語(yǔ)句執(zhí)行一次
21.設(shè)有以下程序段
int x=0,s=0;
while(!x!=0) s+=++x;
printf("%d",s);
則( B )。
A) 運(yùn)行程序段后輸出 0
B) 運(yùn)行程序段后輸出 1
C) 程序段中的控制表達(dá)式是非法的
D) 程序段執(zhí)行無(wú)限次
22.語(yǔ)句 while(!E);中的表達(dá)式!E 等價(jià)于(A)。
A) E==0
B) E!=1
C) E!=0
D) E==1
23.下面程序段的運(yùn)行結(jié)果是( A)。
a=1;b=2;c=2;
while(a<b
printf("%d, %d, %d", a, b, c);
A) 1,2,0
B) 2,1,0
C) 1,2,1
D) 2,1,1
24.下面程序段的運(yùn)行結(jié)果是( D)。
x=y=0;
while(x<15) y++,x+=++y;
printf("%d, %d", y, x);
A) 20,7
B) 6,12
C) 20,8
D) 8,20
25.以下程序段的執(zhí)行結(jié)果是( B )。
int a, y;
a=10; y=0;
do
{ a+=2; y+=a;
printf("a=%d y=%d\n", a, y);
if(y>20) break;
} while(a=14);
A) a=12 y=12
B) a=12 y=12
a=14 y=16
a=16 y=28
a=16 y=20
a=18 y=24
C) a=12 y=12
D) a=12 y=12
a=14 y=26
a=14 y=44
26.t 為 int 類(lèi)型,進(jìn)人下面的循環(huán)之前,t 的值為 0,則以下敘述中正確的是( B)。
while( t=l )
{……}
A) 循環(huán)控制表達(dá)式的值為 0
B) 循環(huán)控制表達(dá)式的值為 1
C) 循環(huán)控制表達(dá)式不合法
D) 以上說(shuō)法都不對(duì)
27.有以下程序段
int k=0;
while(k=1) k++;
while 循環(huán)執(zhí)行的次數(shù)是(A)。
A) 無(wú)限次
B) 有語(yǔ)法錯(cuò),不能執(zhí)行
C) 一次也不執(zhí)行
D) 執(zhí)行 1 次
28.以下程序執(zhí)行后 sum 的值是(C)。
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
}
A) 15
B) 14
C) 不確定
D) 0
29.有以下程序段
int x=3;
do
{ printf("%d",x-=2); }
while (!(--x));
其輸出結(jié)果是(C)。
A) 1
B) 3 0
C) 1 -2
D) 死循環(huán)
30.若輸入 12、8,以下程序的輸出結(jié)果是( A)。
main()
{int a,b,num1,num2,temp;
scanf(“%d,%d”,&num1,&num2);
if(num1>num2)
{temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp;
}
printf(“%d, %d”,a,num1*num2/a);
}
A) 4,24
B) 3,24
C) 5,25
D) 4,25
31.以下程序的輸出結(jié)果是( A )。
#include
#include
main()
{int s=1;
float n=1,pi=0;
double t=1;
while(fabs(t)>=2e-6)
{pi+=t;
n+=2;
s=-s;
t=s/n;
}
pi*=4;
printf(“pi=%.6f\n”,pi);
}
A) 3.141592
B) 1
C) 2e-6
D) 0
32.以下程序的輸出結(jié)果是( B )。
main()
{int i,f1,f2;
f1=f2=1;
for(i=0;i<4;i++)
{printf(“%d %d ”,f1,f2);
f1+=f2;
f2+=f1;
}}
A) 1 2 3 4 5 6 7 8
B) 1 1 2 3 5 8 13 21
C) 1 1 3 5 7 9 11 13
D) 1 3 5 7 9 11 13 15
33.下列敘述中,正確的一條是( B )。
A) 語(yǔ)句“goto 12;”是合法的
B) for(;;)語(yǔ)句相當(dāng)于 while(1)語(yǔ)句
C) if(表達(dá)式)語(yǔ)句中,表達(dá)式的類(lèi)型只限于邏輯表達(dá)式
D) break 語(yǔ)句可用于程序的任何地方,以終止程序的執(zhí)行
34.以下程序的輸出結(jié)果是(B)。
main()
{int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20) break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
printf(“%d\n”,a);
}
A) 7
B) 8
C) 9
D) 10
35.以下的 for 循環(huán)( C)
for(x=0,y=0;(y!=123)&&(x<4);x++) ;
A) 是無(wú)限循環(huán)
B) 循環(huán)次數(shù)不定
C) 執(zhí)行 4 次
D) 執(zhí)行 3 次
36.C 語(yǔ)言中( D )
A) 不能使用 do-while 語(yǔ)句構(gòu)成的循環(huán)
B) do-while 語(yǔ)句構(gòu)成的循環(huán)必須用 break 語(yǔ)句才能退出
C) do-while 語(yǔ)句構(gòu)成的循環(huán),當(dāng) while 語(yǔ)句中的表達(dá)式值為非零時(shí)結(jié)束循環(huán)
D) do-while 語(yǔ)句構(gòu)成的循環(huán),當(dāng) while 語(yǔ)句中的表達(dá)式值為零時(shí)結(jié)束循環(huán)
37.以下程序的輸出結(jié)果是( A)。
main()
{int i;
for(i=1;i<=5;i++)
{if(i%2)
printf(“*”);
else
continue;
printf(“#”);
}
printf(“$\n”);
}
A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
38.有以下程序,從第一列開(kāi)始輸入數(shù)據(jù) 2473
#include
main()
{int c;
while((c=getchar())!=’\n’)
{switch(c-‘
2’)
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}}
printf(“\n”);
}
A) 668977
B) 668966
C) 6677877
D) 6688766
39.執(zhí)行以下程序片段的結(jié)果是(B)。
int x=23;
do
{printf(“%d”, x--);}
while(!x);
A) 打印出 321
B) 打印出 23
C) 不打印任何內(nèi)容
D) 陷入死循環(huán)
40.若 x 是 int 型變量,則執(zhí)行以下程序片段的結(jié)果是(D)。
for(x=3;x<6;x++) printf((x%2)?(“**%d”) : (“##%d\n”), x);
A) **3##4**5
B) ##3**4##5
C) ##3
D) **3##4 **4##5 **5
41.有以下程序,若運(yùn)行時(shí)從鍵盤(pán)輸入 3.6 2.4
#include
#include
main()
{float x,y,z;
scanf(“%f%f”,&x,&y);
z=x/y;
while(1)
{if(fabs(z)>1.0)
{x=y;y=z;z=x/y;}
else break;
}
printf(“%f\n”, y);
}
A) 1.500000
B) 1.600000
C) 2.000000
D) 2.400000
42.以下程序的輸出結(jié)果是( D)。
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf(“%d %d”,x--,y);
}
A) 10 1 9 2
B) 9 8 7 6
C) 10 9 9 0
D) 10 10 9 1
43.以下程序的輸出結(jié)果是(A)。
main()
{int n=4;
while(n--)
printf(“%d”,--n);
}
A) 2 0
B) 3 1
C) 3 2 1
D) 2 1 0
44.以下程序的輸出結(jié)果是( B)。
main()
{int i;
for(i=’A’;i<’I’;i++,i++)
printf(“%c”,i+32);
}
A) 編譯通不過(guò),無(wú)輸出 B) aceg C) acegi D) abcdefghi
45.若 i、j 已定義為 int 型,則以下程序段中內(nèi)循環(huán)體的總的執(zhí)行次數(shù)是( A)。
for(i=5;i;i--)
for(j=0;j<4;j++){}
A) 20
B) 24
C) 25
D) 30
46.若 j 為 int 型變量,則以下 for 循環(huán)語(yǔ)句的執(zhí)行結(jié)果是( B)。
for(j=10;j>3;j--)
{if(j%3) j--;--j;--j;printf(“%d”,j);}
A) 6 3
B) 7 4
C) 6 2
D) 7 3
47.以下程序的執(zhí)行結(jié)果是( D )。
main()
{int i,x;
for(i=1;i<=50;i++)
{x=i;
if(++x%2==0)
if(x%3==0)
if(x%7==0)
printf(“%d”,i);
}}
A) 28
B) 27
C) 42
D) 41
48.以下程序的執(zhí)行結(jié)果是( B)。
main()
{int i,j;
for(j=10;j<11;j++)
{ for(i=9;i<j;i++)
if(!(j%i)) break;
if(i>=j-1) printf(“%d”,j);
}}
A) 11
B) 10
C) 9
D) 10 11
49.在下列選項(xiàng)中,沒(méi)有構(gòu)成死循環(huán)的程序段是( C)。
A) int i=100;
while(1)
{i=i%100+1;
if(i>100) break;
}
B) for(;;);
C) int k=1000;
do{++k;} while(s);--s;
while(k>=10000);
D) int s=36;
50.以下程序的輸出結(jié)果是( B)。
main()
{int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<=3;j++)
{ if(j%2) continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
A) x=4
B) x=8
C) x=6
D) x=12
51.運(yùn)行以下程序后,如果從鍵盤(pán)上輸入 6514
main()
{int m,n;
scanf(“%d%d”,&m,&n);
while(m!=n)
{while(m>n) m-=n;
while(n>m) n-=m;
}
printf(“m=%d\n”, m);
}
A) m=3
B) m=2
C) m=1
D) m=0
52.以下程序的輸出結(jié)果是(C)。
main()
{int i,j,m=0,n=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
if(j>=i) m=1;n++;
printf(“%d\n”, n);
}
A) 4
B) 2
C) 1
D) 0
53.以下程序執(zhí)行后 sum 的值是( C)。
main()
{ int i , sum=0;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
A) 6
B) 3
C) 死循環(huán)
D) 0
二、填空題
1.以下程序運(yùn)行后的輸出結(jié)果是52。
main()
{ int i=10, j=0;
do
{ j=j+i; i--;}
while(i>2);
printf("%d\n",j);
}
2.設(shè)有以下程序:
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序運(yùn)行后,如果從鍵盤(pán)上輸入 1298,則輸出結(jié)果為 8921。
3.若輸入字母 b,程序輸出結(jié)果為 b,B;若輸入字符*,程序?qū)⒃鯓?strong>等待狀態(tài)。
#include
main()
{char c1, c2;
c1=getchar();
while(c1
c1=getchar();
c2=c1-32;
printf("%c, %c\n",c1, c2);
}
4.用以下程序計(jì)算 1 到 100 的整數(shù)的累加和。
main()
{ int i=1, sum= 0;
for( ;i<=100;)
{sum+=i;
i++;
}
printf("sum=%d\n",sum);
}
5.以下程序的功能是:從鍵盤(pán)上輸入若干個(gè)學(xué)生的成績(jī),統(tǒng)計(jì)并輸出最高成績(jī)和最低成績(jī),當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束。請(qǐng)?zhí)羁铡?/p>
main()
{ float x, amax, amin;
scanf(“%f”,&x);
amax=x;
amin=x;
while( x>=0)
{if(x>amax) amax=x;
if( x<amin) amin=x;
scanf(“%f”,&x);
}
printf("amax=%f\namin=%f\n",amax, amin);
}
6.設(shè) i、j、k 均為 int 型變量,則執(zhí)行完下面的 for 循環(huán)后,k 的值為10。
for(i=0, j=10;i<=j; i++, j--) k=i+j;
7.下面程序的功能是:計(jì)算 1 到 10 之間的奇數(shù)之和及偶數(shù)之和,請(qǐng)?zhí)羁铡?/p>
main()
{ int a, b, c, i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
b=i+1;
c+=b;
}
printf("偶數(shù)之和=%d\n", a);
printf("奇數(shù)之和=%d\n", c-11);
}
8.下面程序的功能是:輸出 100 以?xún)?nèi)能被 3 整除且個(gè)位數(shù)為 6 的所有整數(shù),請(qǐng)?zhí)羁铡?/p>
main()
{ int i, j;
for(i=0; i<100; i++)
{j=i*10+6;
if( j%3!=0) continue;
printf(“%d”, j);
}
}
9.要使以下程序段輸出 10 個(gè)整數(shù),請(qǐng)?zhí)钊胍粋€(gè)整數(shù)。
for(i=0; i<=18or19; printf(“%d\n”, i+=2));
10.若輸入字符串:abcde
while((ch=getchar())= =‘e’) printf(“*”);
延伸閱讀
- 2022年湖北專(zhuān)升本電路模擬題(四)
- 2022年湖北專(zhuān)升本電路模擬題(三)
- 2022年湖北專(zhuān)升本電路模擬題(二)
- 2022年湖北專(zhuān)升本電路模擬題(一)
- 2022年湖北專(zhuān)升本高等數(shù)學(xué)模擬題(三)
- 2022年湖北專(zhuān)升本高等數(shù)學(xué)模擬題(二)
專(zhuān)升本微信公眾號(hào)
掃碼添加
專(zhuān)升本備考資料免費(fèi)領(lǐng)取
去領(lǐng)取