C/C++測(cè)試題
循環(huán)控制結(jié)構(gòu)
一、選擇題
1、若給定條件表達(dá)式(M)?(a++):(a--),則其中表達(dá)式M( C )。
(A)和(M==0)等價(jià) (B)和(M==1)等價(jià)
(C)和(M!=0)等價(jià) (D)和(M!=1)等價(jià)
2、在C/C+語(yǔ)言中,結(jié)束while語(yǔ)句循環(huán)的條件為( A )。
(A)0 (B)1 (C) true (D)非0
在C/C++語(yǔ)言中,結(jié)束do-while語(yǔ)句循環(huán)的條件為( A )。
(A)0 (B)1 (C) true (D)非0
3、若k為整型,以下while循環(huán)體中的語(yǔ)句執(zhí)行( B )。
k=2;
while(k=0)
{
printf("%d",k);
k--;printf("\n");
}
(A)無(wú)限次 (B)0次 (C)1次 (D)2次
4、以下語(yǔ)句段中,不是無(wú)限循環(huán)的程序段是( D )。C
(A) i=100; (B)for(;;);
while (1)
{
i=i%100;i++;
if(i>100)break;
}
(C) k=32764; (D) s=32764;
do{ while((s++%2)||(s%2))s++;
k++;k++;
} while(k>0);
5、C語(yǔ)言中用于結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)是( A )。
(A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu) (B) if,switch,break
(C) for,while,do-while (D) if,for,continue
6、對(duì)于下面的程序段
int t=0;
while (t=l)
{...}
以下敘述正確的是( B )。
(A)循環(huán)控制表達(dá)式的值為0 (B)循環(huán)控制表達(dá)式的值為1
(C)循環(huán)控制表達(dá)式不合法 (D)以上說(shuō)法都不對(duì)
7、在下列選項(xiàng)中,會(huì)構(gòu)成死循環(huán)的是( B )。
(A) int i=100; (B)for(;;); (C) int k=10000; (D) int s=36;
while(1) do {k++;}while(k>10000); while(s)--s;
{
i=i%100+1;
if(i==100)break;
}
8、在下面給出的4個(gè)語(yǔ)句段中,能夠正確表示以下的函數(shù)關(guān)系的是( A )。
-1 (x<0)
y= 0 (x=0)
1 (x>0)
(A)if(x!=0) (B)y=0; (C)if(x<0)y=-l; (D)y=-1;
if(x>0)y=l; if(x>=0) if(x!=0)y=1; if(x!=0)
else y=-l; if(x)y=l; else y=0; if(x>0) y=l;
else y=0; else y=-l; else y=0;
二、讀程序分析程序的運(yùn)行結(jié)果
9、設(shè)int a=5, b=6, 表達(dá)式(++a==b--)?++a:--b的值是 7 。
10、以下程序的輸出為( B )。
#include<stdio.h>
void 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
11、以下程序的輸出為( B )。
#include <stdio.h>
void main( )
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0:a++;break;
case 1:b++;break;
} //后面沒(méi)有break,所以繼續(xù)執(zhí)行case 2
case 2:
a++;b++;break;
case 3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
(A)a=l,b=0 (B)a=2,b=1 (c)a=1,b=l (D)a=2,b=2
12、以下程序的輸出為( B )
#include <iostream.h>
void main( )
{
int i,j,k=0,m=0;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
k++;
k-=j; // 外部循環(huán)語(yǔ)句,j=3
}
m=i+j; //i=2,j=3
cout<<"k="<<k<<"m="<<m;
}
(A)k=0,m=3 (B)k=0,m=5 (C)k=l,m=3 (D)k_l,m=:5
13、以下程序的輸出結(jié)果為( B )。
#include<stdio.h>
void main( )
{
int k=0;char c='A';
do{
switch(c++)
{
case 'A':k++;break;
case 'B':k--;
case 'C':k+=2;break;
case'D':k=k%2;continue;
case 'E':k=k*10;break;
default:k=k/3;
}
k++;
}while(c<'G');
printf("k=%d\n",k);
}
(A)k=3 (B)k=4 (C)k=2 (D)k=0
14、以下程序的輸出結(jié)果為( C )。
#include <stdio.h>
void main( )
{
int i=0,j=0,a=6;
if((++i>0)||(++j>0))a++;
printf(“i=%d,j=%d,a=%d\n”,i,j,a);
}
(A)i=0,j=0,a=6 (B)i=l;j=1;a=7 (C)i=1,j=0,a=7 (D)i=0;j=1,a=7
15、以下程序的輸出結(jié)果為( A )。
void main( )
{
int x=1,a=0,b=0;
switch(x)
{
case 0:b++;
case 1:a++;
case 2:a++;b++;
}
cout<<"a="<<a<<"b="<<b;
}
(A)a=2,b=1 (B)a=l,b=1 (C)a=1,b=0 (D)a=2,b=2
16、以下程序的輸出結(jié)果為( C )。
void main( )
{
int i=1,j=1,k=2;
if((j++||k++)&&i++)
cout<<i<<","<<j<<","<<k;
}
(A)1,l,2 (B)2,2,1 (C)2,2,2 (D)2,2,3
三、讀程序回答問(wèn)題
17、下面程序的輸出是 -1 。
void main( )
{
int x=2;
while(x--);
printf("%d\n",x);
}
18、下列程序運(yùn)行后的輸出結(jié)果是 33 。
#include "stdio.h"
void main( )
{
int i,j,p,s;
s=0;
for(i=1;i<=4;i++)
{
p=1;
for(j=1;j<=i;j++)
p=p*j;
s=s+p;
}
printf("s=%d\n",s);
}
19、下列程序的運(yùn)行結(jié)果是 4 。
#include "stdio.h"
void main()
{
int s=0,k;
for(k=7;k>=4;k--)
{
switch(k)
{
case 1:case 4:case 7:
s++;
break;
case 2:case 3:case 6:
break;
case 0:case 5:
s+=2;
break;
}
}
printf("s=%d",s);
}
20、下面程序的運(yùn)行結(jié)果是__8__。
#include "stdio.h"
void main()
{
int i=1,s=3;
do{
s+=i;
i++;
if(s%7==0)continue;
else ++i;
}while(s<15);
printf("i=%d\n",i);
}
四、程序填空
21、下面程序的功能是:從鍵盤(pán)上輸入若干個(gè)學(xué)生的成績(jī),統(tǒng)計(jì)并輸出最高成績(jī)和最低成績(jī),當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束輸入。請(qǐng)?jiān)诔绦虻目瞻滋幪羁铡?/span>
#include <stdio.h>
void 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 ("\namax=%f\namin=%f\n",amax,amin);
}
22、下面程序用0~9之間不同的3個(gè)數(shù)構(gòu)成一個(gè)3位數(shù),統(tǒng)計(jì)出共有多少種方法。請(qǐng)
填空。
#include "stdio.h"
void main()
{
int i,j,k,count=0;
for(i=1;i<=9;i++)
{ for(j=0;j<=9;j++)
{if( j==i )continue;
else
for(k=0;k<=9;k++)
if( k!=i && k!=j)count++;
}
}
printf("count %d",count);
}
23、本程序統(tǒng)計(jì)輸入字符串中的行數(shù)、字?jǐn)?shù)和字符數(shù)。字不包括空格、制表及換行符的字符序列,輸入‘#’時(shí)結(jié)束統(tǒng)計(jì)。nc,nl,nw分別為字符、行、字計(jì)數(shù)器。請(qǐng)?zhí)羁铡?/span>
#include "stdio.h"
void main()
{
int c,nc,nl,nw;
nc=nl=nw=0;
printf("Please Input String:");
while((c=getchar())!='#')
{
++nc;
if(c==' '||c=='\n'||c=='\t')
nw=nc-1 ;
if(c=='\n')
++nl ;
}
printf("nc=%d\tnl=%d\tnw=%d\n",nc,nl,nw);
}
五、編寫(xiě)程序
24、輸入年份year和月month,求該月有多少天。判斷是否為閏年,可用如下C/C++語(yǔ)言 表達(dá)式:year%4==0&&year%100!=0||year%400==0。若表達(dá)式成立(即表達(dá)式值為1),則 year為閏年;否則,表達(dá)式不成立(即值為0),year為平年。
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int year,month,k;
cout<<"輸入年份和月份:";
cin>>year>>month;
//判斷是否為閏年
if(year%4==0&&year%100!=0||year%400==0)
k=1;
else
k=0;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:cout<<"該月有31天";break;
case 4:
case 6:
case 9:
case 11:cout<< "該月有30天";break;
case 2:
{
if(k==1)
cout<< "該月有29天";
else
cout<< "該月有28天";
}break;
default:cout<<"error\n";
}
system("PAUSE");
return EXIT_SUCCESS;
}
25、編寫(xiě)一個(gè)簡(jiǎn)單計(jì)算器程序,輸入格式為:datal op data2。其中datal和data2是參 加運(yùn)算的兩個(gè)數(shù),op為運(yùn)算符,其取值只能是+、-、*、/。
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
double data1,data2;
char op;
cout<<"輸入數(shù)據(jù)和運(yùn)算符:";
cin>>data1>>op>>data2;
switch(op)
{
case '+':cout<<data1+data2<<'\n';break;
case '-':cout<<data1-data2<<'\n';break;
case '*':cout<<data1*data2<<'\n';break;
case '/':cout<<data1/data2<<'\n';break;
default:"error\n";
}
system("PAUSE");
return EXIT_SUCCESS;
}
26、求解愛(ài)因斯坦數(shù)學(xué)題。有一條長(zhǎng)階梯,若每步跨2階,則最后剩1階,若每步跨3階,則最后剩2階,若每步跨5階,則最后剩4階,若每步跨6階則最后剩5階,若每步跨7階,最后正好一階不剩。請(qǐng)問(wèn),這條階梯共有多少階?
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int i=7; //i為所設(shè)的階梯數(shù)
while(!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)))
i++;
cout<<i<<'\n';
system("PAUSE");
return EXIT_SUCCESS;
}
posted on 2011-05-31 22:02
DoubleW 閱讀(2151)
評(píng)論(0) 編輯 收藏 引用