一、单项选择题
朱瑞峰近况(在每小题列出的四个备选项中只有一个是符合题目要求的。)
1.若有定义int a[4]={1,2,3,4};则a[a[0]+2 * a[2]-a[3]]等于
A.1 B.2 C.3 D.4
2.设有数组定义: char array [ ]="China"; 则数组 array所占的空间为
A.4个字节 B.5个字节 C.6个字节 D.7个字节
3.设有定义char a[]="xyz",b[]={'x','y','z'}; ,则语句cout<<sizeof(a)<<" "<<sizeof(b)<<endl;的输出结果为 A.3 3 B.3 4 C.4 3 D.4 4
4.设int b[ ][5]={1,2,3,4,5,6,7};,则元素b[1][2]的值是 A.0 B.2 C.6 D.7
5.数组定义为int a[2][3]={1,2,3,4,5,6},值为1的数组元素是
A.a[0][0] B.a[1][1] C.a[1][2] D.a[2][3]
6.C++中,若有说明:int a[3][4]; 则对a数组元素的正确引用是
A.a[2][4] B.a[1+1][0] C.a(2)(1) D.a[1,3]
7. 定义二维数组并初始化,正确的是
A.int a[ ][ ]={1,2,3,4,5,6}; B.int a[2][ ]={1,2,3,4,5,6};
C.int a[ ][3]={1,2,3,4,5,6}; D.int a[2,3]={1,2,3,4,5,6};
8.以下数组定义中,不正确的是
A.int a[2][3]; B.int b[ ][3]={0,1,2,3};
C.int c[100][100]={0}; D.int d[3][ ]={{1,2},{1,2,3},{1,2,3,4}};
9.设char x[][10]={"Windows","dos","unix"}; ,执行cout<<x[1][2];后输出的结果是
A.n B.i C.o D.s
10.以下叙述中错误的是
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.数组名代表的是数组所占存储区的首地址,其值不可改变
C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D.可以通过赋初值的方式确定数组元素的个数
11.设#pragma pack(1),则结构体类型变量占用内存的字节数是
A.各成员占用内存字节数之和 B.第一个成员占用的内存字节数
C.占用内存最大成员所需的字节数 D.最后一个成员占用的内存字节数
12.下面程序运行后,输出结果是
#include <iostream>
using namespace std;
int main()
{
int p[8]={1,2,3,4,5,6,7,8},i=0,j=0;
while(i++<7)
if(p[i]%2) j+=p[i];
cout<<j<<endl;
return 0;
}
A.15 B.16 C.20 D.36
13.下面程序运行后,输出结果是
#include <iostream>
using namespace std;
int main( )
{
int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
cout<<s<<endl;
return 0;
}
A.18 B.19 C.20 D.21
14.下面程序运行后,输出结果是
#include<iostream>
using namespace std;
int main( )
{ int a[3][3]={1,2,3,4,5,6,7,8,9},n,sum=0;
for(n=0;n<3;n++)
sum=sum+a[n][n];
cout<<sum<<endl;
return 0;
}
A.6 B.12 C.15 D.45
15.下面程序运行后,输出结果是
#include <iostream>
using namespace std;
struct abc
{ int a, b, c; };
int main()
{
struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0].a+s[1].b;
cout<<t<<endl;
return 0;
}
A.5 B.6 C.7 D.8
二、程序分析题
阅读下列程序,写出程序的运行结果。
1. #include <iostream>
using namespace std;
int main()
{ int a [6]={2,-3,4,-6,-8,10}, i;
for (i=0;i<6;i++)
{
if(a[i]<0) continue;
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
2. #include <iostream>
using namespace std;
int main( )
{
int y=53,i=0,j,a[8];
do
{
a[i++]=y%2;
彭斯
y=y/2;
} while(y!=0) ;
设备管理系统 for(j=i-1;j>=0;j--)
cout<<a[j];
cout<<endl;
return 0;
}
3. #include <iostream>
using namespace std;
int main( )
{
char ch[]={"12yue25ri"};
int i,s=0;
for(i=0;ch[i]>='0' && ch[i]<='9';i++)
s=10*s+ch[i]-'0';
cout<<s<<endl;
return 0;
}
4. #include <iostream>
using namespace std;
int main( )
{
int n=0;
char str[80]="Beijing-China 2008";
cout<<str<<endl;
while(str[n]!='\0')
str[n++]=str[n]>='a' && str[n]<='z' ? str[n]-'a'+'A':str[n];
cout<<str<<endl;
return 0;
}
5. #include <iostream>
using namespace std;
int main( )
{
int x[2][3]={5,4,6,7,8,9};
int m[2],i,j;
for (i=0;i<2;i++)
{
m[i]=x[i][0];
for(j=1;j<3;j++)
if(x[i][j]<m[i]) m[i]=x[i][j];
}
for (i=0;i<2;i++)
cout<<m[i]<<endl;
return 0;
}
6. #include <iostream>
using namespace std;
int main( )
{
int a[4][4]={1,2,4,7,2,3,5,8,4,5,6,9,7,8,9,10};
int i,j,found=0;
for(i=0;j<4;i++)
for(j=0;j<=i;j++)
if(a[i][j]!=a[j][i])
{found=1;break;}
if(found) cout<<"No!"<<endl;
else cout<<"Yes!"<<endl;
return 0;
}
7.#include <iostream>
春藕斋#include <iomanip>
using namespace std;
int main()
酷我音乐盒2008
{
int a[5][5]={0},i,j,k;
k=1;
for (i=0;i<5;i++)
for (j=i;j>=0;j--)
a[j][i-j]=k++;
for (i=0;i<5;i++)
{
for (j=0;j<5-i;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
return 0;
}
三、程序填充题
请将下列程序横线处缺少的部分补上,使其能正确运行。
1.输出数组int a[10]中的最大值及其下标。
#include<iostream.h>
int main()
{
int a[10],max,sub,n;
for(n=0;n<10;n++)
cin>>______________; // (1)
max=a[0];
sub=0;
for(n=1 ;n<10 ;n ++ )
{
if(a[n]>max)
{
max=______________; // (2)
sub= ______________; // (3)
}
明清小说研究
}
cout <<"max="<<max<<endl;
cout <<"sub="<<sub<<endl;
return 0;
}
2.用数组构造Fibnacci序列的前20个数。
#include <iostream>
using namespace std;
int main()
{
int i,fib[20];
fib[0]=1; fib[1]=1;
for (i=2;i<=19;i++)