②0<15è1或1<15è1
原因:
C++的逻辑判断结果为整型值
7.下列C++代码中,不能正确对字符串s1置值的代码是:
(A)char*s1=newchar[20];cin>>s1; (B)chars1=”name”; //s1是字符变量,不能赋给串值
(C)chars1[5]=”name”; (D)chars1[]={”name”};
8.一个具有6个整型指针元素的一维数组的正确定义是:
(A)int**p[6] (B)int(*p)[6]
(C)int*p[6] (D)*(*(p)[6])
试比较以下几种说明形式:
int*p; //p是指向整型变量的指针(p是关联类型为整型的指针)
int*pa[10]; //pa是数组,元素类型是整型指针
int(*pb)[10]; //pb是指针,指向(关联类型)长度为10的整型数组
int*f(); //f是返回整型指针的函数名
int(*f)(); //f是指针,指向(关联类型)是返回整型值的无参函数
例:
有声明
int(*f)(intint); intmax(int,int); intmin(int,int);
则:
f=max; f(a,b); //等价于(*f)(a,b); max(a,b);
f=min; f(a,b); //等价于(*f)(a,b); min(a,b);
9.执行语句x=1;while(x++<7)cout<<’*’;后输出结果是:
(A)** (B)**** (C)****** (D)*******
(x++<7) ①x<7 ②x=x+1
10.若用一维数组名作为调用函数时的实参,则传递给形参的是:
(A)数组首元素的地址 (B)数组首元素的值
(C)数组元素的个数 (D)数组中全部元素的值
11.运算符优先级从高到低顺序的正确排列是( )。
(A)*=、&&、>、% (B)*=、%、&&、>
(C)%、>、&&、*= (D)&&、%、>、*=
12.可以正确表示a、b之中只有一个大于k的表达式是( )。
(A)a>b>k (B)ak (C)a>k||b>k (D)a>k!
=b>k
13.已知inti=0,x=0;下面while语句执行时循环次数为( )。
while(x||i){x++;i++;}
(A)3 (B)2 (C)1 (D)0
14.执行语句x=1;while(++x<7)cout<<’*’;后输出结果是:
( )
(A)***** (B)****** (C)******* (D)********
15.有函数原型voidf(int*);下面选项中,正确的调用是( )。
(A)char*s="ABCD";f(s); (B)inta=15; f(a);
(C)intm=100; f(&m); (D)doublepi=3.14;f(pi);
16.以下正确的函数原型是:
( )
(A)voidfun(int,int=0); (B)floatfun(x,y);
(C)voidfun(*,&); (D)intfun(int=0,int);
17.设有变量定义inta[]={2,3,5,9,11,13},*pa=a,w;执行语句w=++(*pa++);后,变量w和*pa的值是:
(A)3和3 (B)4和3 (C)3和4 (D)4和4
18.下面的变量定义中,不正确的是:
(A)char*p=”string”; (B)inta[]={‘A’,’B’,’C’};
(C)int&q=b;intb; (D)doublea;double*r=&a;
19.下述叙述正确的是( )。
(A)字符型变量不能赋予整数 (B)任意整数都能表示字符
(C)字符型变量可存放多个字符 (D)字符数据的值是整数值
20.设有变量定义inti,j;与表达式i==0&&j==0等价的表达式是:
( )
(A)i==j (B)i&&j (C)!
i&&!
j (D)i||j
21.执行C++程序时出现的“溢出”错误属于( )错误。
(A)编译 (B)连接 (C)运行 (D)逻辑
22.下列选项中,全部都是C++关键字的选项为( )。
(A) while IF Static (B)break char go
(C) sizeof case extern (D)switch float integer
23.按C++标识符的语法规定,合法的标识符是( )。
(A)_abc (B)new (C) π (D)“age“
24.C++语句中,两个标识符之间( )不能作为C++的分隔符。
(A)数字 (B); (C):
(D)+
二.简答题(每小题3分,共18分)
1.设整型变量x为任何一个整数,表达式–2
2.调用函数时,希望从提供的实参变量中得到函数的结果,则对应的形参应该是?
3.设有变量定义char*s[]={“Beijing”,”Shanghai”,”Guangzhou”};执行语句cout<<*(s+1)+1;输出是?
4.设有变量定义inta[4][3],*p=a[2];表达式p+2指向的元素是?
5.将字符串str2拷贝到字符数组str1[]中,应调用函数?
6.设有函数调用语句Count(a,num,max,min,average);功能是由参数max,min,average返回整型数组a前num个元素中的最大值,最小值和平均值。
对应的函数原型是?
三.分析程序,写输出结果(每小题3分,共9分)
1.求>0的元素和;>0的元素个数。
#include
voidmain()
{inta[10]={2,4,0,-5,10,6,-8,9,6,7};
inti,s=0,count=0;
for(i=0;i<10;i++)
if(a[i]>0)s+=a[i],count++;
elsecontinue;
cout<<"s="<
}
2.测试静态变量和自动变量。
静态变量第一次自动初始化为0,再调用时不改变。
a
b
a+=3
a+b
①
0
2
3
5
②
3
2
6
8
③
6
2
9
11
④
9
2
12
14
#include
voidfun();
voidmain()
{inti;
for(i=1;i<5;i++) fun(); cout<}
voidfun()
{staticinta; intb=2;
cout<<(a+=3,a+b)<<'\t';
}
3.求最小公倍数
#include
intlcm(intm,intn)
{intr,a,b;
a=m;b=n;r=m;
do{ //辗转相除法,求最大公约数
m=n;n=r;r=m%n;
}while(r);
returna*b/n; //求最小公倍数
}
voidmain()
{cout<}
四.根据程序功能填空。
(每空2分,共10分)
1.本程序按以下公式计算e的值,精度为1e-6。
#include
voidmain()
{doublee,t,n;
e=0;
t=n=_____
(1)_____;
while(_____
(2)_____)
{e+=t;
_____(3)_____;
n=n+1.0;
}
cout<<"e="<}
2.本程序由主函数输入一字符串,调用函数,把该字符串中的数字0~9转换成小写字母a~j;所有小写字母转换成大写字符。
然后在主函数输出转换后的字符串。
#include
#include
_____(4)_____
voidmain()
{charstr1[20],str2[20];
cin>>str1;
change(str1,str2);
cout<}
voidchange(char*s1,char*s2)
{while(_____(5)_____)
{if(*s1>='0'&&*s1<='9')
*s2=*s1+'a'-'0'
else*s2=toupper(*s1);
s1++;s2++;
}
*s2='\0';
}
五.程序设计
1.编写函数输出以下形状的图形,其中构成图形的符号和输出的行数通过参数传送。
(6分)
参考答案
一.单项选择题(每小题2分共50分)
题号
1
2
3
4
5
6
7
8
9
10
答案
D
A
C
D
D
D
B
C
C
A
题号
11
12
13
14
15
16
17
18
19
20
答案
C
D
D
A
C
A
A
A
D
C
题号
21
22
23
24
答案
C
C
A
A
二.简答题(每小题3分,共18分)
1.设整型变量x为任何一个整数,表达式–2
1
2.调用函数时,希望从提供的实参变量中得到函数的结果,则对应的形参应该是?
指针或引用类型参数
注意使用方法:
函数定义 调用
voidfun1(intx1); inta1;fun1(a1); //传值参数
voidfun2(int*x2); inta2;fun2(&a2); //指针参数,传地址
voidfun3(int&x3); inta3;fun3(a3); //引用参数,传名
3.设有变量定义char*s[]={“Beijing”,”Shanghai”,”Guangzhou”};执行语句cout<<*(s+1)+1;输出是?
hanghai
s是字符指针数组
4.设有变量定义inta[4][3],*p=a[2];表达式p+2指向的元素是?
a[2][2]
5.将字符串str2拷贝到字符数组str1[]中,应调用函数?
strcpy(str1,str2)
6.设有函数调用语句Count(a,num,max,min,average);功能是由参数max,min,average返回整型数组a前num个元素中的最大值,最小值和平均值。
对应的函数原型是?
voidCount(int[],int,int&,int&,float&);
若调用语句为 Count(a,num,&max,&min,&average);
则函数原型为 voidCount(int[],int,int*,int*,float*);
三.分析程序,写输出结果(每小题3分,共9分)
1.求>0的元素和;>0的元素个数。
#include
voidmain()
{inta[10]={2,4,0,-5,10,6,-8,9,6,7};
inti,s=0,count=0;
for(i=0;i<10;i++)
if(a[i]>0)s+=a[i],count++;
elsecontinue;
cout<<"s="<
}
s=44 count=7
2.测试静态变量和自动变量。
静态变量第一次自动初始化为0,再调用时不改变。
#include
a
b
a+=3
a+b
①
0
2
3
5
②
3
2
6
8
③
6
2
9
11
④
9
2
12
14
voidfun();
voidmain()
{inti;
for(i=1;i<5;i++) fun(); cout<}
voidfun()
{staticinta; intb=2;
cout<<(a+=3,a+b)<<'\t';
} 5 8 11 14
3.求最小公倍数
#include
intlcm(intm,intn)
{intr,a,b;
a=m;b=n;r=m;
do{ //辗转相除法,求最大公约数
m=n;n=r;r=m%n;
}while(r);
returna*b/n; //求最小公倍数
}
voidmain()
{cout<}
21 12
四.根据程序功能填空。
(每空2分,共10分)
1.本程序按以下公式计算e的值,精度为1e-6。
#include
voidmain()
{doublee,t,n;
e=0;
t=n=_____
(1)_____; 1.0
while(_____
(2)_____) t>=1e-6
{e+=t;
_____(3)_____; t=t/n
n=n+1.0;
}
cout<<"e="<}
2.本程序由主函数输入一字符串,调用函数,把该字符串中的数字0~9转换成小写字母a~j;所有小写字母转换成大写字符。
然后在主函数输出转换后的字符串。
#include
#include
_____(4)_____ voidchange(char*,char*);
voidmain()
{charstr1[20],str2[20];
cin>>str1;
change(str1,str2);
cout<}
voidchange(char*s1,char*s2)
{while(_____(5)_____) *s1
{if(*s1>='0'&&*s1<='9')
*s2=*s1+'a'-'0'
else*s2=toupper(*s1);
s1++;s2++;
}
*s2='\0';
}
五.程序设计
1.编写函数输出以下形状的图形,其中构成图形的符号和输出的行数通过参数传送。
(6分)
答案:
#include
#include
voidprint_figure(introw,chartag) //行参数和符号参数
{inti;
cout< for(i=2;i cout< for(i=1;i<=2*row-1;i++)cout< cout<}
voidmain(){print_figure(5,'*');}
2.编写一个程序,实现如下功能:
(9分)
(1)输入k(<100)个整数到数组x[100]中;
(2)计算k个数的平均值及大于平均值的元素个数。
答案:
#include
voidmain()
{intx[100],k,i,n;
doublesum=0.0,ave;
cout<<"HowmanyData?
\n";
cin>>k;
for(i=0;i {cin>>x[i];sum+=x[i];}
ave=sum/k; //求平均值
n=0;
for(i=0;i if(x[i]>ave)n++;
cout<<"average="< cout<<"Thereare"<}
|