第7章数组课后作业

合集下载

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组

C语言程序设计(第3版)何钦铭 颜 晖 第7章  数组

第7章数组【练习7-1】将例7—3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。

当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。

【练习7—2】将数组中的数逆序存放.输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始.试编写相应程序。

解答:#include<stdio。

h〉int main(void){int i,n,temp;int a[10];printf("Input n:");scanf(”%d",&n);printf(”Input %d integer:",n);for(i=0;i<n;i++)scanf(”%d”,&a[i]);printf(”After reversed:");for(i=0;i〈n/2;i++){temp=a[i];a[i]=a[n—1—i];a[n-1—i]=temp;}for(i=0;i〈n;i++)printf("%d ”,a[i]);return 0;}【练习7-3】求最大值及其下标.输入一个正整数n(1〈n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素.试编写相应程序.解答:#include〈stdio.h>int main(void){int i,index,n;int a[10];printf("Enter n:”);scanf(”%d",&n);printf(”Enter %d integrs:”,n);for(i=0;i〈n;i++)scanf("%d",&a[i]);for(i=n—1;i〉=0;i++)printf("%d ”,a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。

c语言复习题及答案第七章数组

c语言复习题及答案第七章数组

第七章数组(8学时)学习目的与要求:1、要点掌握一维数组的定义和引用;2、基本掌握二维数组的定义和引用;3、要点掌握字符型数组的定义与引用;4、能正确使用字符串办理函数;5、学会使用数组解决实质问题。

要点:1、一维数组的定义与引用;2、二维数组的定义与引用;3、字符数组的定义与引用;第 1 讲知识归纳:1、一维数组的定义:种类说明符数组名[常量表达式];(1) (1)数组名后一定用方括弧[ ],用其余括弧均错误;(2)方括弧中的常量表达式表示数组的元素个数;(3)方括弧中的常量表达式,一定是能计算出详尽数值,且不改变的常量,不可以是变量;2、一维数组的引用:数组名[下标]for ( i =0 ; i<7 ; i ++ ) printf(“%c” , c1[ i ] );(2) 将整个字符串一次输入输出,用格式符%s ;如:char c1[10];scanf (“ %s”, c1) ;100];D) int N=100;int num[N];(2003 年 9 月)25、有以下程序main(){ char a[ ]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘0’}; int i,j;i=sizeof(a); j=strlen(a);printf( “%d,%d b”i,j);}程序运转后的输出结果是( )。

A) 9,9B) 8,9C) 1,8D) 9, 8(2002 年 9 月)21、 C 22、C 23、D 24、B 25 、D二、填空题1、下边 fun 函数的功能是将形参x 的值变换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0 的元素中,其余依此类推。

请填空。

fun(int x,int b[]){ int k=0,r;do{ r=x% 2;b[k++]=r;x/= 2 ; } while(x); }(1996 年 4 月)2 22、以下程序用来对从键盘上输入的两个字符串进行比较 , 而后输出两个字符串中第一个不同样字符的 ASCII 码之差。

Java语言程序设计(郑莉)第七章课后习题答案

Java语言程序设计(郑莉)第七章课后习题答案

Java语言程序设计第七章课后习题答案1.数组的声明与数组元素的创建有什么关系?答:声明数组仅仅是代表试图创建数组,不分配任何存储空间,声明是为创建做“铺垫”。

2.Vector类的对象与数组有什么关系?什么时候适合使用数组,什么时候适合使用Vector?答:vector是一个能够存放任意对象类型的动态数组,容量能自动扩充,而数组存储固定且类型相同的对象;对于存储固定类型相同的对象使用数组,对于存储不同类型或者动态调整数组大小的情况使用Vector。

3.与顺序查找相比,二分查找有什么优势?使用二分查找的条件?答:对于大数据量中进行查找时二分查找比顺序查找效率高得多;条件是已排序的数组。

4.试举出三种常见的排序算法,并简单说明其排序思路。

答:①选择排序:基本思想是站在未排序列中选一个最小元素,作为已排序子序列,然后再重复地从未排序子序列中选取一个最小元素,把它加到已经排序的序列中,作为已排序子序列的最后一个元素,直到把未排序列中的元素处理完为止。

②插入排序:是将待排序的数据按一定的规则逐一插入到已排序序列中的合适位置处,直到将全部数据都插入为止。

③二分查找:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

5.声明一个类People,成员变量有姓名、出生日期、性别、身高、体重等;生成10个People 类对象,并放在一个以为数组中,编写方法按身高进行排序。

//People类public class People{private String name;private String birthdaydate;private String sex;private double height;private double weight;public People(){//默认构造函数}public People(People p){=;this.birthdaydate=p.birthdaydate;this.sex=p.sex;this.height=p.height;this.weight=p.weight;}public People(String name,String birthdaydate,String sex,double height,double weight){=name;this.birthdaydate=birthdaydate;this.sex=sex;this.height=height;this.weight=weight;}public String getName() {return name;}public void setName(String name) { = name;}public String getBirthdaydate() {return birthdaydate;}public void setBirthdaydate(String birthdaydate) {this.birthdaydate = birthdaydate;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}public String toString(){return"姓名:"+name+"\n出生年月:"+birthdaydate+"\n性别:"+sex+"\n 身高:"+height+"\n体重:"+weight;}}//test7_5类public class test7_5 {/***@param args*/public static void main(String[] args) {// TODO Auto-generated method stubPeople[] people={new People("林楚金","1989年8月13日","男",182,63.5),new People("诸葛亮","181年7月23日","男",184,76.6),new People("迈克杰克逊","1958年8月29日","男",180,60),new People("乔丹","1963年2月17日","男",198,98.1),new People("拿破仑","1769年8月15日","男",159.5,63),new People("苍井空","1983年11月11日","女",155,45),};People temp=new People();for(int i=0;i<people.length-1;i++)for(int j=i+1;j<people.length;j++){if(people[i].getHeight()<people[j].getHeight()){temp=people[j];people[j]=people[i];people[i]=temp;}}System.out.println("按身高从小到大排序后的结果如下:");for(int i=0;i<people.length;i++)System.out.println(people[i]+"\n");}}运行结果:6.声明一个类,此类使用私有的ArrayList来存储对象。

南昌大学第七章数组答案

南昌大学第七章数组答案

A.int a[]="string";B.int a[5]={0,1,2,3,4,5};C.char a="string";D.char a[]={0,1,2,3,4,5};A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. B.C. D.A. B.C. D.A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1) 确定A. a[0][2*1]B. a[l][3]C. a[4-2][0]D. a[0][4]A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+1 确定A. B.C. D.A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. if(s1>s2)B. if(strcmp(s1,s2))C. if(strcmp(s2,s1)>O)D. if(strcmp(s1A. B.C. D.A. int a[3][ ];B. float a(3C. double a[1][4];D. float a(3)(4);A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1)A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A BC DA BC DA BC DA BC DA BD C整体赋值A BC DA BC DA BC DA BC DA BC DA BCD 值A B C DA B C DA B C DA B C DA) abcdefA) abcdA) abcdA) abcdef确定[C] 教师批改:36、给出以下定义:char x[ ]="abcdefg";char y[ ]={…a…,…b…,…c…,…d…,…e…,…f…,…g…};则正确的叙述为A)数组X和数组Y等价B)数组x和数组Y的长度相同C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度确定[C] 教师批改:37、设有static char str[ ]="Beijing";则执行printf("%d\n", strlen(strcpy(str,"China")));后的输出结果为A) 5 B) 7C) 12 D) 14确定[A] 教师批改:38、请选出以下程序段的输出结果#include<stdio.h>main(){ char sl[10], s2[10], s3[10], s4[10];scanf("%s%s",s1,s2); gets(s3); gets(s4);puts(s1); puts(s2); puts(s3); puts(s4);}输入数据如下:(此处<CR>代表回车符)aaaa bbbb<CR>A bbbbB bbbbC) aaaa bbbbD ccccA BC DA不可以直接用数组名对数组进行整体输入或输出BC数组元素的下标超出所定义的下标范围时,系统将给出DA BC DA B C DA B C DA B C DA BC DA B C D。

第7章 数组 复习

第7章 数组 复习

第7章数组1.下列数组声明中,正确的是()。

(a)int a[5]={0}; (b) int a[ ]={0 1 2};(c) int a[5]=0; (d) int a[ ];2.下列数组声明中,正确的是()。

(a)int a[10];(b)int n = 10, a[n];(c)int N =10; int a[N];(d)int n; scanf(" %d ", &n); int a[n];3.已知int a[10];则对a数组元素引用不正确的是()。

(a)a[10] (b) a[3+5] (c) a[10-10](d) a[5]4.以下数组定义中,正确的是()。

(a)int a[2][3] = {1, 2, 3, 4, 5, 6, 7};(b)int a[ ][ ] = {{1, 2, 3},{4, 5, 6},{7, 8,9}};(c)int a[2][ ] = {1, 2, 3, 4, 5, 6};(d)int a[ ][4] = {6};5.若有定义: int a[3] = {0, 1, 2}; 则a[1]的值为()。

(a)0 (b) 1 (c) 2 (d)36.若有定义:inta[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为()。

(a)0 (b) {1,2} (c) 1 (d)37.有如下定义int a[ ][3] = {1,2,3,4,5,6,7,8};则数组a 的行数是()。

(a) 2 (b) 3 (c) 4 (d) 无法确定的8.getchar( )函数的功能是从终端输入()。

(a)一个整型变量值(b) 一个实型变量值(c)多个字符(d) 一个字符9.设已定义chars[ ]="\"Name\\Address\023\n";,则字符串所占的字节数是()。

(a)19 (b) 15 (c) 18(d)1410.以下程序段运行后屏幕输出为()。

(陈慧南 第3版)算法设计与分析——第7章课后习题答案

(陈慧南 第3版)算法设计与分析——第7章课后习题答案

③ 其余元素
w[0][2] q[2] p[2] w[0][1] 15
k 1: c[0][0] c[1][2] c[0][2] min k 2 : c[0][1] c[2][2] w[0][2] 22 r[0][2] 2



17000
s[0][2]

0
m[1][3]

min
k k
1: m[1][1] m[2][3] 2 : m[1][2] m[3][3]
p1 p2 p4 p1 p3 p4


10000
s[1][3]

2
m[1][3]

min

k k

0 : m[0][0] m[1][3] 1: m[0][1] m[2][3]
第七章课后习题
姓名:赵文浩 学号:16111204082 班级:2016 级计算机科学与技术 7-1 写出对图 7-19 所示的多段图采用向后递推动态规划算法求解时的计算过程。
3
1
3
1
6
5
0
2
6
6
3
4
4 6
5
2
7
8
3
2
8
5
2
7
解析:
V 5 cost(5,8) 0 d (5,8) 8
V4
cos t(4, 6) minc(6,8) cos t(5,8) 7 cos t(4, 7) minc(7,8) cos t(5,8) 3
k 1: c[0][0] c[1][3] c[0][3] min k 2 : c[0][1] c[2][3] w[0][3] 25

第7章课后习题

第7章课后习题




11.打印图案 main() { static char a[5]={'*','*','*','*','*'}; int i,j,k; char space=' '; for(i=0;i<=5;i++) { printf("\n"); for(j=1;j<=3*i;j++) printf("%1c",space); for(k=0;k<=5;k++) printf("%3c",a[k]); } }


for(i=1;i<N;i++)
{ for(j=1;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); } printf("\n");



}

8.找出一个二维数组中的鞍点,即该位置上的元素在该行上 最大,在该列上最小。也可能没有鞍点。 #define N 10 #define M 10 main() { int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; printf("\n输入行数n:"); scanf("%d",&n); printf("\n输入列数m:"); scanf("%d",&m);




1.用筛选法求100之内的素数。 #include<math.h> #define N 101 main() { int i,j,line,a[N];

Java语言程序设计(郑莉)第七章课后习题答案

Java语言程序设计(郑莉)第七章课后习题答案

Java语言程序设计第七章课后习题答案1.数组的声明与数组元素的创建有什么关系?答:声明数组仅仅是代表试图创建数组,不分配任何存储空间,声明是为创建做“铺垫”。

2.Vector类的对象与数组有什么关系?什么时候适合使用数组,什么时候适合使用Vector?答:vector是一个能够存放任意对象类型的动态数组,容量能自动扩充,而数组存储固定且类型相同的对象;对于存储固定类型相同的对象使用数组,对于存储不同类型或者动态调整数组大小的情况使用Vector。

3.与顺序查找相比,二分查找有什么优势?使用二分查找的条件?答:对于大数据量中进行查找时二分查找比顺序查找效率高得多;条件是已排序的数组。

4.试举出三种常见的排序算法,并简单说明其排序思路。

答:①选择排序:基本思想是站在未排序列中选一个最小元素,作为已排序子序列,然后再重复地从未排序子序列中选取一个最小元素,把它加到已经排序的序列中,作为已排序子序列的最后一个元素,直到把未排序列中的元素处理完为止。

②插入排序:是将待排序的数据按一定的规则逐一插入到已排序序列中的合适位置处,直到将全部数据都插入为止。

③二分查找:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

5.声明一个类People,成员变量有姓名、出生日期、性别、身高、体重等;生成10个People 类对象,并放在一个以为数组中,编写方法按身高进行排序。

//People类public class People{private String name;private String birthdaydate;private String sex;private double height;private double weight;public People(){//默认构造函数}public People(People p){=;this.birthdaydate=p.birthdaydate;this.sex=p.sex;this.height=p.height;this.weight=p.weight;}public People(String name,String birthdaydate,String sex,double height,double weight){=name;this.birthdaydate=birthdaydate;this.sex=sex;this.height=height;this.weight=weight;}public String getName() {return name;}public void setName(String name) { = name;}public String getBirthdaydate() {return birthdaydate;}public void setBirthdaydate(String birthdaydate) {this.birthdaydate = birthdaydate;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}public String toString(){return"姓名:"+name+"\n出生年月:"+birthdaydate+"\n性别:"+sex+"\n 身高:"+height+"\n体重:"+weight;}}//test7_5类public class test7_5 {/***@param args*/public static void main(String[] args) {// TODO Auto-generated method stubPeople[] people={new People("林楚金","1989年8月13日","男",182,63.5),new People("诸葛亮","181年7月23日","男",184,76.6),new People("迈克杰克逊","1958年8月29日","男",180,60),new People("乔丹","1963年2月17日","男",198,98.1),new People("拿破仑","1769年8月15日","男",159.5,63),new People("苍井空","1983年11月11日","女",155,45),};People temp=new People();for(int i=0;i<people.length-1;i++)for(int j=i+1;j<people.length;j++){if(people[i].getHeight()<people[j].getHeight()){temp=people[j];people[j]=people[i];people[i]=temp;}}System.out.println("按身高从小到大排序后的结果如下:");for(int i=0;i<people.length;i++)System.out.println(people[i]+"\n");}}运行结果:6.声明一个类,此类使用私有的ArrayList来存储对象。

C语言第七章习题带答案

C语言第七章习题带答案

选择题1.已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。

A.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知:int a, x;,则正确的赋值语句是( C )。

A.a=(a[1]+a[2])/2; B.a*=*a+1; C.a=(x=1, x++, x+2); D.a="good"; 3.已知:int a, *p=&a;,则下列函数调用中错误的是( D )。

A.scanf("%d", &a); B.scanf("%d", p); C.printf("%d", a); D.scanf("%d", *p); 4.已知:char *p, *q;,选择正确的语句( C )。

A.p*=3; B.p/=q; C.p+=3; D.p+=q;5.已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。

A.int pb=&x; B.int *pb=x; C.int *pb=&x; D.*pb=*x;一、选择题1.设有说明int (*ptr)[M];,其中的标识符ptr是( C )。

A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M列的二维数组的一行的指针D.具有M个指针元素的一维数组的指针2.已知:double *p[6];,它的含义是( C )。

A.p是指向double型变量的指针B.p是double型数组C.p是指针数组D.p是数组指针3.已知:char s[10], *p=s,则在下列语句中,错误的语句是( B )。

A.p=s+5; B.s=p+s; C.s[2]=p[4]; D.*p=s[0];4.已知:char s[100]; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。

数据结构第七章课后习题答案 (1)

数据结构第七章课后习题答案 (1)

7_1对于图题7.1(P235)的无向图,给出:(1)表示该图的邻接矩阵。

(2)表示该图的邻接表。

(3)图中每个顶点的度。

解:(1)邻接矩阵:0111000100110010010101110111010100100110010001110(2)邻接表:1:2----3----4----NULL;2: 1----4----5----NULL;3: 1----4----6----NULL;4: 1----2----3----5----6----7----NULL;5: 2----4----7----NULL;6: 3----4----7----NULL;7: 4----5----6----NULL;(3)图中每个顶点的度分别为:3,3,3,6,3,3,3。

7_2对于图题7.1的无向图,给出:(1)从顶点1出发,按深度优先搜索法遍历图时所得到的顶点序(2)从顶点1出发,按广度优先法搜索法遍历图时所得到的顶点序列。

(1)DFS法:存储结构:本题采用邻接表作为图的存储结构,邻接表中的各个链表的结点形式由类型L_NODE规定,而各个链表的头指针存放在数组head中。

数组e中的元素e[0],e[1],…..,e[m-1]给出图中的m条边,e中结点形式由类型E_NODE规定。

visit[i]数组用来表示顶点i是否被访问过。

遍历前置visit各元素为0,若顶点i被访问过,则置visit[i]为1.算法分析:首先访问出发顶点v.接着,选择一个与v相邻接且未被访问过的的顶点w访问之,再从w 开始进行深度优先搜索。

每当到达一个其所有相邻接的顶点都被访问过的顶点,就从最后访问的顶点开始,依次退回到尚有邻接顶点未曾访问过的顶点u,并从u开始进行深度优先搜索。

这个过程进行到所有顶点都被访问过,或从任何一个已访问过的顶点出发,再也无法到达未曾访问过的顶点,则搜索过程就结束。

另一方面,先建立一个相应的具有n个顶点,m条边的无向图的邻接表。

第7章 数组习题答案

第7章 数组习题答案

第七章数组一、选择题1. A2. B 4. C 5. B 6. D 7. A 8. D9. C 10. A 11. A 12. C 13. C 14. B 15. C 16. D二、填空题1.标识符或变量名2.常量符号常量变量3.m-1 n-14.字符数组5.数组名6.s[j++]=s[i];7.c2=’‘三、阅读程序,写出结果1.1,2,3,2.2,3,4,3. f4.-4 0 4 4 35.0 1 0 0 06.0 0 1 0 07.0 0 0 1 08.0 0 0 0 1四、编程题1.程序为:#include "stdio.h"void main(){int a[101],i,j;for(i=1;i<=100;i++)a[i]=i;a[1]=0;for(i=2; i<=100;i++){for(j=2;j<a[i];j++)if(a[i]%j==0)break;if(a[i]==j)a[i]=1;else a[i]=0;}printf("\n");for(i=1;i<=100;i++)if(a[i]==1)printf("%d ",i);}2.程序为:#include "stdio.h"void main(){int a[10],i,t;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%6d",a[i]);printf("\n");for(i=0;i<=10/2;i++){ t=a[i];a[i]=a[9-i];a[9-i]=t;}for(i=0;i<10;i++)printf("%6d",a[i]);}3.程序为:#include "stdio.h"void main(){ int a[11]={1,3,5,7,9,34,36,67,89,100}; int i,j,x;scanf("%d",&x);for(i=0;i<10;i++)printf("%6d",a[i]);printf("\n");for(i=0;i<10;i++)if(x<a[i])break;for(j=10;j>=i;j--)a[j]=a[j-1];a[i]=x;for(i=0;i<11;i++)printf("%6d",a[i]);printf("\n");}4.程序为:include "stdio.h"#define size 5void main(){int a[size][size];int i,j,s=0;for(i=0;i<size;i++)for(j=0;j<size;j++)scanf("%d",&a[i][j]);for(i=0;i<size;i++){for(j=0;j<size;j++)printf("%-4d",a[i][j]);printf("\n");}for(i=0;i<size;i++)s=s+a[i][i];for(i=0;i<size;i++)s=s+a[i][size-i-1];s=s-a[size/2][size/2];printf("sum is %d \n",s);}5.程序为:include "stdio.h"#define n 4#define m 3void main(){int a[n][m],b[n];int i,j,num=0;for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",&a[i][j]);for(i=0;i<n;i++){printf("%d:",i+1);for(j=0;j<m;j++)printf("%4d",a[i][j]);printf("\n");}for(i=0;i<m;i++){ num=0;for(j=1;j<n;j++)if(a[j][i]>a[num][i]){num=j;}b[i]=num;}for(i=0;i<m;i++)printf("The %dth lesson:the highest score:%d,Num:%d\n",i+1,a[b[i]][i],b[i]+1); }6.程序为:#include<stdio.h>void main(){int a[3][4],i,j,max,t,c;for(i=0;i<3;i++){for(j=0;j<4;j++){scanf("%d",&a[i][j]);}}for(i=0;i<3;i++){max=a[i][0];t=0;for(j=0;j<4;j++){if(a[i][j]>max){max=a[i][j];t=j;}}c=1;for(i=0;i<3;i++){if(max>a[i][t]){c=0;break;}}}if(c==0)printf("No");if(c==1)printf("max=%d",max);}7.程序为:include "stdio.h"#include "string.h"void main(){int a=0,b=0,c=0,d=0,n;char str[255];gets(str);n=0;while(str[n]!='\0'){if(str[n]>='A'&&str[n]<='Z'||str[n]>='a'&&str[n]<='z')a++;else if(str[n]==' ')b++;else if(str[n]>='0'&&str[n]<='9')c++;else d++;n++;}printf("English letter:%d,Blank:%d,Digital letter:%d,the other letter:%d\n",a,b,c,d); }8.程序为:include "stdio.h"int strlen(char ss[]){int len=0;while(ss[len]!='\0')len++;return len;}void main(){char s[255];gets(s);printf("The string lenght is:%d\n",strlen(s));}9.程序为:#include "stdio.h"#include "string.h"void fun(char ss[],char ch){ int i,j,len;len=strlen(ss);for(i=0;i<len;i++){if(ss[i]==ch){for(j=i;j<len-1;j++)ss[j]=ss[j+1];len--;}ss[len-1]='\0';}}void main(){char s[255],ch;gets(s);scanf("%c",&ch);printf("\n");puts(s);fun(s,ch);puts(s);}10.程序为:#include "stdio.h"#include "string.h"void fun(char ss1[],char ss2[]) { int i,j=0,len;len=strlen(ss1);for(i=0;i<len;i++){if(i%2==0){ss2[j]=ss1[i];j++;}i++;}ss2[j]='\0';}void main(){char s1[255],s2[255];gets(s1);puts(s1);fun(s1,s2);puts(s2);}。

c语言第七章数组课后练习题答案

c语言第七章数组课后练习题答案

c语言第七章数组课后练习题答案第七章数组学习目的与要求:1 、重点掌握一维数组的定义和引用;、基本掌握二维数组的定义和引用;、重点掌握字符型数组的定义与引用;、能正确使用字符串处理函数;、学会使用数组解决实际问题。

重点:1 、一维数组的定义与引用;、二维数组的定义与引用;、字符数组的定义与引用;第1讲知识归纳:1、一维数组的定义:类型说明符数组名[ 常量表达式 ] ;数组名后必须用方括弧 [ ] ,用其他括弧均错误;方括弧中的常量表达式表示数组的元素个数;方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;2、一维数组的引用:数组名[ 下标 ] //下标从0如 int a[10] ;//可以引用的数组元素为不是本数组元素;3、一维数组的初始化:int a[3] ;a = { 1,3,} ;可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ??, float 0.0 ;如 int a [3]= {1,} ; //a[0] =1 ; a[1]= ; a[2]= 0 ;在对数组全部元素赋初值时,可以不指定元素个数;可以在循环控制下,给数组各元素赋值;如:int a[10] ;fora [ i ] = i ;基础训练一、选择题1、在c语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量 B)整型表达式 )整型常量或整型表达式D)任何类型的表达式2、要说明一个有10个int元素的数组,应当选择语句。

) int a[10]; B) int a; C) int a[9] D) int a[11]3、以下对数组的正确定义是:。

A) float b[5.0] ) float b[5] C) float b D) float b[]4、对以下说明语句的正确理解是。

int a[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]C语言复习题)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确5、已知:int a[10];则对a数组元素的正确引用是。

数据结构第三版第七章作业参考答案

数据结构第三版第七章作业参考答案

//栈指针置初值
do { while (t)
//将 t 的所有左结点进栈
{ top++;
St[top]=t;
t=t->lchild;
} p=NULL; flag=1; while (top!=-1 && flag)
//p 指e当前结点的前一个已fg



//h置 t 的fgij为已fg过
{ t=St[top]; if (t->rchild==p) { if (t==s)
7.1 设二叉树 bt 的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
其中,bt 为树根结点指针,lchild、rchild 分别为结点的左、右孩子指针域,
Ctree(t->lchild,A,2*i);
//递归构造*t 的左子树
Ctree(t->rchild,A,2*i+1); //递归构造*t 的右子树
}
}
7.5 设计一个算法,将一棵以二叉链方式存储的二叉树 t 按顺序方式存储到数组 A 中。
解:由二叉树的顺序存储方式可知本题的递归模型f()如下:
f(t,A,i):A[i]=' ';
//顺序队首尾指针 //cm=1 表示二叉树为完全二叉树 //bj=1 表示到目前为止所有结点均有左右孩子
if (b!=NULL)
{ rear++;
Qu[rear]=b;
while (first!=rear) { first++;

答案解析。第七章

答案解析。第七章

第七章数组一、选择题1答案:B分析:此题考察一维数组的定义,一维数组的说明中,下标必须为正的整型常量,不能为变量,在一维数组的初始化中,指出在单纯的定义时不能省略数组的长度。

2答案:B分析:首先i=0时,判断i++〈7 成立,进入循环体,但此时i=1,p[1]=12不满足if语句,不执行j+=p[i]。

按照此方法,得到j=p[2]+p[4]+p[6]=45,即B正确。

3答案:D分析:首先i=0<7&&p[0]%2!=0,满足循环条件,执行k=k+p[0],即k=11, 然后执行i++,再进行判断,满足循环条件,k=11+p[1],所以k=24,执行i++,i=2,,再进行判断,此时不满足循环条件,循环结束,输出k值,为24。

4答案:A分析:此题主要考察循环嵌套,第一个循环体执行完是将x[0],x[1],x[2],x[3],进行从大到小排序,第二个循环体执行完是将x[4],x[5],x[6],x[7]进行从小到大排序。

5答案:B分析:此题考察二维数组的定义,单纯定义二维数组时,行和列都不能缺省。

在初始化过程中,列不能缺省,赋值的行数和列数不能超过数组的行数和列数。

6答案:D分析:同上题分析一样。

7答案:D分析:同上。

8答案:C分析:此题分别输出m[2][0],m[2][1],m[2][2]。

9答案:A分析:此题考察在for循环后,i=0,i=1时,执行if语句,使得a[1][0],a[1][1] 的值分别减1,而当i=2时,执行else语句,a[1][2]=1。

因此输出a[0][1]+a[1][1] +a[1][2]=2+4+1=7;10答案:B分析:此题考察for循环,计算aa[0][1],aa[1][1],aa[2][2],aa[3][1]的和,即为19。

11答案:C分析:由于自增加运算符(++)的优先级别高于取地址运算符(&),所以选项C无法表示aa[1]的地址,其他三个选项都可以。

第七章习题解答

第七章习题解答

习题七(P143)一.选择题1.语句Dim a(3,4,5)定义的数组中所包含的数组元素的个数是。

(A)12 (B)60 (C)120 (D)3452.设有数组声明语句:Option base 0Dim B(-1 To 10,2 To 9,20) as integer则数组B中共有个元素。

(A)1700 (B)1747 (C)2016 (D)23103.以下说法不正确的是。

(A)使用Redim语句可以改变数组的维数(B)使用Redim语句可以改变数组的类型(C)使用Redim语句可以改变数组的每一维的大小(D)使用Redim语句可以对数组中的所有元素进行初始化4.设用复制、粘贴的方法建立了一个命令按钮数组Command1,以下对该数组的说法错误的是。

(A)命令按钮的所有Caption属性都是Command1(B)在代码中访问任意一个命令按钮只需使用名称Command1(C)命令按钮的大小都相同(D)命令按钮共享相同的事件过程5.下列程序段的执行结果为。

Dim M(10)For I=0 To 10M(I)=2*INext IPrint M(M(3))(A)12 (B)6 (C)0 (D)46.下列程序段的执行结果为。

Dim A(5)For I=1 To 5A(I)=I*INext IPrint A(I-1)(A)5 (B)25 (C)0 (D)167.将Command1的单击事件过程显示在窗体上。

Option Base 0Private Sub Command1_Click()Dim aa=Array("a","b","c","d","e","f","8")Print a(1);a(3);a(5)End Sub(A)abc (B)bdf (C)age (D)错误8.当程序运行时,在窗体上单击鼠标时,下面事件过程的执行结果为。

数组作业参考答案

数组作业参考答案

Company Logo
3、在主函数中输入n(1<n<=10)个数整数,编写函数实现将他们从大到小排序,在主函数中输出排好序的数。
Company Logo
4、输入一个正整数n和n阶矩阵a中的元素,如果a是上三角形,输出“YES”;否则,输出“NO”(上三角形矩阵,即主对角线以下的元素都为0,主对角线为从矩阵的左上角至右下角的连线)。
Company Logo
1、输入一个正整数n(1<n<=10),再输入n个整数,按逆序输出这些整数。(第1个数和最后一个数交换,以此类推)
参考答案
Company Logo
2、输入一个正整数n(1<n<=10),再输入n个整数,将最小值与第一个数交换,最大值和最后一个数交换,然后输出交换后的n个数。
Company Logo
7、编写程序,计算并输出1000以内的fiboቤተ መጻሕፍቲ ባይዱacci数。
答案1:(递归)
Company Logo
答案2:非递归
Company Logo
5、插入一个数,使原来排好序的数依然保持有序。
Company Logo
6、判断输入的一串字符是否为“回文”。例如:xyzzyx,abcba都是回文。 输入: Input a string:abcddcba Yes 输入: Input a string:abcddcb No

数组课后作业

数组课后作业

数组课后作业1、判断一个数组{1,2,3,1,0}中是否存在相同的元素,如果存在相同的元素则输出“重复”,否则输出“不重复”。

2、编写一个程序,求出整数数组中最小元素和最大元素的下标,如果这样的元素个数不止一个,则返回最小的数的下标和最大的数的下标。

3、现在有如下一个数组:intoldArr[]={1,2,5,4,0,0,5,5,0,6,7};要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组newArr[];并输出两个数组中的所有元素值。

4、自己定义两个整型数组a[]和b[],初始化数组a,循环输入值到数组b,然后将a,b两个数组合并为数组c,按升序(从低到高)排列。

并输出数组a,b,c的值。

5、有一个数组,请按从大到小的顺序排好序,然后输入一个数,要求按原来排序的规律将它插入数组中。

如:排序后的数组为:54,48,35,23,21,12,8,4,插入40,则应插入到48和35之间。

6、编写程序,在5行7列的二维数组中查找第一次出现的负数。

7、编写程序,定义数组inta[4][6],b[4][6],c[4][6],并完成如下操作:(1)从键盘上输入数据给数组a,b;(2)将数组a与数组b各对应元素作比较,如果相等,则数组c的对应元素为0,若前者大于后者,则数组c的对应元素为1;若前者小于后者,则数组c的对应元素为-1;(3)输出数组c各元素的值。

8、读以下程序并注释,并分析运行结果。

(1)#includeintmain(){inta[10],t,av,um=0,i,j;for(i=0;i<10;i++)canf(\for(i=1;i<9;i++)um=um+a[i];av=um/8;printf(\return0;}这代码是求总和与前把项的平均值(2)intmain(){inti,a[5],min,p;for(i=0;i<5;i++){canf(\min=a[0];p=0;fo r(i=1;i<5;i++){if(a[i]printf(\return0;}求最小值。

第七章数组习题

第七章数组习题

第七章数组习题第七章练习(一)一、选择题1、下列程序的输出结果是()main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];printf(“%d\n”,j);}A)42 B)45 C)56 D) 602、下列程序的输出结果是()main(){char a[7]=”a0\0a0\0”;int i,j;i=sizeof(a);j=strlen(a);printf(“%d %d\n”,i,j);}A)2 2 B) 7 6 C) 7 2 D)6 23、下列能正确定义一维数组的选项是()A) int a[5]={0,1,2,3,4,5};B) char a[]={0,1,2,3,4,5};C)char a={…A?,?B?,?C?};D) int a[5]=”0123”;4、已有定义:char a[]=”xyz”,b[]={…x?,?y?,?z?};,下列叙述中正确的是()A)数组a和b的长度相同B)a数组长度小于b数组长度C) a数组长度大于b数组长度。

D)上述说法都不对。

5、有下列程序:main(){char s[]=”abcde”;s+=2;printf(“%d\n”,s[0]);}执行后的结果是()A)输出字符a的ASCII码B)输出字符c的ASCII码C)输出字符c D)程序出错6、有下列程序:main(){int x[3][2]={0},i;for(i=0;i<3;i++) scanf(“%d”,x[i]);printf(“%3d%3d%3d\n”,x[0][0],x[0][1],x[1][0]); }若运行时输入:2 4 6,则输出结果为()A)2 0 0 B)2 0 4C)2 4 0 D)2 4 67、下列能正确定义字符串的语句()A)char str[]={…\64?}; B)char str=”kx43”;C)char str=??; D)char str[]=”\0”;8、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}}; int i,j,k,t; for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++) printf(“%d,”,a[i][j]);}A)1,6,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1,9、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3.7.2.5},{4,8,6,1}}; Int i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k])< bdsfid="132" p=""></a[k][k])<>{t=[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++) printf(“%d,”,a[0][i]);}程序运行结果是()A)6,2,1,1, B)6,4,3,2,C)1,1,2,6, D)2,3,4,6,10、#includemain(){char p[20]={…a?,?b?,?c?,?d?},q[]=”abc”,r[]=”abcde”; strcpy(p+strlen(q),r); strcat(p,q);printf(“%d %d\n”,sizeof(p),strlen(p));}A)20 9 B)9 9 C)20 11D)11 1111、有下列程序:#includemain(){ char p[20]={…a?,?b?,?c?,?d?},q[]=”abc”,r[]=”abcde”; strcat(p,r); strcpy(p+strlen(q),q);printf(“%d\n”,strlen(p));}程序运行后的输出结果是()A)9 B)6C)11 D)712、若要求定义10个int型元素的一维数组a,则下列定义语句中错误的是()A)#define N 10 B)#define n 5int a[N]; int a[2*n];C)int a[5+5]; D)int n=10,a[n];13、有下列程序:main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14 ,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)< bdsfid="164" p=""></i;j++)<>Printf(“%4c”,??);for(j= ;j<4;j++)printf(“%4d”,num[i][j]);printf(“\n”);}}若要按下列形式输出数组右上半三角。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、依次输入五句话,然后将它逆序输出。

运行结果如图所示。

提示:
创建一个字符串数组,每句话作为字符串数組的一个元素,然后从该数组的末尾开
始循环输出。

2、某百货商场当日消费积分最高的八名顾客.他们的积分是:18、25、7、36、1
3、2、89、63。

编写程序找出最低的积分及它在数组中的原始位置(下标)。

提示:
> 创建数组points[],存储八名顾客的积分。

> 定义变量min存储最低枳分,定义变量index存储最低积分下标。

> 假设第一个元素为最低积分,下标为0。

> 遍历数组,将数组元素和min的值进行比较。

3、从键盘输入10个整数,合法值为1、2或3,不是这三个数则为非法数字。

试编程统计每个整数和非法数字的个数。

运行结果如图所示。

提示:
✓创建数组nums[],长度为10,存储用户输入的数字。

✓创建数组count[],长度为4、存储三个合法数字和非法数字的个数。

✓循环输入数字,利用switch判断数字的值、根据不同的值对数组count[]中的不同元素进行累加。

4、假设有一个长度为5的数组,如下所示:
int [] array = new int []{1,3,-1,5,2};
现要创建一个新数组newArray[],要求新数组中的元素与原数组中的元素逆序,并且如果
原数组中的元素值小于0,在新数组中按0存储。

试编程输出新数组中的元素,程序运行结果如图:
提示:
✓利用循环从原数组最后一个元素(下标为array.length-1)开始处理,如杲该元素的值小于0,利用continue退出本次循环(整型数组中元素默认值为0)。

✓如果该元素值大于0,则将该元素复制到新数组
✓合适的位置。

对于原数组下标为i的元素.在新数组中的下标为arrayJength-i-1。

✓处理完成,利用循环输出新数组中的元素
5、有一数列:8, 4, 2, 1, 23, 344, 12。

编写程序,让用户输入一个整数,判断该整数在不在该数列中。

运行效果如下图所示:
图猜对的情况
图猜错的情况
6、"回文数"是一种数字。

如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。

在自然数中,最小的回文数是0。

请编程,从键盘输入一个5位数,并判断该数是不是回文数,进行相应的输出。

效果如下图所示:
图回文数输出情况
图非回文数输出情况。

相关文档
最新文档