?2022年湖北專升本C語言選擇結(jié)構(gòu)程序設(shè)計(jì)模擬題
摘要:本文是2022年湖北專升本C語言選擇結(jié)構(gòu)程序設(shè)計(jì)模擬題,共有52道選擇題和15道填空題,供大家參考。具體詳細(xì)內(nèi)容見下文。
一、單項(xiàng)選擇題
1.邏輯運(yùn)算符兩側(cè)運(yùn)算對象的數(shù)據(jù)類型是( D)。
A) 只能是 0 或 1
B) 只能是 0 或非 0 正數(shù)
C) 只能是整型或字符型數(shù)據(jù)
D) 可以是任何類型的數(shù)據(jù)
2.已知 x=43, ch='A', y=0;則表達(dá)式(x>=y&&ch<'B'&&!y)的值是( C)。
A) 0
B) 語法錯
C) 1
D) “假”
3.已知 int x=10, y=20, z=30; 以下語句執(zhí)行后 x, y, z 的值是( B )。
if(x>y)
z=x;x=y;y=z;
A) x=10,y=20,z=30
B) x=20,y=30,z=30
C) x=20,y=30,z=10
D) x=20,y=30,z=20
4.執(zhí)行下列語句后 a 的值為(),b 的值為( C )。
int a, b, c;
a=b=c=1;
++a|| ++b && ++c;
A) 錯誤 1
B) 2 2
C) 2 1
D) 1 1
5.若希望當(dāng) A 的值為奇數(shù)時,表達(dá)式的值為“真”,A 的值為偶數(shù)時,表達(dá)式的值為“假”,則以下不能滿足要求的表達(dá)式是( C )。
A) A%2==1
B) !(A%2==0)
C) !(A%2)
D) A%2
6.設(shè)有:int a=1,b=2,c=3,d=4,m=2,n=2; 執(zhí)行(m=a>b)&&(n=c>d)后 n 的值是( B )。
A) 0
B) 2
C) 3
D) 4
7.判斷 char 型變量 cl 是否為小寫字母的正確表達(dá)式是( D)。
A)‘a(chǎn)’<=cl<=‘z’
B) (cl>=a)&&(cl<=z)
C) (‘a(chǎn)’>=cl)||(‘z’<=cl)
D) (cl>=‘a(chǎn)’)&&(cl<=‘z’)
8.以下不正確的 if 語句形式是( C)。
A) if(x>y&&x!=y);
B) if(x==y) x+=y;
C) if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y)
D) if(x<y) p="" {x++;y++;}
9.請閱讀以下程序:
main()
{
int a=5,b=0,c=0;
if(a=b+c) printf(“***\n”);
else
printf(“$$$\n”);
}
以上程序( D)。
A) 有語法錯不能通過編譯
B) 可以通過編譯但不能通過連接
C) 輸出***
D) 輸出$$$
10.當(dāng) a=1,b=3,c=5,d=4 時,執(zhí)行完下面一段程序后 x 的值是(B)。
if(a<b)
if(c<d) x=1
else
if(a<c)
if(b<d) x=2
else x=3;
else x=6;
else x=7;
A) 1
B) 2
C) 3
D) 6
11.以下程序的輸出結(jié)果是(C)。
main()
{int a=100,x=10,y=20,ok1=5,ok2=0;
if(x<y)< p="">
if(y!=10)
if(!ok1)
a=1;
else
if(ok2) a=10;
a=-1;
printf(“%d\n”,a);
}
A) 1
B) 10
C) -1
D) 值不確定
12.以下程序的輸出結(jié)果是( B)。
main()
{int x=2,y=-1,z=2;
if(x<y)< p="">
if(y<0) z=0;
else
z+=1;
printf(“%d\n”,z);
}
A) 3
B) 2
C) 1
D) 0
13.為了避免在嵌套的條件語句 if - else 中產(chǎn)生二義性,C 語言規(guī)定:else 子句總是與( B )配對。
A) 縮排位置相同的 if
B) 其之前最近的 if
C) 其之后最近的 if
D) 同一行上的
14.若有條件表達(dá)式 (exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是( B )。
A) (exp==0)
B) (exp!=0)
C) (exp==1)
D) (exp!=1)
15.若運(yùn)行時給變量 x 輸入 12,則以下程序的運(yùn)行結(jié)果是( A)。
main()
{int x,y;
scanf(“%d”,&x);
y=x>12?x+10:x-12;
printf(“%d\n”,y);
}
A) 0
B) 22
C) 12
D) 10
16.語句:printf("%d",(a=2)&&(b= -2));的輸出結(jié)果是( D)。
A) 無輸出
B) 結(jié)果不確定
C) -1
D) 1
17.當(dāng) c 的值不為 0 時,在下列選項(xiàng)中能正確將 c 的值賦給變量 a、b 的是( C)。
A) c=b=a;
B) (a=c)||(b=c);
C) (a=c)&&(b=c);
D) a=c=b;
18.能正確表示 a 和 b 同時為正或同時為負(fù)的表達(dá)式是(D )。
A) (a>=0||b>=0)&&(a<0||b<0)
B) (a>=0&&b>=0)&&(a<0&&b<0)
C) (a+b>0)&&(a+b<=0)
D) a*b>0
19.能正確表示邏輯關(guān)系:“a≥10 或 a≤0”的 C 語言表達(dá)式是( D)。
A) a>=10 or a<=0
B) a>=0|a<=10
C) a>=10&&a<=0
D) a>=10||a<=0
20.有如下程序段
int a=14,b=15,x;
char c=‘A’;
x=(a&&b)&&(c<‘B’);
執(zhí)行該程序段后,x 的值為( D)。
A) ture
B) false
C) 0
D) 1
21.以下程序的輸出結(jié)果是( C)。
A)-1 1
B)0 1
C)1 0
D)0 0
main( )
{ int a=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}
22.與 y=(x>0?1:x<0?-1:0);的功能相同的 if 語句是(A)。
A) if(x>0) y=1;
else if(x<0) y=-1;
else y=0;
else y=0;
B) if(x)
if(x>0)y=1;
else if(x<0)y=-1;
C) y=-1
if(x) if(x>=0)
if(x>0)y=1; if(x>0)y=1;
else if(x==0)y=0; else y=-1;
else y=-1;
D) y=0;
23.閱讀以下程序:
main()
{int x;
scanf("%d", &x);
if(x--<5) printf("%d", x);
else printf("%d", x++);
}
程序運(yùn)行后,如果從鍵盤上輸人 5,則輸出結(jié)果是( B)。
A)3
B) 4
C) 5
D) 6
24.假定 w、x、y、z、m 均為 int 型變量,有如下程序段:
w=1; x=2; y=3; z=4;
m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;
則該程序運(yùn)行后,m 的值是( D )。
A) 4
B) 3
C) 2
D) 1
25.有如下程序
main( )
{ float x=2.0,y;
if(x<0.0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf(“%f\n”,y);
}
該程序的輸出結(jié)果是( C )。
A) 0.000000
B) 0.250000
C) 0.500000
D) 1.000000
26.有如下程序
main( )
{ int a=2,b=-1,c=2;
if(a)if(b<0) c=0;
else c++;
printf(“%d\n”,c);
}
該程序的輸出結(jié)果是( A )。
A) 0
B) 1
C) 2
D) 3
27.若有定義: float w; int a, b; 則合法的 switch 語句是( C)。
A) switch(w)
{case 1.0: printf("*\n");
case 2.0: printf("**\n");
} 無 default 語句
B switch(x)
{case 1,2: printf("*\n");
case 3: printf("**\n");
}
C) switch(b)
{case 1: printf("*\n");
default: printf("\n");
case 1+2: printf("**\n");
}
D) switch(a+b);
{case 1: printf("*\n");
case 2: printf("**\n");
default: printf("\n");
}
28.若 a、b、c1、c2、x、y 均是整型變量,正確的 switch 語句是( D )。
A) swich(a+b);
{case 1:y=a+b; break;
case 0:y=a-b; break;
}
B) switch(a*a+b*b)
{case 3:
case 1:y=a+b;break;
case 3:y=b-a;break; }
C) switch a
{case c1 :y=a-b;break;
case c2: x=a*d; break;
default:x=a+b;
}
D) switch(a-b)
{default:y=a*b;break;
case 3:case 4:x=a+b;break;
case 10:case 11:y=a-b;break;
}
29.有如下程序
main( )
{int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf(“a=%d,b=%d\n”,a,b); }
該程序的輸出結(jié)果是( A )。
A) a=2,b=1
B) a=1,b=1
C) a=1,b=0
D) a=2,b=2
30.當(dāng)輸入 19、2、21 時,以下程序的輸出結(jié)果是( A)。
main( )
{int a,b,c,max;
printf(“please input three numbers a,b,c:\n”);
scanf(“%d,%d,%d”,&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf(“max is:%d\n”,max); }
A) max is:21 B) max is:19 C) max is:42 D) max is:40
31.若輸入 B,以下程序的輸出結(jié)果是(C)。
main( )
{char grade;
scanf(“%c”,&grade);
switch(grade)
{
case‘A’:printf(“>=85.”);
case‘B’:
case‘C’:printf(“>=60.”);
case‘D’:printf(“<60.”);
default: printf(“error.”);
}}
A) >=85.
B) >=60.
C) >=60.<60.error.
D) error.
32.當(dāng)執(zhí)行以下語句后的輸出結(jié)果是(D)。
int x=3, y=0;
printf(“%d,%d”, -1>x> -10&&1<x
A) 0 3
B) 3 0
C) 3 3
D) 1 1
33.執(zhí)行 x=5>1+2&&2||2*4<4-!0 后,x 的值為( C)。
A) -1
B) 0
C) 1
D) 5
34.以下程序的輸出結(jié)果為( C)。
main( )
{int a,b,c,x,y,z;
a=10;b=2;
c=!(a%b);
x=!(a/b);
y=(a=0);
z=(a=0);
printf(“c=%d, x=%d, y=%d, z=%d\n”, c, x, y, z);
}
A) c=0,x=1,y=1,z=0
B) c=5,x=0,y=1,z=0
C) c=1,x=0,y=0,z=1
D) c=10,x=2,y=0,z=1
35.下列運(yùn)算符中,不屬于關(guān)系運(yùn)算符的是( D)。
A) <
B) >=
C) ==
D) !
36.以下程序的輸出結(jié)果是( B )。
main( )
{int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d, %d\n”, a, b);
}
A) 6,1
B) 2,1
C) 6,0
D) 2,0
37.設(shè) ch 是 char 型變量,其值為 A,且有下面的表達(dá)式:
ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch
上面表達(dá)式的值是( B)。
A) A
B) a
C) Z
D) z
38.若 k 是 int 型變量,且有下面的程序片段:
k= -3;
if(k<=0) printf(“####”)
else printf(“&&&&”)
上面程序片段的輸出結(jié)果是( D )。
A) #### B) &&&&
C) ####&&&& D) 有語法錯誤,無輸出結(jié)果
39.請讀程序:
main()
{
float x, y;
scanf(“%f”, &x);
if(x<0.0) y=0.0;
else if((x<5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else if(x<10.0) y=1.0/x;
else y=10.0;
printf(“%f\n”,y);
}
若運(yùn)行時從鍵盤上輸入 2.0(表示回車),則上面程序的輸出結(jié)果是(C )。
A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000
40.請讀程序:
main()
{ int x=1, y=0, a=0, b=0;
switch(x)
{
case 1:
switch(y)
{case 0:a++;break;
case 1:b++;break;
}
case 2:
a++; b++; break;
}
printf(“a=%d, b=%d\n”, a, b);
}
上面程序的輸出結(jié)果是( A)。
A) a=2,b=1
B) a=1,b=1
C) a=1,b=0 D) a=2,b=2
41.為表示關(guān)系 x≥y≥z,應(yīng)使用 C 語言表達(dá)式( A)。
A) (x>=y)&&(y>=z)
B) (x>=y)AND(y>=z)
C) (x>=y>=z)
D) (x>=y)||(y>=z)
42.若要求在 if 后一對圓括號中表示 a 不等于 0 的關(guān)系,則能正確表示這一關(guān)系的表達(dá)式為( D)。
A) a<>0
B) !a
C) a=0
D) a
43.兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入 6 和 4,則輸出結(jié)果是( A )。
main()
{
int x;
scanf(“%d”, &x);
if(x++>5) printf(“%d”, x);
else printf(“%d\n”, x--);
}
A) 7 和 5
B) 6 和 3
C) 7 和 4
D) 6 和 4
44.以下程序的輸出結(jié)果是( D)。
main()
{
int a= -1, b=4, k;
k=(++a<0)&&!(b--<=0);
printf(“%d%d%d\n”, k, a, b);
}
A) 104
B) 103
C) 003
D) 004
45.設(shè) a 為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系 10<a<15的C語言表達(dá)式是(A)。
A) 10<a<15
B) a==11||a==12||a==13||a==14
C) a>10&&a<15
D) !(a
46.假定所有變量均已正確說明,下列程序段運(yùn)行后 x 的值是( B)。
a=b=c=0;x=35;
if(!a) x--;
else if(b) ; if(c) x=3;
else x=4;
A) 34
B) 4
C) 35
D) 3
47.設(shè) a=1, b=2, c=3, d=4,則表達(dá)式 a
A) 4
B) 3
C) 2
D) 1
48.當(dāng) a=1, b=3, c=5, d=4 時,執(zhí)行下面一段程序后,x 的值為( B)。
if(a<b)
if(c<b) x=1
else
if(a<c)
if(b<d) x=2
else x=3;
else x=6;
else x=7;
A) 1
B) 2
C) 3
D) 6
49.在執(zhí)行以下程序時,為了使輸出結(jié)果為 t=4,則給 a 和 b 輸入的值應(yīng)滿足的條件是( C)。
main()
{
int s, t, a, b;
scanf(“%d, %d”, &a, &b);
s=1;t=1;
if(a>0) s=s+1;
if(a>b) t=s+t;
else if(a==b) t=5;
else t=2*s;
printf(“t=%d\n”, t);
}
A) a>b
B) a<b<0
C) 0<a<b
D) 0>a>b
50.設(shè) int x=1, y=1;表達(dá)式(!x||y--)的值是( B)。
A) 0
B) 1
C) 2
D) -1
51.若變量 a、i 已正確定義,且 i 已正確賦值,合法的語句是( B )。
A) a==1 B) ++i;
C) a=a++=5;
D) a=int(i);
52.以下程序的輸出結(jié)果為( C )。
main()
{
int a=2, b=-1, c=2;
if(a<b)
if(b<0) c=0;
else c++;
printf(“%d\n”,c);
}
A) 0
B) 1
C) 2
D) 3
二、填空題
1.若從鍵盤輸入 58,則以下程序輸出的結(jié)果是585858。
main()
{ int a;
scanf(“%d”,&a);
if(a>50) printf(“%d”,a);
if(a>40) printf(“%d”,a);
if(a>30) printf(“%d”,a);
}
2.下面程序的運(yùn)行結(jié)果是-1。
main()
{
int a=2, b=3, c;
c=a;
if(a>b)
c=1;
else if(a==b) c=0;
else c=-1;
printf(“%d\n”,c);
}
3.以下程序?qū)崿F(xiàn):輸入三個整數(shù),按從大到小的順序進(jìn)行輸出。請?zhí)羁铡?/p>
main()
{
int x, y, z, c;
scanf(“%d %d %d”, &x, &y, &z);
if( y>x ){ c=x; x=y; y=c;}
if( z>x ){ c=x; x=z; z=c;}
if( z>y ){ c=y; y=z; z=c;}
printf(“ %d %d %d”, x, y, z);
}
4.如果運(yùn)行時輸入字符 Q,則下面程序的運(yùn)行結(jié)果是 Q。
main()
{
char ch;
scanf(“%c”, &ch);
ch=(ch>=‘A’&& ch<=‘Z’)? (ch+32):ch;
ch=(ch>=‘a(chǎn)’&& ch<=‘z’)? (ch-32):ch;
printf(“%c”, ch);
}
5.若 x 為 int 類型,請以最簡單的形式寫出與邏輯表達(dá)式!x 等價的 C 語言關(guān)系表達(dá)式x==0。
6.表示“整數(shù) x 的絕對值大于 5”時值為“真”的 C 語言表達(dá)式是 x>5||x<-5。
7.下列程序段的輸出結(jié)果是 passwarn。
int n='c';
switch(n++)
{ default: printf("error");break;
case 'a':case 'A':case 'b':case 'B':printf("good");break;
case 'c':case 'C':printf("pass");
case 'd':case 'D':printf("warn");
}
8.以下程序?qū)蓚€數(shù)從小到大輸出。
main()
{
float a, b, t;
scanf( "%f %f", &a, &b);
if(a>b)
{ t=a;
a=b;
b=t;
}
printf(“%5.2f, %5.2f\n”, a, b);
}
9.若輸入 8642,以下程序的輸出結(jié)果為 place=4,每位數(shù)字為:8,6,4,2。
main()
{
long int num;
int gw, sw, bw, qw, ww, place;
printf(“請輸入一個 0~99999 之間的整數(shù):”);
scanf(“%ld”, &num);
if(num>9999) place=5;
else if(num>999) place=4;
else if(num>99) place=3;
else if(num>9) place=2;
else place=1;
printf(“place=%d,”, place);
printf(“每位數(shù)字為: ”);
ww=num/10000;
qw=(num-ww*10000)/1000;
bw=(num-ww*10000-qw*1000)/100;
sw=(num-ww*10000-qw*1000-bw*100)/10;
gw=num-ww*10000-qw*1000-bw*100-sw*10;
switch(place)
{case 5: printf(“%d, %d, %d, %d, %d”, ww, qw, bw, sw, gw); break;
case 4: printf(“%d, %d, %d, %d”, qw, bw, sw, gw); break;
case 3: printf(“%d, %d, %d”, bw, sw, gw); break;
case 2: printf(“%d, %d”, sw, gw); break;
case 1: printf(“%d”, gw); break;
} }
10.若輸入1988,程序運(yùn)行的結(jié)果為1988 年是閏年;若輸入1989,則結(jié)果為1989 年不是閏年。
main()
{int year, leap;
scanf(“%d”, &year);
if(year%4) leap=0;
else if(year%100) leap=1;
else if(year%400) leap=0;
else leap=1;
if(leap) printf(“%d 年是閏年。\n”, year);
else printf(“%d 年不是閏年。\n”, year);
}
11.用以下程序把大寫字母 A~Z 轉(zhuǎn)換成對應(yīng)的小寫字母 a ~ z,其他字符不轉(zhuǎn)換。
main()
{char ch;
scanf ( "%c",&ch);
ch=( ch>='A'&&ch<='Z')?ch+32:ch;
printf(“char=%c\n”,ch);
}
12.條件“20<x<30 或x<-100"的C語言表達(dá)式是x>20&&x<30||x<=-100。
13.若已知 a=10, b=20, 則表達(dá)式!a<b 的值為1。
14 . 若 已 定 義 int a=25, b=14, c=19; 以 下 三 目 運(yùn) 算 符 ( ?: ) 所 構(gòu) 成 的 語 句 的 執(zhí) 行 結(jié) 果是###a=26,b=13,c=19。
a++<=25&&b--<=2&&c++?printf(“***a=%d, b=%d, c=%d\n”, a, b, c): printf(“###a=%d, b=%d,
c=%d\n”, a, b, c);
15.以下兩條 if 語句可合并成一條 if 語句為
if(a>b){y=2;printf("****y=%d\n",y);}
else
{x=1;printf("####x=%d\n",x);} 。
if(a<=b) x=1;
else y=2;
if(a>b) printf(“**** y=%d\n”, y);
else printf(“#### x=%d\n”, x);
延伸閱讀
- 2022年湖北專升本電路模擬題(四)
- 2022年湖北專升本電路模擬題(三)
- 2022年湖北專升本電路模擬題(二)
- 2022年湖北專升本電路模擬題(一)
- 2022年湖北專升本高等數(shù)學(xué)模擬題(三)
- 2022年湖北專升本高等數(shù)學(xué)模擬題(二)
專升本微信公眾號
掃碼添加
專升本備考資料免費(fèi)領(lǐng)取
去領(lǐng)取