case3:
cout<<--a;
default:
cout<<”其他值”;
}
A.其他值B.5C.75其他值
4.以下程序段中循环体语句“k++”执行的次数为()。
C
for(k=0,m=4;m;m-=2)
for(n=1;n<4;n++)
k++;
A.16.12C
5.执行下面程序段后,变量k的值为()。
B
for(k=0,m=1;m<4;m++)
{
for(n=1;n<5;n++)
if(m*n%3==0)continue;
k++;
}
A.1.3C
6.下面叙述中正确的是()。
C
循环只能用于循环次数已经确定的情况
循环同do-while语句一样,先执行循环体再判断
C.不管哪种形式的循环语句,都可以从循环体内转到循环体外
循环体内不可以出现while语句
7.下面语句中不是死循环的是().A
A.inti=100;B.inti,sum(0);
while
(1)for(i=1;;i++)sum++;
{
i=i%100+1;
if(i==20)break;
}
C.intk=0;D.ints=3379
do{while(s++%2+3%2)s++
++k;
}while(k>=0);
8.若输入字符串“ABC”,下面程序段的输出为()。
C
charc;
while(cin>>c,c!
=’\n’)
cou<9.以下程序段的输出结果是()。
B
.457810C
二、阅读程序,写出程序运行结果。
(1)试说明下列语句组的功能:
while
(1)
{
cin>>m>>n;
if(m>0&&n>0)break;
}
功能:
输入两个正整数给m和n。
(2)若有变量定于“intcount=0,m=1;”,试写出下列语句组对应的输出结果。
do
{
if(m%5)continue;
count++;
while(++m<=100);
}
结果:
20
(3)#include””
voidmain()
{
intm,n(4),k;
longintt,s=0;
for(m=1;m<=n;m++)
{
for(t=1,k=1;k<=m;k++)
t*=m;
s+=t;
}
cout<<”s=”<
}
输出为:
s=288
(4)若输入:
“AB20dfz5”,则下列程序输出结果是什么
#include””
voidmain()
{
charc;
while(cin>>c,c!
=’.’)
{
if(c>=’a’&&c<’z’)
c+=1;
if(c==’z’)c=’a’;
cout<}
}
输出为:
AB20ega5
(5)#include””
#include””
voidmain()
{
inti,j;
for(i=4;i>=1;i--)
{
cout<for(j=1;j<=4-i;j++)
cout<<’*’<<’‘;
cout<}
}
输出:
*
**
***
三、程序填空题:
(1)下面的程序是检查输入的算术表达式中括号是否配对,并显示相应的结果。
本程序边输入,边统计,以输入‘’作为表达式输入结束,然后显示结果。
#include””
voidmain()
{
intcount(0);
charc;
cout<<”请输入表达式,以输入表示结束”<while(cin>>c,c!
=’’)
{
if(c==’(‘)
count++;
elseif()
count--;
}
if()
cout<<”左右括号配对”<elseif()
cout<<”左括号多于右括号”<else
cout<<”右括号多于左括号”<}
填空结果:
c==')'
count==0
count>0
count
(2)用辗转相减法求两个正整数m和n的最大公约数。
#include””
voidmain()
{
intm,n;;
while(m-n!
=0)
if(m>n);
else;
cout<<”gcd(m,n)=”<}
填空结果:
cin>>m>>n
m=m-n
n=n-m
(3)求100的阶乘的末尾包含多少个0程序通过找出1-100之间的所有整数中包含5这个因子的个数来求解。
如100=5*5*4含5的因子个数为2,在求阶乘过程中会在末尾产生2个0。
#include""
voidmain()
{
intm,n,k=0;
for(m=5;m<100;)
{;
while(n%5==0)
{
k++;
;
}
;
}
cout<<”100!
include”<}
填空结果:
n=m
n=n/5
m=m+5
四、编程题:
1.编一程序,实现下列分段函数的求值:
#include""
#include""
voidmain()
{floatx,y;
cout<<"inputx:
"<cin>>x;
if(x<5)
y=fabs(x);
elseif(x<20)
y=3*x*x-2*x+1;
else
y=x/5;
cout<<"x="<}
2.按工资的高低纳税,已知不同工资s的税率p如下:
s<1000p=0%
1000≤s<2000p=5%
2000≤s<3000p=8%
3000≤s<5000p=10%
5000≤sp=15%
编一程序,输入工资数,求纳税款和实得工资数。
#include""
voidmain()
{
floats,p,t,w;
cout<<"inputs:
"<cin>>s;
switch(int(s)/1000)
{case0:
p=0;break;
case1:
p=;break;
case2:
p=;break;
case3:
case4:
p=;break;
default:
p=;break;
}
t=s*p;
w=s-t;
cout<<"纳税款="<}
3.编一程序,求100~1000之间有多少个整数,其各个数位数字之和等于5
#include""
voidmain()
{intm,count=0;
for(m=100;m<1000;m++)
{if(m%10+m/10%10+m/100==5)
count++;
}
cout<<"count="<}
4.鸡兔共笼有30个头,90只脚,求鸡兔各有多少
#include""
voidmain()
{intm,n;
for(m=0;m<=30;m++)
for(n=0;n<=30;n++)
if(m*2+n*4==90&&m+n==30)
cout<<"鸡:
"<"<}
5.利用格里高利公式求
的近似值,公式为:
/4≈1-1/3+1/5-1/7+....,要求直到最后一项小于10-4为止。
#include""
voidmain()
{doublepi=;
intn,t=1;
for(n=1;(2*n+1)>1e-6;n++)
{t=(-1)*t;
pi=pi+t/*n+;
}
pi=4*pi;
cout<<"pi="<}
法二:
#include""
voidmain()
{floatpi=;
intn,t=-1;
for(n=1;n>1e-6;n=n+2)
{t=(-1)*t;
pi=pi+*t/n;
}
pi=4*pi;
cout<<"pi="<}
6.编一程序,求出方程x2+2x=y3(其中1≤x≤100,1≤y≤100)的所有整数解。
#include""
voidmain()
{intx,y;
for(x=1;x<=100;x++)
for(y=1;y<=100;y++)
if(x*x+2*x==y*y*y)
cout<<"x="<}
7.输入一个英文句子(以句号结束),要求将句中单词分行打印,试编写符合上述要求的程序。
#include""
#include""
voidmain()
{charch;
while((ch=getchar())!
='.')
if(ch=='')
cout<else
cout<}
8.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,求1000以内满足该条件的数。
#include""
#include""
voidmain()
{intm,k1,k2;
for(m=0;m<=1000;m++)
{k1=sqrt(m+100);
k2=sqrt(m+100+168);
if(k1*k1==m+100&&k2*k2==m+100+168)
cout<}
}
9.用二分法求x9-4x5-5x3-270000=0在(0,10)之间的根,要求精度达到
二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,
依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。
#include""
#include""
voidmain()
{floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;
do{x=(x1+x2)/2;
y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;
y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;
if(y1*y>0)
x1=x;
else
x2=x;
}while(fabs(x2-x1)>eps);
cout<}
第四章
一、选择题
1.下列数组定义语句中,正确的是()。
C
a[3,4];n=3,m=4,inta[n][m];
a[3][4];a(3)(4);
2.以下不能对二维数组a初始化的语句是()。
A
A.inta[2][]={{1},{2}};a[2][3]={1,2,3,4,5,6};
C.inta[2][3]={1};a[2][3]={{1},{2}};
3.要使字符数组str中存放串”Lucky”并能正确处理,下列正确的定义语句是()。
C
str[]={‘L’,’u’,’c’,’k’,’y’};B.charstr[5]={‘L’,’u’,’c’,’k’,’y’};
C.charstr[]=”Lucky”;D.charstr[5]=”Lucky”;
4.已知有语句“inta[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}},*p=&a[0][0];”,则表达式(*p+2)+*(p+2)的值应为()。
D
B.5C.6
5.已知有语句“inta[5]={1,3,5,7,9},*p=&a[3];”,则表达式p[-1]的值为()。
C
A.表达形式不合法B.值不确定
6.要比较两个字符数组a、b中字符串是否相等,下面正确的是()。
B
==b(a,b)==0C.strcpy(a,b)D.strcmp(a,b)=0
7.下面正确的描述是( )。
A
函数可以输入包括空格的字符串
可以输入包含空格的字符串
C.使用gets函数不需要声明头文件:
#include“”
D.使用gets函数必须需要声明头文件:
#include“”
8.已知如下变量的定义“chars[10],*p;”下列正确的语句是()。
B
=”asdfghj”;=”asdfgh”;<
二、读程序,写结果。
1.#include””
voidmain()
{
chars[]=””,*p;
inti;
for(p=s+5;*p!
=’\0’;p++)cout<<*p;
p=s+4;i=0;
while(i++<5)cout<
}
结果是:
2.若分别输入4和8,则以下程序的输出结果各是什么
#include””
voidma