第5章数组(C++版)
- 格式:ppt
- 大小:573.50 KB
- 文档页数:11
练习5-1答案一、选择题1.合法的数组说明语句是( B )。
A.int a[]="string"; B.int a[]={0,1,2,3,4,5};C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'};2.以下对一维整型数组a的说明正确的选项是( D )。
A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.:int a[10];,那么对a数组元素的正确引用是( D )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10] 4.以下对一维数组a进行正确初始化的语句是( C )。
A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={};C.int a[]={0}; D.int a[2]={10, 9, 8};5.对以下说明语句的正确理解是( B )。
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.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。
所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。
例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio.h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③ ) printf("%2d:%10d %10d\n", ++count, n, n*n);}}那么①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
第五章1、设二维数组A【8】【10】是一个按行优先顺序存储在内存中的数组,已知A【0】【0】的起始存储位置为1000,每个数组元素占用4个存储单元,求:(1)A【4】【5】的起始存储位置。
A【4】【5】的起始存储位置为1000+(10*4+5)*4=1180;(2)起始存储位置为1184的数组元素的下标。
起始存储位置为1184的数组元素的下标为4(行下标)、6(列下标)。
2、画出下列广义表D=((c),(e),(a,(b,c,d)))的图形表示和它们的存储表示。
略,参考第5·2节应用题第5题分析与解答。
3、已知A为稀疏矩阵,试从时间和空间角度比较采用两种不同的存储结构(二维数组和三元组表)实现求∑a(i,j)运算的优缺点。
稀疏矩阵A采用二维数组存储时,需要n*n个存储单元,完成求∑ii a(1≤i≤n)时,由于a【i】【i】随机存取,速度快。
但采用三元组表时,若非零元素个数为t,需3t+3个存储单元(t个分量存各非零元素的行值、列值、元素值),同时还需要三个存储单元存储存稀疏矩阵A的行数、列数和非零元素个数,比二维数组节省存储单元;但在求∑ii a(1≤i≤n)时,要扫描整个三元组表,以便找到行列值相等的非零元素求和,其时间性能比采用二维数组时差。
4、利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间?当m行n列稀疏矩阵中非零元素个数为t,当满足关系3*t<m*n时,利用三元组存储稀疏数组时,才能节省存储空间。
5、求下列各广义表的操作结果。
(1)GetHead((a,(b,c),d))GetHead((a,(b,c),d))=a(2)GetTail((a,(b,c),d))GetTail((a,(b,c),d))=((b,c),d)(3)GetHead(GetTail((a,(b,c),d)))GetHead(GetTail((a,(b,c),d)))=(b,c)(4)GetTail(GetHead((a,(b,c),d)))GetTail(GetHead((a,(b,c),d)))=()第六章1、已知一棵树边的集合为{(i,m),(i,n),(e,i),(b,e),(b,d),(a,b),(g,j),(g,k),(c,g),(c,f),(h,l),(c,h),(a,c)}用树形表示法画出此树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶结点?(3)哪个是g的双亲?(4)哪些是g的祖先?(5)哪些是g的孩子?(6)哪些是e的子孙?(7)哪些是e的兄弟?哪些是f的兄弟?(8)结点b和n的层次号分别是什么?(9)树的深度是多少?(10)以结点c为根的子树的深度是多少?(11)树的度数是多少?略。
本页已使用福昕阅读器进行编辑。
福昕软件(C)2005-2007,版权所有,仅供试用。
第5章数组如果需要使用同一类型的多个对象,就可以使用集合和数组。
C# 用特殊的记号声明和使用数组。
Array类在后台发挥作用,为数组中元素的排序和过滤提供了几个方法。
使用枚举器,可以迭代数组中的所有元素。
本章讨论如下内容:●简单数组●多维数组●锯齿数组●Array类●数组的接口●枚举5.1 简单数组如果需要使用同一类型的多个对象,就可以使用数组。
数组是一种数据结构,可以包含同一类型的多个元素。
5.1.1 数组的声明在声明数组时,应先定义数组中元素的类型,其后是一个空方括号和一个变量名。
例如,下面声明了一个包含整型元素的数组:int[] myArray;5.1.2 数组的初始化声明了数组后,就必须为数组分配内存,以保存数组的所有元素。
数组是引用类型,所以必须给它分配堆上的内存。
为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。
下面指定了数组的大小。
第5章数组提示:值类型和引用类型请参见第3章。
myArray = new int[4];,如图5-1所示。
在声明和初始化警告:在指定了数组的大小后,如果不复制数组中的所有元素,就不能重新设置数组的大小。
如果事先不知道数组中应包含多少个元素,就可以使用集合。
集合请参见第10章。
除了在两个语句中声明和初始化数组之外,还可以在一个语句中声明和初始化数组:int[] myArray = new int[4];还可以使用数组初始化器为数组的每个元素赋值。
数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用。
int[] myArray = new int[4] {4, 7, 11, 2};如果用花括号初始化数组,还可以不指定数组的大小,因为编译器会计算出元素的个数:int[] myArray = new int[] {4, 7, 11, 2};使用C# 编译器还有一种更简化的形式。
第五章数组一、单项选择1.若要定义一个具有5个元素的整型数组,以下错误的定义语句是( C)2.下列选项中,能正确定义数组的语句是( D)3.下面是有关C语言字符数组的描述,其中错误的是( D)4.有以下程序,程序运行时若输入:how are you? I am fine<回车>则输出结果是( C)#include<stdio.h>int main(){ char a[30],b[30];scanf("%s",a);gets(b);printf("%s\n %s\n",a,b);return 0;}5.以下选项中正确的语句组是( D)6.若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是( A )7.以下数组定义中错误的是( A)8.下列选项中,能够满足"若字符串s1等于字符串s2,则执行ST"要求的是 ( A )9.有以下程序,程序运行后的输出结果是( C)#include <stdio.h>#include <string.h>int main(){char x[]="STRING";x[0]='0';x[1]='\0';x[2]=0;printf("%d %d\n",sizeof(x),strlen(x));return 0;10.有以下程序,程序运行后的输出结果是( B )#include <stdio.h>#include <string.h>int main(){char a[20]=”ABCD\0EFG\0”,b[]=”IJK”;strcat(a,b); printf(“%s\n”,a);return 0;二、程序设计1./* 编写程序,实现矩阵(3行3列)的转置(即行列互换)。
c语言程序设计基础第五版知识点总结C语言是一门广泛应用于科学计算、操作系统、嵌入式系统等领域的编程语言。
对于初学者来说,进修C语言是打下编程基础的重要一步。
本文将总结《C语言程序设计基础第五版》中的主要知识点,援助读者快速精通C语言的基本观点和编程技巧。
第一章:C程序设计概述本章主要介绍C语言的进步历史、特点以及编程环境的配置。
读者可以了解到C语言的起源以及C语言程序的基本框架。
第二章:C语言基本数据类型(数据类型、变量、常量)C语言中有多种数据类型,包括整型、字符型、实型等。
本章详尽介绍了各种数据类型的定义和使用方法,并提供了一些实例演示。
第三章:C语言运算符和表达式运算符是C语言中常用的操作符号,用于完成各种数学和逻辑运算。
本章详尽介绍了各种运算符的使用方法和优先级规则,并提供了一些例子进行实践。
第四章:C语言控制结构控制结构是编程语言中用于控制程序流程的语句和机制。
本章介绍了C语言中的次序结构、选择结构和循环结构,并提供了一些实例演示,援助读者理解和应用这些结构。
第五章:C语言数组与字符串数组是C语言中常用的一种数据结构,可以存储多个相同类型的数据。
本章详尽介绍了数组的定义和使用方法,并提供了一些例子援助读者熟识数组的操作。
字符串是由字符组成的一种特殊的数组,本章也介绍了字符串的相关观点和操作方法。
第六章:C语言函数与参数传递函数是C语言中模块化编程的重要组成部分,函数可以将一些操作封装起来,提高代码的可读性和重用性。
本章详尽介绍了函数的定义、调用和传递参数的方法,并提供了一些实例援助读者精通函数的使用技巧。
第七章:C语言指针指针是C语言中分外重要的观点,通过指针可以实现对内存的直接操作。
本章介绍了指针的定义和使用方法,包括指针的基本操作、指针与数组和函数的干系等。
第八章:C语言结构体、联合与列举结构体、联合和列举是C语言中用于组织和管理复杂数据的机制。
本章详尽介绍了结构体、联合和列举的定义和使用方法,并提供了一些实例援助读者理解和应用这些机制。