第七章数组上机作业

第七章数组上机作业
第七章数组上机作业

第七章数组

通过本章实验作业应达目标

1.学习并掌握一维数组与二维数组的定义、使用及初始化方法。

2.学习数组作为函数参数的用法。

3.熟练掌握字符数组和字符串的使用方法。

4.掌握数组的一种排序算法。

本章上交作业

程序7_1.c、7_3.c、7_5.c、7_7.c上传至211.64.135.121/casp。

实验一一维数组的定义和简单应用

【实验目的】

学会定义一维数组,掌握一维数组的遍历操作,掌握在一组数组中求最大值、最小值的方法。

【实验内容】

从键盘读入5个成绩到一个数组中,求其中的最大值,最小值和平均成绩。在屏幕上显示输入成绩的提示信息,用键盘输入一个成绩,接着提示输入下一个,直到结束。以7_1.c命名本程序并上交。

程序运行界面

【实验提示】

求最大(小)值通常用“打擂台”的方法。首先设计两个变量,如max和min分别用来存放最大值和最小值,并将数组的首元素赋给这两个变量,这就是到目前为止的最大(小)值,然后利用循环依次比较其他的元素,总是将当前最大(小)值赋给max和min,直至比较到最后,max和min中的数据就是最大值和最小值。

求平均值还要设置一个变量sum,用来累加各元素的值。

实验二一维数组的排序

【实验目的】

熟练掌握一维数组三种基本排序方法:选择法,冒泡法,比较法。

【实验内容】

从键盘上接收10个成绩,存放到一个一维数组score中,分别利用三种排序方法,将数组从小到大排序并在屏幕上显示排序结果。分别以7_2_1.c、7_2_2.c和7_2_3.c命名三个程序。

【实验提示】

所谓排序是指把一组杂乱无章的数据按照大小顺序排列。

将被排序的n个数据存放在一个数组中, 假如按升序排列。我们将数组定义为a[n],数据存放在a[0] 到 a[n-1] 中。

1.比较排序法

将a[0]与a[1]比较,若a[1]

2.选择排序法

选择排序法就是对比较法的改进。它的算法思想是:仍然是a[i]与其后的a[j]进行比较,但是当比较出a[j]小于a[i]时,先不急于交换(因为a[j]并不一定是这一轮中最小的,可能还有更小的),用一个变量p记下j的下标(即第几个数),继续比较下去,将最小数的下标j存放在p中,一轮比较完毕,a[p]便是最小的,这样只要a[i]与a[j]交换即可。一轮只交换一次,大大提高了程序的效率. 其中,一维数组既是数据的存放位置,也是交换的场所,这样可以很好的利用数据的内存空间。

3.冒泡排序法

将要排序的数放在某一个数组中,如a[0]~a[n-1],然后比较数组相邻两元素的值,即a[0]与a[1]比较,假如按升序排列,且a[0]>a[1],则二者交换,否则不变,a[1]再与a[2]比较,前者大就交换,…,依次两两比较至到a[n-2]与a[n-1]比较,经过一轮以后,最大者“沉”到了最后,小数往上“冒”,所以得名“冒泡法”。第二轮比较数组的前n-1个,即a[0]~a[n-2] 。重复此过程,直到所有的元素比较完毕。

实验三一维数组元素的调换

【实验目的】

进一步加强对数组的应用。

【实验内容】

找出数组中的最大数和最小数,并把最大数和a[0]中的数对调、最小数和a[1]中的数对调,其余数据位置不变。例如,程序运行时若输入:2 4 6 11 3 9 7 0 5 8,则输出:0 2 6 11 3 9 7 4 5 8。以7_3.c命名本程序并上交,部分程序如下。

#define N 10

main()

{int a[N],i;

for(i=0;i

scanf("%d",__________ );

………… /* 编写程序,实现功能 */

for(i=0;i

printf("%d ",a[i]);

printf("\n");

}

【实验提示】

本题既可以套用选择法排序,只排序两轮。也可以两次求最值再互换。

实验四一维数组的查找

【实验目的】

掌握数组的基本查找方法:顺序法和折半查找法。

【实验提示】

查找是计算机中经常要遇到的一种操作,其含义是在一组数据中查找到所查数据的位置。比较简单的是顺序查找法,效率较高的是折半查找法。

1.顺序查找法

顺序查找也叫线性查找,当一组数据无序时,一般采用顺序查找。其基本思想是:从数据集的第一个元素开始,依次将关键字x与数据集中的每一个元素进行比较,直到找到要找的数据。或者数据集遍历完毕,没有找到匹配元素。

2.折半查找法

若是已经排好序的数据,最好采用折半查找法。折半查找法的基本思想是:首先取第一个元素a[low]和最后一个元素a[high]中间的那个元素a[mid]与x比较(其中mid=(low+high)/2 ),如果a[mid]==x则正好找到,否则要看x比a [mid]大还是小,因假设数组已按降序排好,则当x>a[mid]时,则要查找的x在数组的前半部分,这样数组的后半部分就不用去查找了,查找范围缩小为一半。然后在前半部分再找一个中点,与x比较,如此一半一半缩小,如果x在数组当中,终能找到x==a[mid]。

由于每次缩小近一半的范围,所以数组的上、下界是要变化的,不妨用变量low、high、mid分别表示数组当前的上界、下界和中点。

问题:如果x不在数组当中,最终怎样知道?

【实验内容】

在一个已经排好序的数组(升序)中,从键盘上输入某数x,查找x是否在数组内,若在,则在屏幕上输出其下标值。若不存在,则在屏幕上显示“Not found!”。假设数组a[10] 的每个元素分别为{1,2,3,4,6,7,9,10,11,15},若从键盘上读入数x为9,则在屏幕上输出“the number’s position is 7”,若读入数为8,则屏幕上输出“Not found!”。

1. 顺序查找法编写的程序如下,请完善程序,并以7_4_1.c命名本程序。

# include

#define N 10

void main( )

{int a[N]={1,2,3,4,6,7,9,10,11,15};

int i,x;

scanf("%d", &x);

for(i=0;i

if ( _________ )

{printf("the number's position is %d\n",i+1);

_________ ;

}

if(i==N)

printf("Not found!\n");

}

2. 折半查找法编写的程序如下,请完善程序,并以7_4_2.c命名本程序。

#include

#define N 10

void main( )

{int a[N]={1,2,3,4,6,7,9,10,11,15};

int low, high, mid, i, x;

scanf("%d", &x );

for(low=0,high=N-1;; )

{mid =_________ ;

if(a[mid]==x)

{printf("the number's position is %d\n",mid+1);

break;

}

if( _________ ) { printf("Not found\n"); _________ ; }

if (a[mid]< x ) low=mid+1;

if (a[mid]> x ) _________ ;

}

}

【讨论与思考】

比较一下两种两种查找方法的优缺点。

实验五统计指定字符个数

【实验目的】

熟悉字符串的存取和结束标记。

【实验内容】

编写程序从键盘上输入一个字符串和一个字符,统计所指定字符的个数。

例如:从键盘输入字符串为"abaaAAbcaaaca",指定字符为'a',则在屏幕上输出结果是7。以7_5.c命名本程序并上交。

下面给出程序的部分代码。

#include

void main( )

{char a[200], b;

int num;

puts("Please inp ut a string:");

gets(a);

puts("Please enter a character:");

b=getchar( );

………… /* 编写程序,实现功能 */

pirntf(“The result is %d\n”, num);

}

实验六从字符串中删字符

【实验目的】

熟悉字符串的存取和结束标记。并掌握从一维数组中删除元素的方法。

【实验内容】

编写程序从键盘上输入一个字符串和一个字符,实现从字符串中删除该字符。

例如:从键盘输入字符串为"abaaAAbcaaaca",要删除的字符为'a',则在屏幕上输出"bAAbcc"。

下面给出程序的部分代码。请完善程序,并以7_6.c命名本程序。

void main( )

{char s[20], ch;

int i,j;

printf("Please input a string:\n");

gets(s);

printf("Please input a character:\n");

ch=getchar();

for( i=0; _________; i++ )

{ …………/* 编写程序,实现功能*/

}

puts(s);

}

【实验提示】

要考虑被删除的字符在字符串出现多次,而且连续排列的情况。

实验七数据加密

【实验目的】

学习通过字符数据的ASCII值进行加密的方法。

【实验内容】

某个单位要传递机密数据,数据是10位以内的整数(从键盘输入)。在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用该和除以10的余数代替该数字。在屏幕上显示加密后的数字。以7_7.c命名本程序并上交。

例如:输入数据327895123,

显示结果为:872340678。

【实验提示】

1.应用字符数组来解决该问题。

2.主程序中将各位数字以字符的形式存放,在加密的过程中应该注意‘0’跟0 的区别。

实验八将数字字符串转换为相应实数

【实验目的】

学习数字字符串与数值之间的转换问题。

【实验内容】

将键盘上输入的一个数字字符串转换为相应的实数,在屏幕上输出。转换时遇到第一个非数字字符时停止(不包含第一个小数点和起始的负号-)。例如:若输入字符串“123a45”,得到实数x=123.0;

若输入字符串“-123.45.765”,得到实数x=-123.45;

若输入字符串“123-56.78”,得到实数x=123.0;

若输入字符串“-.123”,得到实数x=-0.123。

下面给出不考虑负数的程序,请在下述程序的基础上补充完善为也能考虑负数的程序,并以7_8.c命名本程序。

#include

void main()

{char str[100];

int i,sign;double x,k;

gets(str);/* str中存放的是一个数字字符串*/

sign=1;k=0.1; /* sign是一个标志,标识是否出现了第一个小数点*/

x=0;

for(i=0;str[i];i++)

{if(sign==1)

if(str[i]>='0'&&str[i]<='9')

x=x*10+(str[i]-48);

else if(str[i]=='.')

sign=0;

else break;

else if(str[i]>='0'&&str[i]<='9')

{x+=(str[i]-48)*k;

k*=0.1;

}

else break;

}

printf("x=%lf\n",x); /* x中记录的是转换后得到的数值*/

}

【实验提示】

只有起始的负号-才能作为负数标志,中间的-只能被看做非法字符,使转换结束。

实验九万年历问题

【实验目的】

学会使用二维数组解决万年历问题。

【实验内容】

已知1900年12月31号是星期一,编写程序,键盘输入1901 ~2300年内任意一个日期,程序输出这一天是星期几。以7_9.c命名本程序。

【实验提示】

1.第四章中有一个实验要求是给出当前日期,求出该日期是本年度中的第几天的程序。大家可以回想以下那个程序中的case语句对应的每一个天数是如何得到的,我们将这个问题用数组来解决。

2.假设我们要求x 年y 月z日是星期几,必须知道两个日期相间隔的天数。

3.使用二维数组来存放每月的天数,第一行存放平年的每月天数;第二行存放闰年的各月天数。

3.普通年份有365天,365%7=1;所以求总天数时可以不必将年份差×365天。【讨论与思考】

既然是万年历问题,就应能测任一日期。如果要求能够测任何一日期(1900年之前和之后的任何一天)为周几,本题应如何处理?注意前推和后推的方法有所不同。

习题

1.定义如下变量和数组:

int k ;

int a[3][3]={ 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;

则下面语句的输出结果是()

for(k=0;k<3;k++) printf("%d",a[k][2-k]);

A、357

B、369

C、 159

D、 147

2.执行下面的程序段后,变量k中的值为()

int k=3,s[2];

s[0]=k;k=s[1]*10;

A、不定值

B、33

C、30

D、10

3.设有数组定义:char array [ ]="China";则数组 array所占的空间为()

A、4个字节

B、5个字节

C、6个字节

D、7个字节

4. 如下程序的输出结果是( )

main( )

{ int n[5]={0,0,0},i,k=2;

for(i=0;i

printf("%d\n",n[k]);

}

A、不确定的值

B、2

C、1

D、0

5.有如下程序

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];

printf("%d\n",s);

}

该程序的输出结果是( )

A、18

B、19

C、20

D、21

6.以下程序的输出结果是()

main( )

{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++) printf("%d,",x[i][2-i]);

}

A、1,5,9,

B、1,4,7,

C、3,5,7,

D、3,6,9,

7.当执行下面的程序时,如果输入ABC,则输出结果是()

#include "stdio.h"

#include "string.h"

main( )

{ char ss[10]="1,2,3,4,5";

gets(ss);

strcat(ss,"6789");

printf("%s\n",ss);

}

A、ABC6789

B、ABC67

C、12345ABC6

D、ABC456789 8.以下程序段的输出结果是()

char s[ ]= "\\141\141abc\t";

printf("%d\n",strlen(s));

A、9

B、12

C、13

D、14

9. 下面是对s的初始化,其中不正确的是()

A、char s[5]={“abc”};

B、char s[5]={‘a’,’b’,’c’};

C、char s[5]=“”;

D、char s[5]=”abcde”

10.以下程序的输出结果是____________________

main( )

{char s[ ]="abcdef";

s[3]= '\0';

printf("%s\n",s);

}

11.下列程序段的输出结果是_____________

main( )

{ char b[]="Hello,you";

b[5]=0;

printf("%s \n", b );

}

12.在C语言中,二维数组元素在内存中的存放顺序是_____________

13.设有定义语句“ int a[3][4]={{1},{2},{3}} ” ,则a[1][1]值为_____________,

a[2][1]的值为_____________

14.若在程序中用到“putchar() ”函数时,应在程序开头写上包含命令

_____________,若在程序中用到“ strlen() ”函数时,应在程序开头写上包含命令_____________

15.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{ int k,p;

int s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if (s[p]>s[k]) _____________ ;

printf("%d\n",k);

}

16.以下程序执行时输入Language Programming的结果是_____________

#include

main()

{ char str[30];

scanf("%s",str);

printf("str=%s\n",str); }

17. 以下程序可把输入的十进制长整型数以十六进制数的形式输出,请填空。

main()

{ char b[17]={"0123456789ABCDEF"};

int c[64],d,i=0,base=16;

long n;

printf("Enter a number:\n");

scanf("%1d",&n);

do{c[i]= _____________;

i++;

n=n/base;

}while(n!=0);

printf("Transmite new base:\n");

for (--i;i>=0;--i)

{d=c[i];

printf("%c",b[ ____________ ];

}

}

18.以下数组定义中,错误的是()

A、 int a[]={1,2,3};

B、 int a[5]={1,2,3};

C、 int a[3]={1,2,3,4};

D、 int a[5],b;

19.以下数组定义中,正确的是()

A、 int n=4,a[n]={1,2,3,4};

B、 int a[][2]={1,2,3,4};

C、 int a[2][]={1,2,3,4};

D、int a[][]={{1,2},{3,4}};

20.设有如下定义:int a[8][10];在C中一个整数占用4字节,设a的起始地址为1000,

则a[1][1]的地址是()

A、 1000

B、 1004

C、 1036

D、 1044

21.有数组定义:int a[ ][3]={1,2,3,4,5,6,7,8,9},则a[1][2]的值是()

A、 2

B、 5

C、 6

D、 8

22.设已定义char str[6]={'a','b','\0','c','d','\0'}; 执行语句

printf(("%s",str)后,输出结果为()

A、 a

B、 ab

C、 abcd

D、 ab\0cd\0

23.引用数组元素时,数组元素下标不可以是()

A、字符常量

B、整型变量

C、字符串

D、算术表达式

24.下面程序段的运行结果是()

void main()

{char a[]="abcd",b[]="123";

strcpy(a,b);

printf("%s\n",a);

}

A、 123

B、 123d

C、 abcd

D、 abcd123

25.下面程序段的运行结果是()

void main()

{char a[]="123",b[]="abcd";

if(a>b) printf("%s\n",a);

else printf("%s\n",b);

}

A、 123

B、编译时出错

C、 abcd

D、运行时出错

Java集合类知识点总结

Java集合类 Java集合类 (1) 1.Map (3) 1.1.HashMap (3) 1.1.1.底层实现 (3) 1.1.2.特点 (3) 1.1.3.源码分析 (4) 1.1.4.多线程可能出现的问题 (5) 1.2.ConcurrentHashMap (6) 1.2.1.底层实现 (6) 1.2.2.源码分析 (7) 1.3.HashTable (9) 1.3.1.HashTable是线程安全的,因为所有方法上都加了synchronized关键 字。9 1.3.2.HashTable的key和value都不可以为null。 (9) 1.3.3.扩容时,capacity=2*capacity+1 (9) 1.3.4.数组默认大小为11 (9) 1.3.5.查找下标时,没有使用hash&length-1,而是直接进行计算的 (9) 1.4.TreeMap (9) 1.4.1.底层实现为红黑树 (9) 1.4. 2.TreeMap是一个有序的key-value集合,基于红黑树实现。该映射根据 其键的自然顺序进行排序,或者根据创建时提供的Comparator进行排序 (10) 1.4.3.接口实现 (10) 1.4.4.Entry (11) 1.5.LinkedHashMap (11) 1.5.1.底层是数组+链表+红黑树+双向链表 (11) 1.5.2.维护链表顺序和访问顺序 (11) 1.5.3.LinkedHashMap 可以通过构造参数 accessOrder 来指定双向链表是否在 元素被访问后改变其在双向链表中的位置。 (11) 1.5.4.当accessOrder为true时,get方法和put方法都会调用recordAccess 方法使得最近使用的Entry移到双向链表的末尾;当accessOrder为默认值 false时,recordAccess方法什么也不会做。 (11) 1.5.5.LRU实现 (11) 2.Collection (11) 2.1.List (12) 2.1.1.ArrayList (12) 2.1.2.LinkedList (13) 2.1.3.CopyOnWriteArrayList (13) 2.2.Set (14) 2.2.1.HashSet (14)

C语言练习3(数组)=参考答案

C语言(数组) 一、选择题 1. 设有程序: main() { int i,a[11]; printf("给数组赋值:\n"); for (i=0;i<=10;i++) scanf("%d",( )); ... ... printf("输出数组:\n"); for(i=0;i<=10;i++) printf("%d,",( )); } 则在程序中的两个园括号中分别应填入:C A) &a[i]和&a[i] B) a[i]和&a[i] C) &a[i]和a[i] D) a[i]和a[i] 2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ). A) 15 B) 16 C) 30 D) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;i

return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 以上程序的输出结果是( D ). A) 720 B) 6 C)24 D) 120 5. 以下定义语句中,错误的是( B ). A) int a[ ] = {6,7,8}; B) int n=5, a[n]; C) char a[ ]= "string"; D) char a[5 ]={'0','1','2','3','4'}; 6. 以下描述中正确的是( D ). A) 数组名后面的常量表达式用一对圆括弧括起来 B) 数组下标从1开始 C) 数组下标的数据类型可以是整型或实型 D) 数组名的规定与变量名相同 7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ). A) scanf("%c",a[0]); B) scanf("%s",&a); C) printf("%c",a[3]); D) printf("%s",a); 8.若定义数组int a[10] ,其最后一个数组元素为( C ). A) a[0] B) a[1] C) a[9] D) a[10] 9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )? A) a[8] 的值为0 B) a[1] 的值为1 C) a[3] 的值为4 D) a[9] 的值为0 10. 指出以下错误语句( A ).

第六章数组习题答案

第六章数组习题答案 一、单项选择题 1. C语言中,一维数组下标的最小值是(B )。 A)1 B) 0 C) 视说明语句而定D) 无固定下限 2. 若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是( B )。A)a[0][4] B) a[1][3] C) a[0][3] D) a[1][4] 3. 设有数组定义:char str[ ]=”China0”,则数组str所占的空间为( D )字节。 A)4个B) 5个C) 6个D) 7个 4. 若有定义语句:char str[ ]=”ab\n\012\\\n”; 则执行语句:printf(“%d”,strlen(str));后,输出结果是( A )。 A)3 B) 4 C) 6 D) 12 5. 下列描述中不正确的是( C )。 A)字符型数组中可以存放字符串 B)可以对字符型数组进行整体输入、输出 C)可以对整型数组进行整体输入、输出 D)不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值 6. 当用户要求输入的字符串中含有空格时,应使用的输入函数是( C )。 A)scanf( ) B)getchar( ) C) gets( ) D) getc( ) 7. 有以下程序 #include main( ) { int i,x[3][2]={0}; for(i=0;i<3;i++) scanf(“%d”,x[i]); printf(“%3d%3d%3d\n”,x[0][0], x[0][1], x[1][0]); } 程序运行后的输出结果是()。 A)2 0 0 B) 2 0 4 C) 2 4 0 D) 2 4 6 8. 有以下程序 #include #include main( ) { 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)); } 程序运行后的输出结果是( C )。 A)20 9 B) 9 9 C) 20 11 D) 11 11 9. 有以下程序 #include #include main( )

第7章数组课后作业

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。编写程序,让用户输入一个整数,判断该整数在不在该数列中。运行效果如下图所示:

java集合类总结

1.本讲内容:集合collection (数组和集合90%功能相似,但是最大的区别是,数组在初始化的时候必须确定大小,而集合不用,而且集合是一堆的类,使用起来非常方便。) 讲集合collection之前,我们先分清三个概念: 1colection 集合,可用来存储任何对象的一种数据结构(容器)。 2Collection 集合接口,指的是,是Set、List 和Queue 接口的超类接口 3Collections 集合工具类,指的是类。 SCJP考试要求了解的接口有:Collection , Set , SortedSet , List , Map , SortedMap , Queue , NavigableSet , NavigableMap, 还有一个Iterator 接口也是必须了解的。 SCJP考试要求了解的类有:HashMap , Hashtable ,TreeMap , LinkedHashMap , HashSet , LinkedHashSet ,TreeSet , ArrayList , Vector , LinkedList , PriorityQueuee , Collections , Arrays 下面给出一个集合之间的关系图: 上图中加粗线的ArrayList 和HashMap 是我们重点讲解的对象。下面这张图看起来层级结构更清晰些。 我们这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。 4List 关注事物的索引列表 5Set 关注事物的唯一性 6Queue 关注事物被处理时的顺序 7Map 关注事物的映射和键值的唯一性 一、Collection 接口 Collection接口是Set 、List 和Queue 接口的父接口,提供了多数集合常用的方法声明,包括add()、remove()、contains() 、size() 、iterator() 等。 add(E e) 将指定对象添加到集合中 remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase size() 返回集合中存放的对象的个数。返回值为int clear() 移除该集合中的所有对象,清空该集合。 iterator() 返回一个包含所有对象的iterator对象,用来循环遍历 toArray() 返回一个包含所有对象的数组,类型是Object toArray(T[] t) 返回一个包含所有对象的指定类型的数组 我们在这里只举一个把集合转成数组的例子,因为Collection本身是个接口所以,我们用它的实现类ArrayList做这个例子:例子1: package edu.xjfu;

Java中的集合类

Java中的集合类 (Collection framework)我们在前面学习过java数组,java数组的程度是固定的,在同一个数组中只能存放相同的类型数据。数组可以存放基本类型的数据,也可以存入对象引用的数据。 在创建数组时,必须明确指定数组的长度,数组一旦创建,其长度就不能改变,在许多应用的场合,一组数据的数目不是固定的,比如一个单位的员工数目是变化的,有老的员工跳槽,也有新的员工进来。 为了使程序方便地存储和操纵数目不固定的一组数据,JDK中提供了java集合类,所有java集合类都位于java.util包中,与java数组不同,java集合类不能存放基本数据类型数据,而只能存放对象的引用。 Java集合类分为三种 Set(集合):集合中对象不按特定的方式排序。并且没有重复对象,但它有些实现类中的对象按特定方式排序。--无序,不能重复 List(列表):集合中的对象按照检索位置排序,可以有重复对象,允许按照对象在集中的索引位置检索对象,List和数组有些相似。--有序,可以重复 Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复,它的有些实现类能对集合中的键对象进行排序。 Java的主要集合类的框架图 Collection和Iterator接口 在Collection接口中声明了适用于java集合(只包括Set和List)通用方法。 Collection接口的方法 方法描述

boolean add(Object o) 向集合中加入一个对象的引用 void clear( ) 删除集合中所有对象,即不再对持有对象的引用boolean contains(Object o) 判断在集合中是否含有特定对象的引用 boolean isEmpty() 判断集合是否为空 Iterator iterator( ) 返回一个Iterator对象,可用它来遍历集合中的元素boolean remove(Object o) 从集合中删除一个对象的引用 int size( ) 返回集合中元素的数目 Object [ ] toArray() 返回一个数组,该数组包含集合中的所有元素 Set接口和List即可都继承了Collection接口,而Map接口没有继承Collection接口,因此可以对Set对象和List对象调用以上方法,但是不能对Map对象调用以上方法。Collection接口的iterator()和toArray()方法多用于获得集合中的所有元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组。 Iterator隐藏底层集合的数据结构,向客户程序提供了遍历各种类型的集合的统一接口。Iterator接口中声明了如下方法: ●hasNext():判断集合中的元素是否遍历完毕,如果没有,就返回true。 ●next():返回下一个元素 ●remove():从集合中删除上一个由next()方法返回的元素。 注意:如果集合中的元素没有排序,Iterator遍历集合中元素的顺序是任意的,并不一定与像集合中加入的元素的顺序一致。 Set(集) Set是最简单的一种集合,集合中的对象不按特定方式排序,并没有重复对象。Set接口主要有两个实现类:HashSet类还有一个子类LinkedHashSet类,它不仅实现了哈希算法,而且实现了链表数据结构,链表数据结构能提高插入核算出元素的性能。TreeSet类实现了SortedSet接口中,具有排序功能。 List(列表) List的主要特征使其元素已先行方式存储,集合中允许存放重复对象。List接口主要的实现类包括: ●ArrayList—ArrayList代表长度可变的数组。允许对元素进行快速的随机访问,但是向 ArrayList中插入与删除元素的速度较慢。 ●LinkedList—在实现中采用链表数据结构。对顺序访问进行了优化,向List中插入和 删除元素的速度较快,随机访问速度则相对较慢,随机访问是指检索位于特定索引位置元素。 Map(映射) Map(映射)是一种吧键对和值对象进行映射的集合。它的每一个元素都包含一对键对象和值对象,而之对象仍可以是Map类型。以此类推,这样就形成了多级映射。向Map集合中加入元素时,必须提供一对键对象和值对象,从Map集合上检索元素只要给出键对象,就会返回值对象。 实例1 CollectionAll.java

数组练习题及答案

第五章数组练习题及答案 一、选择题 1、判断字符串a和b是否相等,应当使用() A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b)) 2、以下正确的定义语句是() A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 3、以下各组选项中,均能正确定义二维实型数组a的选项是() A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}}; B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}}; C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}}; D、float a[3][4]; float a[3][ ]; float a[ ][4]; 4、下面程序的运行结果是() 1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB 21—25 BBAAA 26—30 DBDDB #include "stdio.h" main() { char str[]="SSSWLIA",c; int k; for(k=2;((c=str[k])!='\0');k++) { switch(c) {case 'I':++k;break; case 'L':continue; default:putchar(c);continue; } putchar('*'); } } A、SSW* B、SW* C、SW*A D、SW 5、下面程序段是输出两个字符串中对应相等的字符。横线处应填入() char x[]="programming"; char y[]="Fortran"; int i=0; while(x[i]!='\0'&&y[i]!='\0')

vb课后练习答案习题解答 (5)

第5章数组与记录 5.1 填空题 1.若要定义一个包含10个字符串元素,且下界为1的一维数组s,则数组说明语句为()。 答案:Dim s(1 To 10) As String 2.若要定义一个元素为整型数据的二维数组a,且第一维的下标从0到5,第二维下标从-3到6,则数组说明语句为()。 答案:Dim a(0 To 5,-3 To 6) As Integer 3.如果数组元素的下标值为实数,则VB系统会按()进行处理。 答案:四舍五入原则 4.数组元素个数可以改变的数组称为();数组元素可以存放不同类型数据的数组称为()。 答案:可调数组、可变类型数组 5.数组刷新语句用于()。若被刷新的数组是数值数组,则把所有元素置();若被刷新的数组为字符串数组,则把所有元素置()。 答案:清除指定数组内容、0、空字符串 10.控件数组是由一组类型和()相同的控件组成,共享()。 答案:名字、同一个事件过程 11.控件数组中的每一个控件都有唯一的下标,下标值由()属性指定。 答案:Index 12.建立控件数组有两种方法:()和()。 答案:在设计阶段通过相同Name属性值来建立、在程序代码中使用Load方法 5.2 选择题 1.下列一维数组说明语句错误的是()。 a) Dim b(100) AS Double b) Dim b(-5 To 0) AS Byte c) Dim b(-10 To –20) AS Integer d) Dim b(5 To 5) AS String 答案:c 2.若有数组说明语句为:Dim a(-3 To 8),则数组a包含元素的个数是()。 a) 5 b) 8 c) 11 d) 12 答案:d 3.设有数组说明语句:Dim c(1 To 10),则下面表示数组c的元素选项中()是错误的。 a) c(i-1) b) c(5+0.5) c) c(0) d) c(10) 答案:c 4.下列数组说明语句中正确的是()。 a) Dim a(-1 To 5,8)AS String b) Dim a(n,n)AS Integer c) Dim a(0 To 8,5 To –1)AS Single d) Dim a(10,-10)AS Double

Java中集合类用法总结

帮助 | 留言交? | 登录 首页我的图书馆主题阅读精彩目录精品文苑Tags 会员浏览好书推荐 以文找文 如何对文章标记,添加批注? Java 中集合?用法总结(转载) wade0564 收录于2010-07-08 阅读数:查看 收藏数:7 公众公开 原文来源 tags : java 集合类 欢迎浏览 wade0564 个人图书馆中收藏的文章,想收藏这篇好文章吗,赶快 吧,1分钟拥有自己的个人图书馆! 我也要收藏 举报 Java 中集合?用法总结 收藏 Collection ├List │├LinkedList │├ArrayList (异步,线程不安全,空间用完时自动增长原容量一半)│└Vector (同 步,线程安全,空间用完时自动增长原容量一倍)│ └Stack └Set ├HashSet └TreeSet Map ├Hashtable ├HashMap ├WeakHashMap └TreeMap Map 接口: | + -- WeakHashMap: 以弱键 实现的基于哈希表的 Map 。在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条 | 目。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为 可终止的,被终 | 止,然后被回收。丢弃某个键时, 其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。此实现 | 不是同步的。 | + -- TreeMap:该映射根据其键的自然顺序进行 排序,或?根据创建映射时提供的 Comparator 进行 排序,具体取决于使用的 | 构造方法。此实现不是同步的。 | + -- HashMap:基于哈希表的 Map 接?的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了 | 非同步和允许 使用 null 之外,HashMap 类与 Hashtable ?致相同。)此类不保证映射的顺序,特别是它不保证该顺 | 序恒久不变。此实现不是同步的。 | +-- SortedMap: 进一步提供关于键的总体排序 的 Map 。该映射是根据其键的自然顺序进 行排序的,或?根据通常在创建有 序映射时提供的 Comparator 进行排序。对有序映射的 collection 视图(由 entrySet 、keySet 和 values 方法返回 )进行迭代时,此顺序就会反映 出来。要采用此排序方式,还需要提供一些其他操作(此接?是 SortedSet 的对应映 射)。 Collection 接口: | 热点推荐 中国经典汤品——广东汤常用多音字汇总 如果你失恋。。。这些话...影响世界的100个管理定律汽车发动机?作过程和原理分析温家宝总理答中外记?问女人味,有多少男人可以读懂?珍稀的白头叶猴(组图)三鹿门事件之——中国,...国家公务员职务与级别当代古筝四美 付娜《渔...生活?秘方 真的很实用...哲理?品:守护梦想聚会时可以玩的?游戏依赖型人格障碍的表现和治疗经典妙语,十分精彩江边施救[贴图]李一男2003年在港湾...电脑速度慢的解决方法 ...重装系统后必须做的10件?事

Java数组练习题(带答案)

一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length 。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是_B__ A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____ A. float b[2][2]={0.1,0.2,0.3,0.4}; B. int a[][]={{1,2},{3,4}}; C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D___ A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B. 25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__ A. char str[5]="hello"; B. char str[]={'h','e','l','l','o','\0'}; C. char str[5]={"hi"}; D. char str[100]=""; 7.数组在Java中储存在 C 中 A. 栈 B. 队列 C. 堆 D. 链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B. 4 C. 5 D. 6 9.下面程序的运行结果是_C___ main() {

数组课后作业

1、判断一个数组{1,2,3,1,0}中是否存在相同的元素,如果存在相同的元素则输出“重复”,否则输出“不重复”。 2、编写一个程序,求出整数数组中最小元素和最大元素的下标,如果这样的元素个数不止一个,则返回最小的数的下标和最大的数的下标。 3、现在有如下一个数组:int oldArr[]={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、编写程序,定义数组int a[4][6],b[4][6],c[4][6],并完成如下操作: (1)从键盘上输入数据给数组a,b; (2)将数组a与数组b各对应元素作比较,如果相等,则数组c的对应元素为0,若前者大于后者,则数组c的对应元素为1;若前者小于后者,则数组c的对应元素为-1; (3)输出数组c各元素的值。 8、读以下程序并注释,并分析运行结果。 (1) #include int main() { int a[10],t,av,sum=0,i,j; for(i=0;i<10;i++) scanf("%d",&a[i]);

数组的综合应用例子

数组的综合应用例子 时间:2009-6-19 8:54:45 点击:1409 数组的综合应用 为了加深对数组的理解,下面结合一些常用算法的编程来更加深入地学习和使用数组。由于一维数组和二维数组是程序设计中最常用的数组形式,因此这里的举例均为一维和二维数组。 1.数组元素的输入和输出 [例5-12] 由用户输入5个数组元素的值并把它们输出在窗体上。 Option Explicit Private Sub Command1_Click() Dim a(1 To 5) As Integer, i As Integer For i=1 To 5 a(i)=InputBox("请输入第" & Str(i) & "个元素") Next For i=1 To 5 Print "a (";i; ")="; a(i) Next End Sub 程序运行后,单击命令按钮,执行事件过程Command1_Click。若输入5个值10,20,30,40,50,则窗体上显示的输出结果是: a(1)=10 a(2)=20 a(3)=30 a(4)=40 a(5)=50 程序中声明了一个具有5个元素的一维整型数组,分别用循环语句输入、输出数组元素的值。在循环体内,数组元素用循环控制变量i作下标,i值的不同就表示数组元素的不同。在程序中引用数组元素时,其下标可以使用表达式。只要表达式的结果不超出数组定义的上界和下界范围,下标表达式就是合法的。例如本例中,若i=2,则: a(i+1)的值为30; a(a(i+3)\10)的值为50。 下标表达式的值还可以是实数,此时VB将自动对其进行四舍五入取整。例如: a(1+0.4)的值是10; a(2+0.5)的值30。 2.数组元素插入删除

JAVA中的集合类

为什么要使用集合类 当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。 理解集合类 集合类存放于java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。 (1)集 集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。 对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。 集也有多种变体,可以实现排序等功能,如TreeSet,它把对象添加到集中的操作将变为按照某种比较规则将其插入到有序的对象序列中。它实现的是SortedSet接口,也就是加入了对象比较的方法。通过对集中的对象迭代,我们可以得到一个升序的对象集合。(2)列表 列表的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序的集是不同的。 列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。关于实现列表的集合类,是我们日常工作中经常用到的,将在后边的

笔记详细介绍。 (3)映射 映射与集或列表有明显区别,映射中每个项都是成对的。映射中存储的每个对象都有一个相关的关键字(Key)对象,关键字决定了对象在映射中的存储位置,检索对象时必须提供相应的关键字,就像在字典中查单词一样。关键字应该是唯一的。 关键字本身并不能决定对象的存储位置,它需要对过一种散列(hashing)技术来处理,产生一个被称作散列码(hash code)的整数值,散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起始位置的,由此确定关键字/对象对的存储位置。理想情况下,散列处理应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。 集合类简介 java.util中共有13个类可用于管理集合对象,它们支持集、列表或映射等集合,以下是这些类的简单介绍 集: HashSet:使用HashMap的一个集的实现。虽然集定义成无序,但必须存在某种方法能相当高效地找到一个对象。使用一个HashMap对象实现集的存储和检索操作是在固定时间内实现的. TreeSet:在集中以升序对对象排序的集的实现。这意味着从一个TreeSet对象获得第一个迭代器将按升序提供对象。TreeSet类使用了一个TreeMap.

C语言数组练习及答案

第四部分数组 4. 1 选择题 1.以下关于数组的描述正确的是(c ) 。 A.数组的大小是固定的,但可以有不同的类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 2.以下对一维整型数组a的正确说明是(d )。 a(10); B. int n=10,a[n]; n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(c)。 A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4.以下对一维数组m进行正确初始化的是(c )。 A.int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5.若有定义:int bb[ 8] ;。则以下表达式中不能代表数组元bb[1] 的地址的是(c ) 。 A.&bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6.假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4}; ,则数组x 在内存中所占字节数是(d ) 。 A. 3 B. 6 C. 10 D. 20 7.若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是(d ) A.a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 8.以下程序段给数组所有的元素输入数据,请选择正确答案填入(a ) #include<> main() { int a[10],i=0; while(i<10) scanf("%d", _______ );

C语言数组练习及答案

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 A.int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 页脚内容1

4. 以下对一维数组m进行正确初始化的是(c )。 A. int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是(c )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是(d ) A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入(a )。 #include main() { int a[10],i=0; while(i<10) scanf("%d",________ ); 页脚内容2

C#基本类型库-集合和数组习题.doc

C#基本类型库?集合和数组 1.以下的C#程序:运行后数组A中的数值为()。 public static void Main() { int[] A=new intf51{ 1,2, 3,4,5 }; Objectf l B = new Object[习{ 6, 7, & 9, 10 }; Array.Copy( A, B、2 ); } a) 1 、2、3、 4、 5 b) 1 、28、 9、 10 c)1 、2、3、 9、 10 d )6 、 7、8、 9、 10 2.以下的C#程序:运行输出为()。 using System; using System.Collections; public class SamplesHashtable { public static void Main() { Hashtable myHT = new Hashtable(); myHT.Add(”A”, ”AA”); myHT.Add(”B”, ”BB“);myHT.Add(”C”,”CC“); Console.WriteLine(myHT.Count); myHT.Remove(” BB“); Console.WriteLine(myHT.Count); 1 } a)3 3 b)3 2 c)2 2 d)运行时错误,提示无效的键值 3.在.Net屮,ArrayList对象位于()命名空间内。 a)System.Array b)System.IO c)System.CoHection d)System.RunTime 4.阅读以下的C#代码: Class Classi Public static void doArr(int[J arr,out int k)

Java数组练习题(带答案)

一填空题 1)数组得元素通过下标来访问,数组Array得长度为 Array、length 。 2)数组复制时,"="将一个数组得引用传递给另一个数组。 3)JVM将数组存储在栈 (堆或栈)中。 4)数组得二分查找法运用得前提条件就是数组已经排序。 5)Java中数组得下标得数据类型就是整型。 6)数组最小得下标就是 0 。 7)arraycopy()得最后一个参数指明复制元素得个数。 8)向方法传递数组参数时,传递得就是数组得引用。 9)数组初始化包括数组得申明,创建与初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组得默认值就是 0、0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误得初始化语句就是_ABD__ A、 char str[]="hello"; B、 char str[100]="hello"; C、 char str[]={'h','e','l','l','o'}; D、 char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误得引用就是_B__ A、 a[0]=1; B、 a[10]=2; C、 a[0]=5*2; D、 a[1]=a[2]*a[0]; 3.下面得二维数组初始化语句中,正确得就是____ A、 float b[2][2]={0、1,0、2,0、3,0、4}; B、 int a[][]={{1,2},{3,4}}; C、 int a[2][]= {{1,2},{3,4}}; D、 float a[2][2]={0}; 4.引用数组元素时,数组下标可以就是_D___ A、整型常量 B、整型变量 C、整型表达式 D、以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前得数组元素个数为____ A、 24 B、 25 C、 18 D、 17 6.下列初始化字符数组得语句中,正确得就是__B__ A、 char str[5]="hello"; B、char str[]={'h','e','l','l','o','\0'}; C、 char str[5]={"hi"}; D、 char str[100]=""; 7.数组在Java中储存在 C 中 A、栈 B、队列 C、堆 D、链表 8.下面程序得运行结果就是____ main() { int a[][]={{1,2,3},{4,5,6}}; System、out、printf("%d", a[1][1]); } A、 3 B、 4 C、 5 D、 6 9.下面程序得运行结果就是_C___

C语言数组实例

一维 数组求平均值 main() {float b,s=0.0,aver,a[6]; int i; for(i=0;i<6;i++) scanf(%f,&a[i]); for(i=0;i<6;i++) s=s+a[i]; aver=s/6.0; printf(%f\n,aver); } 求数组中的最大值 main() {float max,s=0.0,a[6]; int i; for(i=0;i<6;i++) scanf(%f,&a[i]); max=a[0]; for(i=1;i<6;i++) if(maxa[i]) {min=a[i];j=i;} 牰湩晴尨最大最小值分别在:%d,%d\n,k,j); for(i=0;i<5;i++) printf( %f \n,a[i]);

} 查找数组中有无此项 main() {float a[9]={21,12,34,23,54,67,65,13,87}; int s,i; /*for(i=0;i<9;i++) scanf(%f,&a[i]); printf(\ );*/ 牰湩晴尨请输入要查找的数:); scanf(%d,&s); for(i=0;i<9;i++) if(a[i]==s) 灻楲瑮?有此项\n);break;} if(i==9) 牰湩晴尨无此项\n); } 判断是否为回文 main() {char a[100]; int s,d,i; 牰湩晴尨请输入:); gets(a); //输入一个字符串 s=i=0; for(i=0;i<100;i++) if(a[i]=='\0') d=i; d--; for(s=0;s<=d;s++) if(s<=d&&a[s]==a[d]) d--; else break; if(s>d) printf(%s是回文.\n,a); else

相关文档
最新文档