1

发表于 2023-11-10  145 次阅读


一.单选题(共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)

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

mzqmountain.xyz 小萌新的小小博客~