一.单选题(共13题,46.0分)
1.设有定义语句如下:
int m=10;
const int n=10;
const double k=10;
则下列数组的定义中正确的是( )。
A、int a[m];
B、float b[n+5];
C、double c[k] ;
D、float d[ ] ;
我的答案:B得分: 3.0分
2下列存在语法错误的二维数组说明语句是( )。
A、int a[][3]={3,2,1,1,2,3} ;
B、int b[][3]={{3,2,1},{1,2,3}};
C、int c[2][3]={1};
D、int d[2][]={{3,2,l},{1,2,3}};
我的答案:D得分: 3.0分
3下列不存在语法错误的字符数组说明语句是( )。
A、char sl[ ]={"a","b","c"};
B、char s2[ ]={'a',98};
C、char s3[3]=”C++”;
D、char s4[3]={"C++"};
我的答案:B得分: 3.0分
4设有说明语句如下:
double a[]={1,3,5,7,9};
则下列表达式的值不为1的是( )。
A、*a
B、&a[3]-&a[2]
C、a[0]
D、*(&a)
我的答案:D得分: 3.0分
5设有说明语句如下:
char s1[20]=“C\0C++”, s2[20]=“C”,s3[20]=“C++”;
则下列表达式的值为0的是( )。
A、strlen(s1)
B、strlen(s1)==strlen(s2)
C、strcmp(s1,s2)
D、strcmp(s2,s3)
我的答案:C得分: 3.0分
6设有程序段如下:
char s1[50]=“student”,s2[50]=“teacher”;
strcat(s1,strcpy(s2,s1));
则字符数组s1中的内容是( )。
A、teacherstudent
B、studentstudent
C、studentteacher
D、teacherteacher
我的答案:B得分: 3.0分
7设有程序段如下:
char a[20];
a={"Programming"}; // ①
char b[20];
b[20]="Programming"; // ②
char *c;
c={"Programming"}; // ③
char *d="Programming"; // ④
则标注编号的行中没有语法错误的是( )。
A、①和②
B、①和③
C、②和④
D、③和④
我的答案:C得分: 0.0分
8下列数组和指针的操作中正确的是( )。
A、int a[5],*pa=a;
B、int b[5],*pb;*pb=b;
C、double c[5] ,*pc=*c;
D、char d[5] ,*pd=&d;
我的答案:A得分: 3.0分
9设有下列说明语句:
int b[10],*p=b;
则下列表达式的值不相等的一组是( )。
A、*p与b
B、*p与b[0]
C、p与b
D、p与&b[0]
我的答案:A得分: 3.0分
10设有下列说明语句:
int a[]={1,2,3,4,5},*pa=a;
char s[]={“1,2,3,4,5”},*ps=s;
则下列能输出数组所有元素的语句是( )。
A、cout<<pa;
B、cout<<ps;
C、cout<<*pa;
D、cout<<*ps;
我的答案:B得分: 3.0分
11运行下列程序的输出结果为( )。
#include
using namespace std;
int main(void)
{
int a[10]={1,9,-5,6,-3,0,2,4,-8,7},i,s=0;
for(i=0;i<10;i++){
if(a[i]<0)continue;
if(a[i]==0)break;
s+=a[i];
}
cout<<s<<endl;
system("pause");
return 0;
}
A、10
B、13
C、16
D、29
我的答案:C得分: 6.0分
12运行下列程序时输出的第1行是( )。
#include
using namespace std;
int main(void)
{
double b[3][3]={1,2,3,4,5,6,7,8,9};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++)
cout<<b[j][i];
cout<<endl;
}
system("pause");
return 0;
}
A、1
B、123
C、147
D、321
我的答案:C得分: 5.0分
13运行下列程序的输出结果为( )。
#include
using namespace std;
int main(void)
{
char str[]="phython",*p=str;
cout<<*str<<p<<endl;
system("pause");
return 0;
}
A、phythonp
B、pphython
C、pp
D、phythonphython
我的答案:B得分: 5.0分
二.填空题(共7题,54.0分)
1下列程序将二维数组的各元素按其在内存中的存储顺序,从大到小排列后输出。在空格处填上适当的语句,使其能正确执行,并输出下列结果。
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
#include
using namespace std;
void f(________,int n)
{
for(int i=0;i<n;i++){
for(int j=0;j<5;j++)
cout<<p[i][j]<<'\t';
cout<<endl;
}
}
void fun(int p[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(________)
t=p[i],p[i]=p[j],p[j]=t;
}
int main(void)
{
int b[3][5]={13,4,2,11,6,12,1,8,7,15,3,14,9,10,5};
fun(________);
f(b,3);
return 0;
}
(9.0分)
我的答案:得分: 6.0分
第一空:
int (*p)[5]
第二空:
p[i]<p[j]
第三空:
(int *)b,15
2
下列找出一维数组中值最大的元素及其下标。最大元素可能不止一个,例如{3,5,2,7,6,1,7,4,7,5}中的最大元素为7,其下标分别为3、6、8。其中:
(1)函数int max(int *,int)返回数组元素的最大值。
(2)在主函数中,用测试数据初始化数组,并调用max 函数完成测试。
请完善程序。
[程序]
#include
using namespace std;
int max(________)
{
int m=p[0],i;
for(i=1;i<n;i++) if(p[i]>m)m=p[i];
return m;
}
int main()
{
int a[10]={3,5,2,7,6,1,7,4,7,5},m,i;
m=max(________);
cout<<"最大元素为 "<<m<<" ,其下标为:\n";
for(i=0;i<10;i++)
if(a[i]==m)cout<<i<<'\t';
cout<<'\n';
system(“pause”);
return 0;
}
(6.0分)
我的答案:得分: 6.0分
第一空:
int p[],int n
第二空:
a,10
3
下列程序求键盘输入的 n 个实数的方差。求方差的公式如下:
作业3-1.png,其中 作业3-2.png
程序的设计如下。
(1)函数void f(double p[],int n,double &ave),输入n个数保存到数组p 中,并其平均值,通过参数ave 将平均值带回主函数。
(2)在主函数中调用f 函数,并根据公式求出方差。
请完善程序。
[程序]
#include
using namespace std;
#define N 10
void f(double p[],int n,double &ave)
{
int i;
for(ave=0,i=0;i<n;i++){ cin>>p[i];
ave+=________;
}
ave/=n;
}
int main()
{
double x[N],a,d=0;
cout<<"请输入 "<<N<<" 个实数:\n";
f(x,N,a);
for(int i=0;i<N;i++)
d+=________;
d/=N;
cout<<"均方差为"<<d<<endl;
system(“pause”);
return 0;
}
(6.0分)
我的答案:得分: 6.0分
第一空:
p[i]
第二空:
(x[i]-a)*(x[i]-a)
4
下列程序求二维数组各元素的和,程序设计如下。
(1)函数void print(float p[][5],int n);输出二维数组。
(2)函数void fun(float(*p)[5],int n,float *s);求二维数组各元素的和,并通过参数s 带回到主函数。
(3)在主函数中,用测试数据初始化二维数组,并调用print 函数将其输出,调用fun 函数得到各元素的和并输出。
请完善程序。
[程序]
#include
using namespace std;
void print(float p[][5],int n)
{
int i,j;
for(i=0;i<n;i++){
for(j=0;j<5;j++)
cout<<________<<'\t';
cout<<endl;
}
}
void fun(float(*p)[5],int n,float *s)
{
int i,j;
*s=________;
for(i=0;i<n;i++)
for(j=0;j<5;j++)
*s+=p[i][j];
}
int main()
{
float b[3][5]={{2.6,5,8,6.3,1},{4,12,9,4.5,9.6},{7.2,3.8,11,7.9,10}},sum;
cout<<"二维数组是:\n";
print(b,3);
fun(________);
cout<<"数组元素和为:"<<sum<<endl;
system(“pause”);
return 0;
}
(9.0分)
我的答案:得分: 9.0分
第一空:
p[i][j]
第二空:
0
第三空:
b,3,&sum
5
杨辉三角形是由正整数构成的一个矩阵,每行除最左侧与最右侧的元素为1 外,其他元素等于其左上方与正上方两个数之和,如下所示。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
下列程序生成并输出杨辉三角形,其设计如下所示。请完善程序。
(1)函数void create(int p[][N],int n),将杨辉三角的前n 行保存到下三角二维数组中。
(2)函数void print(int(*p)[N],int n),输出杨辉三角形。
(3)在主函数中调用上述函数,得到一个N 阶的杨辉三角形。
[程序]
#include
using namespace std;
const int N=20;
void create(int p[][N],int n)
{
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++)
if(________)p[i][j]=1;
else p[i][j]=p[i-1][j-1]+p[i-1][j];
}
void print(________)
{
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++)
cout<<p[i][j]<<'\t';
cout<<endl; } } int main() { int y[N][N],n; cin>>n;
create(________);
print(y,n);
system(“pause”);
return 0;
}
(9.0分)
我的答案:得分: 9.0分
第一空:
j==0||j==i
第二空:
int (*p) [N],int n
第三空:
y,n
6
下列程序不使用库函数实现字符串的复制。其设计如下所示,请完善程序。
(1)函数char* copy(char*s1,char*s2),将指针s2所指向的字符数组或字符串赋值给s1所指向的字符数组,并返回复制后的字符数组。
(2)在主函数中输入两个字符串,测试copy 函数。
[程序]
#include
using namespace std;
char*copy(char* s1,char* s2)
{
char*s=s1;
while(*s1++=*s2++);
return ________;
}
int main()
{
char str1[100],str2[100];
cout<<"请输入第一个字符串:\n";
cin.getline(str1,100);
cout<<"请输入第二个字符串:\n";
cin.getline(str2,100);
cout<<"复制后的字符串是:\n";
cout<<________<<endl;
system(“pause”);
return 0;
}
(6.0分)
我的答案:得分: 3.0分
第一空:
s1
第二空:
copy(str1,str2)
7
设英文单词是连在一起的英文字母,下列程序求键盘输入的一串字符中单词的个数。例如,“ I’m a boy. ”中有4个单词。程序设计如下所示,请完善程序。
(1)函数int f(char c),若字符c是英文字母返回1,否则返回0。
(2)函数int count(char*s),求字符串s 的单词个数并返回。
(3)在主函数中输入一个字符串,测试count 函数。
[程序]
#include
using namespace std;
int f(char c)
{
return ((c>='A'&&c<='Z') ________ (c>='a'&&c<='z'));
}
int count(char*s)
{
int words=0;
while(*s)
{
if(f(*s)&&!f(*(s+1)))words++;
________;
}
return words;
}
int main()
{
char text[100];
cout<<"请输入一个字符串:\n";
________;
cout<<text<<" 中有 "<<count(text)<<" 个单词。\n";
system("pause");
return 0;
}
(9.0分)
我的答案:得分: 6.0分
第一空:
||
第二空:
s++
第三空:
cin.getline(text)
COMMENTS | NOTHING