
数组c++_习题答案解析.docx
4页数组c++_习题答案解析 习题 4 一、单项选择题 1. 若有说明int a[3][4];则a数组元素的非法引用是【】 A. a[0][2*1] B. a[1][3] C. a[4-2][0] D. a[0][4] 【答案】D 【解析】数组下标从0开始,a[0][4]的列下标越界 2. 在C++语言中,引用数组元素时,其数组下标的数据类型允许是【】 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 【答案】C 3. 以下不正确的定义语句是【】 A. double x[5]={2.0,4.0,6.0,8.0,10.0}; B. int y[5]={0,1,3,5,7,9}; C. char c1[]={′1′,′2′,′3′,′4′,′5′}; D. char c2[]={′\x10′,′\xa′,′\x8′}; 【答案】B 【解析】初始值的个数大于数组的大小,系统会出现编译错误 4. 对以下说明语句的正确理解是【】 int a[10]={6,7,8,9,10}; A. 将5个初值依次赋给a[1]至a[5] B. 将5个初值依次赋给a[0]至a[4] C. 将5个初值依次赋给a[6]至a[10] D. 因为数组长度与初值的个数不相同,所以此语句不正确 【答案】B 5. 若有说明:int a[ ][4]={0,0};则下面不正确的叙述是【】 A. 数组a的每个元素都可得到初值0 B. 二维数组a的第一维大小为1 C. 当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小 D. 只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值 【答案】D 【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,本题中,有2个初值说明是1行4列,所以第一维为1。
元素a[0][0]和a[0][1]赋初值为0 ,其余元素初值系统默认为0 6. 以下能对二维数组c进行正确的初始化的语句是【】 A. int c[3][]={{3},{3},{4}}; B. int c[][3]={{3},{3},{4}}; C. int c[3][2]={{3},{3},{4},{5}}; D. int c[][3]={{3},{},{3}}; 【答案】B 【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以A答案错误C 答案中初始值行数多于数组大小中的行大小,也是错误的另外初始化时,初值之间不能有空位置,故D错误 7. 以下不能对二维数组a进行正确初始化的语句是【】 A. int a[2][3]={0}; B. int a[][3]={{1,2},{0}}; C. int a[2][3]={{1,2},{3,4},{5,6}}; D. int a[][3]={1,2,3,4,5,6}; 【答案】C 8. 阅读下面程序,则程序段的功能是【】 #include using namespace std; int main() { int c[]={23,1,56,234,7,0,34},i,j,t; for(i=1;i=0 j--;} c[j+1]=t; } for(i=0;i using namespace std; int main() { int k, p,s[]={1, -9, 7, 2, -10, 3}; for(p =0, k =p; ps[k]) ________ cout using namespace std; int main() { char s[80]; int i,j; gets(s); for(i=j=0;s[i]!=′\0′;i++) if(s[i]!=′H′) {________} s[j]=′\0′; puts(s); return 0;} 【答案】s[j++] =s[i]; 【解析】此处相当于补充了2条语句,等价于s[j] =s[i]; j++;。
6. 已知:char a[20]= "abc",b[20]= "defghi";则执行cout using namespace std; int main() { char a[30]="nice to meet you!"; strcpy(a+strlen(a)/2,"you"); cout0) puts(a); else if(k,所以结果输出字符串a 四、编程题 1.编程实现功能:删去一维数组中所有相同的数,使之只剩一个数组中的数已按由 小到大的顺序排列,函数返回删除后数组中数据的个数 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10 思路:fun函数的2个形式参数,分别接收数组名,即数组的首地址,和数组中存放的原始数据的个数,fun函数对原始数组按题目处理后,在主函数中输出的数组a就是处理后的数组,这里函数之间参数传递属于地址传递。
程序代码如下: #include using namespace std; const N=80; int fun(int a[], int n) { int i,j=1; for(i=1;i using namespace std; int main( ) { const N=800; float x[N],sum=0,ave,a; int n=0,i; cout>a; while (a>=0 x[n]=a; n++; cin>>a; } cout using namespace std; #include "string.h" int main( ) { char str1[80], str2[80],c; int i=0,s; gets (str1); gets (str2); while ((str1[i]==str2[i]) s= str1[i]-str2[i]; cout #include using namespace std; int main( ) { int i; long f[10]={1,1}; for (i=2; i2) f n = 4 / 4。
