第六章:数组

第六章:数组
第六章:数组

一维数组:

1、定义一个10个元素的整数数组,赋值为1-10,按如下格式输出数组中的全部数据。

a[0]=1 a[1]=2 …………

2、打印出Fibonacci数列:从第3个数开始的每个数的值为前两个数之和。

1 1

2

3 5 8 ……

3、输入10个学生的成绩到一个数组中,查找出最低分数及最高分数,计算出总分以及平

均分,计算出及格人数以及成绩在平均分以上的人数。

4、有一个数组,内放10个整数。要求找出最小的数和它的下标,然后把它和数组中最前

面的元素对换位置,找出最大的数和它的下标,然后把它和数组中最后面的元素对换位置。

5、利用随机函数产生10个1-100随机数,并存入数组中。

注解:产生随机数的方法

1)包含库文件#include "Stdlib.h"

使用用randomize()随机种子函数及随机数生产函数random(101),参数表示范围2)使用用randomize()随机种子函数

随机数生产函数rand (),无参数,产生int数据类型范围内的随机数

6、将数组中所有元素的值向后移动一位,最后一个元素的值移动到第一个元素中;(将数

组中所有元素的值向前移动一位,第一个元素的值移动到最后一个元素中)

7、将数组中元素的值先按原序输出,逆置(第一个与最后一个交换,第二个与倒数第二个

交换,依次类推)后再输出一次;

8、将一个数组中的元素反向复制到另一个数组中,输出这两个数组。

9、编程输入一个小写字母,以该字母为第一个字母按字母表逆序输出字母表中所有小写字

母。(例:输入m ,则输出:mlkjihgfedcbazyxwvutsrqpon)(利用数组或不利用数组两种方式编程)

10、输入一个数,在数组中找到第一个比它大的数,将输入的数据插入到这个数的前面。

11、将两个数组中的元素交叉复制到一个新的数组中。

12、定义一个整数数组,求出奇数和偶数个数

13、有30个0-9之间的数字,分别统计0-9出现的次数

14、用筛选法求100之内的素数

筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。

15、下面的程序从键盘接收任意5个数放入数组A中,假设这5个数为:8 1 4 2 5,则要输

出一个具有如下内容的方阵。

16、十五个猴子围成一圈选大王,依次1-7 循环报数,报到7 的猴子被淘汰,直到最后一

只猴子成为大王。问,哪只猴子最后能成为大王?(有17个人围成一圈(编号为0~16),从第 0号的人开始从 1报数,凡报到 3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。问此人原来的位置是多少号?)

17、有N个数已按由小到大的顺序排好,要求输入一个数,把它插入到原有序列中,而且

仍然保持有序。

18、查找出圆环中(一维数组)中任意四个相邻数之和的最大值,输出起始位置和终止位置

以及这四个数。

19、将一个数组中序号为单和双的分别复制到另外两个数组中。

20、将一个数组中的最大数和第二大数分别找出来。

21、数组中记录有一个单位200职工的年龄,编程统计出各年龄段的人数。

22、将数组中每一个数出现的次数统计出来。

字符串专题:

23、编写程序将字符串中的元音字母输出。例如字符串为“boy and girl”, 则输出为:oai

24、从键盘上任意输入一个字符串S,输出其中的数字字符。例如输入为:sd12we$*55abc8,

则输出结果为:12558

25、统计26个英文字符在一个字符串中出现的次数。

26、将两个字符串连接起来。(连接到第一个字符串的后面,不使用strcat函数)

27、编程:在一字符串中查找某个指定的字符,找到则输出字符第一次出现的位置,未找到

则输出“not found”。

28、判断字符串sub是否是字符串str的子串。

29、将两个字符串合并到一个新的字符串中。

30、删除一个字符串中所有数字字符。(注意删除后字符的移位)

31、统计一个字符串中单词的个数。(以空格作为分隔符)

32、比较三个字符串,将最大的字符串输出。

33、将输入的10个字符串的字符数保存在一个数组中。

排序专题:

34、冒泡排序:

(1)从第一个开始,每相邻两个数进行比较,较小的排前面,大的放后面,第一轮后最大的排最后;第二轮除最后一个数,前面的数按第一轮方式交换,依次类推,完成排序。

(2)将数组中第一个数与后面的每一个数比较,如果较小就交换,第一轮结束后,最小的数在最前面;第二轮从第二个数开始,将第二个数与其后每一个数比较,较小就交换,依次类推,完成排序。

35、对100个100以内的随机数按从大到小的顺序排序,输出所有不重复的数据。(去除重

复数据后输出。)

36、统计一个单位职工的年龄,要求把相同年龄最多的那个年龄找出来(可能有几个这样的

年龄),并统计出现的次数。

37、选择法排序:是对冒泡法排序的改进,在每一轮的比较中找到最小值(或最大值),然

后与最前面的元素进行交换,第二轮排除第一个元素继续上述算法,相对于冒泡排序在于减少了很多不必要的数据交换。

38、利用选择法对100个学生成绩按照从大到小的顺序排序,并统计及格与不及格成绩的人

数、总分、平均分。

39、插入法排序:将10个-50到+50之间的随机数按从小到大的顺序插入到数组中。(插入

法是一种比较直观的排序方法。它首先把数组头两个元素排好序,再依次把后面的元素插入适当的位置。把数组元素插完也就完成了排序)

40、利用插入法将数组a中的所有元素按顺序插入到数组b中(a数组保持不变,b数组排

序),输出两个数组的值。

(shell排序法不常用到,学生自查资料;另外在函数讲解后再学习快速排序法)

二维数组:

41、定义一个五行六列的二维数组,给每一个元素赋值为一个100以内的随机数(赋值为行

号与列号之和),按矩阵形式输出该数组。

42、定义a数组为三行五列,定义b数组为五行三列,将a数组的值转置后赋值给b数组。

按矩阵形式打印出两个数组。

43、将含100个元素的一维数组的值按顺序复制到二维数组中,打印出两个数组出来。

44、查找二维数组中最大值的行号与列号。

45、查找二维数组中每一行的最大值,并求出它们的和。

46、打印杨辉三角形的前10行。

47、打印如下图所示数字方阵:

48、把一个二维实型数组a按照第0列的元素进行排序(由小到大排序,用冒泡法或选择法)。

例如:如果a[i][0]大于a[i+1][0],则i行与i+1行中所有元素都要进行对换。

49、查找二维数组中每一列的最小值,打印出它的位置和值。(扩展:查找二维数组中的鞍

点:一个数在行中是最大的,在列中是最小的)

50、有 N个国家名,要求按字母先后顺序排列(用起泡排序法)后输出。

51、输出“魔方阵(奇数)”。

介绍:

魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。

如3×3的魔方阵:

8 1 6

3 5 7

4 9 2

魔方阵的排列规律如下:

(1)将1放在第一行中间一列;

(2)从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数

减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列);

(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则

2应放在最下一行,列数同样加1;

(4)当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最

后一列,则3应放在第二行第一列;

(5)如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数

放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;

简单图示如下:

填魔术方阵的方法以奇数最为简单,第一个数字放在第一行第一列的正中央,然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示:

数组复习

52、从键盘输入若干个整数,其值在0至4范围内,用-1作为输入结束的标志。统计每个

整数的个数。

53、定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每

五个数求出一个平均值,放在另一个数组中并输出。

54、通过赋初值按行顺序为一个二维数组赋予2、4、6、...等偶数,然后按列的顺序输出该

数组。

55、通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后分别输出该数组

的左下半三角、右上半三角、对角线、最外圈数值。

56、数组a包括10个整数,把a中所有的后项除以前项之商保留2位小数存入数组b,并

按每行3个元素的格式输出数组b。

57、从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a

中;如果b的长度小于5,则把b的所有元素都连接到a中。

58、若输入7 4 8 9 1 5,则输出:

5 7 4 8 9 1

1 5 7 4 8 9

9 1 5 7 4 8

8 9 1 5 7 4

4 8 9 1

5 7

7 4 8 9 1 5

59、把两个已按升序排列的数组合并成一个升序数组

60、编程打印用户指定的n阶顺时针螺旋方阵(n<10)。

61、生成并打印某数列的前20项,该数列第1,2项分别为0和1,以后每个奇数编号的项是前

两项之和,偶数编号的项是前两项差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。

参考答案

第9题:

第13题:

#include "Stdlib.h"

int main(void)

{

int a[30],b[10]={0},i;

randomize();

for(i=0;i<30;i++){

a[i]=random(10);

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

}

for(i=0;i<30;i++){ b[a[i]]++; }

for(i=0;i<10;i++) { printf("\n%d : %d", i ,b[i]); } getch();

}

第14题:

int main(void)

{

int a[100]={0},i,j,t;

for(i=1;i<100;i++) {

a[i]=i+1;

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

}

for(i=0;i<100;i++) {

if(a[i]!=0) {

t=a[i];

for(j=i+1;j<100;j++) {

if(a[j]%t==0)

a[j]=0;

}

}

}

printf("\n");

for(i=0;i<100;i++) {

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

}

getch();

return 0;

}

第16题:

int main(void)

{

int a[15],i,j,count,del=0;

for(i=0;i<15;i++) {

a[i]=i+1;

}

i=0;count=0;

while(del!=14) {

if(a[i]!=0) {

count++;

if(count%7==0)

{a[i]=0;del++;}

}

i++;

if(i>14) i=0;

}

for(j=0;j<15;j++)

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

getch();

return 0;

}

第28题:

int main(void)

{

char str[100],sub[50];

int i,j,len;

printf("input str:");

gets(str);

printf("input sub:");

gets(sub);

len=strlen(sub);

i=0;

while(str[i]!='\0')

{

if(str[i]==sub[0])

{

j=0;

while(sub[j]!='\0')

{

if(sub[j]!=str[i+j])

break;

j++;

}

}

if(j==len)

{

printf("yes,from:%d\n");

break;

}

i++;

}

if(str[i]=='\0')

printf("not\n");

getch();

return 0;

}

第30题:

main()

{

char a[100];

int i,j;

gets(a);

i=0;

while(a[i]!='\0')

{

if(a[i]>=48&&a[i]<=57)

{

j=i;

while(a[j]!='\0')

{

a[j]=a[j+1];

j++;

}

i--;

}

i++;

}

puts(a);

getch();

}

第34题:

方法一:

int main(void)

{

int a[10];

int i,j,t;

printf("input 10 numbers :\n");

for (i=0;i<10;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=0;j<9;j++)

for(i=0;i<9-j;i++)

if (a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf("the sorted numbers :\n");

for(i=0;i<10;i++)

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

printf("\n");

getch();

return 0;

}

方法二:

int main(void)

{

int a[10];

int i,j,t;

printf("input 10 numbers :\n");

for (i=0;i<10;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=0;j<10;j++)

for(i=j;i<10;i++)

if (a[j]>a[i])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

printf("the sorted numbers :\n");

for(i=0;i<10;i++)

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

printf("\n");

getch();

return 0;

}

第36题:

#include "stdlib.h"

int main(void)

{

int a[100]={0},i,j,t,count,curr,max;

randomize();

for(i=0;i<100;i++)

{

a[i]=random(40)+20;

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

}

for(i=0;i<100;i++)

{

for(j=0;j<100-i;j++)

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("\n\n");

for(i=0;i<100;i++)

{

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

}

t=a[0];

count=0;max=0;

for(i=0;i<100;i++)

{

if(a[i]==t)

{

count++;

}

else

{

if(count>max)

{ max=count; curr=a[i-1];}

t=a[i];

count=1;

}

}

printf("\n\n");

printf("numbers of %d: %d",curr,max); getch();

return 0;

}

第37题:

#include "stdlib.h"

int main(void)

{

int a[20],i,j,k,t;

randomize();

for(i=0;i<20;i++)

{

a[i]=random(100);

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

}

for(i=0;i<20;i++)

{

k=i;

for(j=i;j<20;j++)

{

if(a[j]

k=j;

}

if(k!=i)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

printf("\n");

for(t=0;t<20;t++)

{

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

}

getch();

}

第39题:

#include "Stdlib.h"

int main(void)

{

int a[10]={0},i,j,k,t,ran;

randomize();

for(i=0;i<10;i++){

ran=random(101)-50;

printf("%d ",ran);

j=i-1;

while(j>=0&&ran

/*从a[i-1]开始找比a[i]小的数,同时把数组元素向后移*/

a[j+1]=a[j];

j--;

}

a[j+1]=ran;/*插入*/

}

printf("\n");

for(i=0;i<10;i++)

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

getch();

return 0;

}

第47题:

(图一)

int main(void)

{

int a[7][7]={0},i,j;

for(i=0;i<7;i++)

{

for(j=0;j<=7;j++)

{

if(j==i||i+j==6)

a[i][j]=1;

else if(j>i&&i+j<6)

a[i][j]=2;

else if(j>i&&i+j>6)

a[i][j]=3;

else if(j6)

a[i][j]=4;

else if(j

a[i][j]=5;

}

}

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

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

printf("\n");

}

getch();

return 0;

}

(图二)

方法一:

int main(void)

{

int a[7][7]={0},i,j;

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

{

if(i==0||i==6||j==0||j==6)

a[i][j]=1;

else if(i==1||i==5||j==1||j==5)

a[i][j]=2;

else if(i==2||i==4||j==2||j==4)

a[i][j]=3;

else

a[i][j]=4;

}

}

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

{

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

}

printf("\n");

}

getch();

return 0;

}

方法二:

#include "math.h"

int main(void)

{

int a[7][7]={0},i,j,x,y,mid=7/2;

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

{

x=abs(i-mid);

y=abs(j-mid);

a[i][j]=(mid+1)-(x>y?x:y);

}

}

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

{

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

}

printf("\n");

}

getch();

return 0;

}

(图三)

int main(void)

{

int a[7][7]={0},i,j;

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

{

a[i][j]=i+j>6?12-(i+j):i+j;

}

}

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

{

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

}

printf("\n");

}

getch();

return 0;

}

第48题:

#include "stdlib.h"

#define N1 10

#define N2 5

int main(void)

{

int a[N1][N2],i,j,x,y,t,min;

randomize();

for(i=0;i

{

for(j=0;j

{

a[i][j]=random(500);

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

}

printf("\n");

}

for(i=0;i

{

min=a[i][0];

x=i;

for(j=i;j

{

if(a[j][0]

{

min=a[j][0];

x=j;

}

}

if(x!=i)

{

for(y=0;y

{

t=a[i][y];

a[i][y]=a[x][y];

a[x][y]=t;

}

}

}

printf("\n");

for(i=0;i

{

for(j=0;j

{

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

}

printf("\n");

}

getch();

return 0;

}

第49题:

#include "stdlib.h"

#define N1 10

#define N2 10

int main(void)

{

int a[N1][N2],i,j,x,y,t,min;

randomize();

for(i=0;i

{

for(j=0;j

{

a[i][j]=random(500);

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

}

printf("\n");

}

printf("\n");

x=0;y=0;

for(i=0;i

{

min=a[0][i];

for(j=0;j

{

if(a[j][i]

{

min=a[j][i];

x=j;y=i;

}

}

printf("a[%d][%d]=%d\n",x,y,min);

}

getch();

return 0;

}

第51题:

#define N 7

int main(void) {

int i, j, key;

int square[N+1][N+1] = {0};

i = 0;

j = (N+1) / 2;

for(key = 1; key <= N*N; key++) {

if((key % N) == 1)

i++;

else {

i--;

j++;

}

if(i == 0)

i = N;

if(j > N)

j = 1;

square[i][j] = key;

}

for(i = 1; i <= N; i++) {

for(j = 1; j <= N; j++)

printf("%2d ", square[i][j]);

printf("\n");

}

getch();

return 0;

}

第59题:

main()

{

int a[5]={1,5,10,15,20},b[10]={2,4,7,11,14,16,17,21,24,31};

int c[15]={0},i=0,j=0,k=0;

while(i<5&&j<10) {

if(a[i]

c[k++]=a[i++];

} else {

c[k++]=b[j++];

}

}

while(i<5) {

c[k++]=a[i++];

}

while(j<10) {

c[k++]=b[j++];

}

for(i=0;i<15;i++) printf("%d ",c[i]);

getch();

}

第60题:

main()

{int a[10][10],i,j,k=0,m,n;

printf("Enter n(n<10):\n");

scanf("%d",&n);

if(n%2==0)

m=n/2;

else

m=n/2+1;

for(i=0;i

{for(j=i;j

{k++;a[i][j]=k;}

for(j=i+1;j

{k++;a[j][n-i-1]=k;}

for(j=n-i-2;j>=i;j--)

{k++;a[n-i-1][j]=k;}

for(j=n-i-2;j>=i+1;j--)

{k++;a[j][i]=k;}

}

for(i=0;i

{for(j=0;j

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

printf("\n");

}

getch();

}

方法二:顺时针螺旋方阵

#include

int a[20][20];

void main()

{

int n,x=0,y=0,mark=0;

int i,j;

scanf("%d",&n);

for(i=0;i

for(j=0;j

a[i][j]=0;

mark=a[x][y]=1;

while(mark

{

while(x+1

while(y+1=0&&!a[x-1][y]) a[--x][y]=++mark;//向上

while(y-1>=0&&!a[x][y-1]) a[x][--y]=++mark;//向左}

for(i=0;i

{

for(j=0;j

{

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

}

printf("\n");

}

}

使用Arrays类操作Java中的数组

使用Arrays类操作Java中的数组 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~)。Arrays 中常用的方法: 1、排序 语法:Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sor t( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如:

运行结果: 2、将数组转换为字符串 语法:Arrays.toString(数组名); 可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开,如: 运行结果为: 输出数组nums中的元素:[25,7,126,53,14,86] Arrays 类还提供了许多其他方法来操作数组此处就不一一列举啦,各位小伙伴们可以在 wiki 查阅更多信息 任务

亲, Arrays 类的使用您掌握了嘛,让我们来检验一下吧。 在编辑器中定义了一个数组 hobbies,请在第2、11、14 行中将代码填写完整,实现使用 Arrays 类对数组进行排序并转换输出。运行结果为:[ game , movie , sports ] ?不会了怎么办 1. 导入 Arrays 类使用 import java.util.Arrays; 2. 使用 Arrays 类的 sort( ) 方法排序Arrays.sort(hobby s); 3. 使用 Arrays 类的 toString( ) 方法将数组转换为字符串 Ar rays.toString(hobbys);

VB数组的基本操作专项

数组的基本操作专项 1.下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~ y(4)各元素的值分别为“4,1,2,3”。 s = Text1.Text:n = Len(s) For i = 1 To n y(i) = 1 Next i For i = 1 To (1) For j = (2) To n If (3) Then y(j) = y(j) + 1 Else y(i) = y(i) + 1 End If Next j Next i 上述程序段3各方框处的表达式分别为() A. (1)n (2)1 (3)Mid(s, j, 1) >= Mid(s, i, 1) B. (1)n (2)1 (3)Mid(s, j, 1) > Mid(s, i, 1) C. (1)n-1 (2)i+1 (3)Mid(s, j, 1) >= Mid(s, i, 1) D. (1)n-1 (2)i+1 (3)Mid(s, j, 1) > Mid(s, i, 1) 2. 有如下VB程序段: inS = Text1.Text n = 0 For i = 1 To Len(inS) m=0 c = Mid(inS, i, 1) If c >= "a" And c <= "z" Then m = 1 ElseIf c >= "A" And c <= "Z" Then m = 2 ElseIf c >= "0" And c <= "9" Then m = 3 End If b(m) = b(m) + 1 If b(m) = 2 Then n = n + 1 Next i 已知数组b各元素初始值都为0,文本框Text1中的内容为“Welcome,2019!”,执行该程序段后,变量n的值为 A.0 B.1 C.2 D.3 3. 有如下 VB 程序段: For i = 2 To 8 For j = 1 To 8 - i If d(j) > d(j + 2) Then temp = d(j): d(j) = d(j + 2): d(j + 2) = temp Next j Next i 数组元素d(1)到d(8)的值依次为“71,54,58,29,31,78,2,77”,经过该程序段

C语言一维数组的基本操作

一.插入:C语言数组怎么插入一个元素#include #include #define MAX 40 void insert(int*p,int n,int m) { int i,k; for(i=0;i=m) { k=i; break; } for(i=n-1;i>=k;i--) p[i+1]=p[i]; printf("%d\n",k); p[k]=m; } void sort(int*p,int n) { int i,j; for(i=1;ip[j+1]) { int t; t=p[j+1]; p[j+1]=p[j]; p[j]=t; } } void main() { int a[MAX]; int n,i,m,d; printf("输入数据个数(n<40):"); d=scanf("%d",&n); while(d!=1&&n>=40) { system("cls"); f flush(stdin); printf("请重新输入:"); scanf("%d",&n); } printf("请输入数组元素:");

for(i=0;i #define N 10 void main( ) { int a[N] , num ,i , *p , n=N; int j; /*输入N个数到数组a中;*/ for(i=0;i

第六章数组习题答案

第六章数组习题答案 一、单项选择题 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( )

MATLAB数组基本操作

1、向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5] 2)用“:”生成向量 a=J:K 生成的行向量是a=*J,J+1,…,K+ a=J:D:K 生成行向量a=*J,J+D,…,J+m*D+,m=fix((K-J)/D) 3)函数linspace 用来生成数据按等差形式排列的行向量 x=linspace(X1,X2):在X1和X2间生成100个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。 x=linspace(X1,X2,n): 在X1和X2间生成n个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。 4)函数logspace用来生成等比形式排列的行向量 X=logspace(x1,x2) 在x1和x2之间生成50个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2 X=logspace(x1,x2,n) 在x1和x2之间生成n 个对数等分数据的行向量。构成等比数列,数 列的第一项x(1)=10x1,x(n)=10x2 注:向量的的转置:x=(0,5)’ 2、矩阵的创建 1)直接输入:将数据括在[]中,同一行的元素 用空格或逗号隔开,每一行可以用回车或是 分号结束 如:a=[1,2,3;3,4,5],运行后: a = 1 2 3 3 4 5

2)函数eye,生成单位矩阵 eye(n) :生成n*n阶单位E eye(m,n):生成m*n的矩阵E,对角线元素为1,其他为0 eye(size(A)):生成一个矩阵A大小相同的单位矩阵 eye(m,n,classname):对角线上生成的元素是1,数据类型用classname指定。其数据类型可以是:duoble、single、int8、uint8、int16、uint16、int32、uint32 。 3)函数ones 用ones生成全1的矩阵ones(n) : 生成n*n的全1矩阵 ones(m,n) : 生成m*n的全1矩阵 ones(size(A)) : 生成与矩阵A大小相同的全1矩阵 ones(m,n,p,…)生成m*n*p*….的全1的多维矩阵 ones(m,n,…,classname)制定数据类型为 classname 4)函数zeros 函数zeros生成全0矩阵zeros(n):生成n*n的全0矩阵 zeros(m,n:)生成m*n的全0矩阵 zeros(size(A)): 生成与矩阵A大小相同的全0矩阵 zeros (m,n,p,…)生成m*n*p*….的全0的多维矩阵 zeros (m,n,…,classname)指定数据类型为 classname

第六章 数组

第六章数组 一、选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。(0级) A)整型常量B)整型常量或整型表达式 C)整型表达式D)任何类型的表达式 2.以下对一维整型数组a的正确说明是。(0级) A)int a(10); B)int n=10,a[n]; C)int n; scanf(“%d”,&n); int a[n]; D ) #define SIZ E 10 int a[SIZE];以下能对一维数组a进行正确初始化的语句是。(0级) A)int a[10]=(0,0,0,0,0); B)int a[10]={ }; C)int a[ ]={0}; D)int a[10]={10*1}; 4.不是给数组的第一个元素赋值的语句是。(0级) A)int a[2]={1}; B) int a[2]={1*2}; C)int a[2];scanf (“%d”,a);D)a[1]=1; 5.下面程序的运行结果是。(1级) main() {int a[6],i; for(i=1;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%2d",a[i]); } } A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0 6.下列定义正确的是。(1级) A)static int a[]={1,2,3,4,5} B) int b[]={2,5} C) int a(10) D) int 4e[4] 7.若有说明int a[][4]={0,0};则下列叙述不正确的是。(0级) A) 数组a的每个元素都可以得到初值0 B) 二维数组a的第一维的大小为1 C) 因为对二维数组a的第二维大小的值除以初值个数的商为1,故数组a的行数 为1 D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值 8.设有char str[10],下列语句正确的是。(1级) A) scanf("%s",&str); B) printf("%c",str); C) printf("%s",str[0]); D) printf("%s",str); 9.下列说法正确的是。(0级) A) 在C语言中,可以使用动态内存分配技术定义元素个数可变的数组 B) 在C语言中,数组元素的个数可以不确定,允许随机变动

C语言算法锦集(六) 数组常用操作

数组常用算法: 查找: /*线性查找*/ int find(int num,int x[],int key) { int i,m=-1; for(i=0;ikey) high=mid-1; else low=mid+1; } return m; } /*折半查找(递归)*/ int b_search(int x[ ],int low,int high,int key) { int mid; mid=(low+high)/2; if(x[mid]==key) return mid; if(low>=high) return -1; else if(key

k++; return -1; } 分词: /*方法一*/ void fen(char s[][10],char str) { int i,j,k; for(i=0,j=0,k=0;str[i]!=0;i++) if(isalpha(a[i])) s[j][k++]=str[i]; else { s[j][k]=0; k=0; j++; } } } /*方法二*/ #include #include void main() { int i=0,n=0;char s[80],*p; strcpy(s,"It is a book."); for(p=s;p!='\0';p++) if(*p=='') i=0; else if(i==0) {n++;i=1;} printf("%d\n",n); getch(); } 排序: /*插入法排序*/ void sort(int a[],int n) { int i,j,t; for(i=1;i=0&&t

第六章数组

第6章数组 知识要点 数组和记录的概念、分类 数组的声明和记录的定义 数组的使用方法 学习任务 了解数组的概念和分类 理解数组的功能 掌握数组的定义、声明及使用方法 6.1 数组的概念 Visual Basic中的数组和数学中数组的概念基本类似,都是由一批互相联系的、有一定顺序的数据组成的集合。与数学中的数组不同的是,Visual Basic中的数组必须先声明,然后才能在程序中使用。一个数组中的所有数据,称为该数组的数组元素。 6.2 常规数组 常规数组,即大小固定的数组,也就是说常规数组中包含的数组元素的个数不变,它总是保持同样的大小,占有的存储空间当然也就保持不变。 6.2.1 常规数组的声明 语法: {Dim|Static|Public|Global|Private}< 数组名>[类型说明符]([下界] To 上界[,[下界] To 上界] [,...])[As < 类型说明词>] 功能: 声明常规数组的数组名、维数、上下界及其类型。 说明: 1.数组名与变量名命名规则相同。 2.数组元素在上下界内编号是联续的,上下界的范围不超过LONG数据所表示的数 的范围。 例:DIM COUNT(1 TO 15) AS INTEGER :一维整型数组,共有15个元素,即COUNT(1)-COUNT(15) DIM SUM&(10 TO 20): 4.数组元素下界可以省略,默认为0 例:DIM COUNT(15) AS INTEGER :COUNT(0)-COUNT(15)共16个元素。 设置OPTION BASE 1 则数组下标默认值为1。 OPTION BASE 0则数组下标默认值为0。 说明: 1.该语句必须在模块顶部的声明中使用,在数组声明语句之前,只影响本模块中定 义的数组。 2.一个模块中只能出现一次。 3.OPTION BASE 对ARRAY函数不起作用,即ARRAY函数创建的数组,下标的下 界始终为0

JS数组操作

JavaScript数组操作 数组对象的8个分类及多个方法 1.数组的创建 var arrayObj = new Array();//创建一个默认数组,长度是0 var arrayObj = new Array(size);//创建一个size长度的数组,注意Array的长度是可变的,所以不是上限,是长度 var arrayObj = new Array(item1,item2,);//创建一个数组并赋初值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。 2、数组的元素的访问 var ArrayItemValue=arrayObj[1]; //获取数组的元素值 arrayObj[1]= "要赋予新值"; //给数组元素赋予新的值 3、数组元素的添加 arrayObj.push(item1,item2,...); // 将参数添加到数组结尾,并返回数组新长度 例: var a = [1,2,3,4,5]; a.push(6,7); //a结果就是:[1,2,3,4,5,6,7] arrayObj.unshift(item1,item2,...); // 将参数添加到数组开始,数组中的元素自动后移,返回数组新长度 例: var a = [1,2,3,4,5]; a.unshift(-2,-1); //a结果就是:[-2,-1,1,2,3,4,5] arrayObj.splice(start,deleteCount,item1,item2,...); //从下标start位置开始删除deleteCount个元素,并从该位置起插入item1,item2,...,插入位置及之后的元素自动后移,方法返回被删除的项。 例: var a = [1,2,3,4,5];

第六章数组

第6章数组 6.1 问题导引与分析 到目前为止,我们所接触的变量类型(除文件类型外)为简单数据类型,其特点是对单一的变量进行数据处理和操作。在解决实际问题时,常需要处理大量的数据,如对1000个学生的成绩排序、对一批数据进行各种处理等问题,如果用简单变量来存储这些数据,要用到大量的简单变量,无论从存储还是处理都很不现实。Pascal语言引入了数组类型,能方便地解决批量数据处理问题。 数组是程序设计中最常用的结构数据类型,用来描述由固定数目的同一类型的元素组成的数据结构。 从形式上看,Pascal语言数组元素书写格式为:变量名[下标1,下标2,下标3,……],数组的每个元素和下标相关联,根据下标指示数组的元素。 只有一个下标的变量集合称为一维数组。 如:a[1],a[2],a[3],a[4],a[5],……,俗称a数组。 使用数组的方便之处在于数组的下标可以用变量来表示,如上述的a数组元素可以写成a[i]形式,通过灵活控制下标变量i,达到对数组元素进行批量处理和操作的目的。 6.1.1 问题导引 问题6.1 选票统计(Votes) 【问题描述】 国际运动协会组织了一个评选N佳运动员的活动,评选方式很特殊,先由网民投票选举,各国的网民可以任选自己喜爱的运动员,然后从中选出得票高于100万张的运动员N个,对他们用1到N进行编号,重新投票,根据不同的得票值,颁发不同的奖项,现在组织者想知道重新投票后,这N个运动员的票数,请你帮他完成。 【输入格式】 第一行,一个数,表示N个运动员;(1≤N≤1000) 第二行开始为一组以空格隔开的选票,选票值为1到N间的数,以-1为数据结束标志。选票数量不超出长型范围。 【输出格式】 按编号顺序输出编号和票数。 【输入样例】 3 3 1 2 3 2 1 2 3 1 2 2 1 3 3 1 2 3 3 -1 【输出样例】 1 5 2 6 3 7

C#数组的基本操作

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int []A1 = new int[] { 0, 1, 2, 3 }; Console.WriteLine("The first Arry:\n"); foreach (int i in A1) Console.WriteLine(i.ToString() + " "); Console.WriteLine(); int []A2 = new int[] { 4, 5, 6, 7 }; Console.WriteLine("The Second Arry:\n"); foreach (int j in A2) Console.WriteLine(j+ " "); Console.WriteLine(); int[] A = new int[A1.Length + A2.Length]; Array.Copy(A1, A, 4); Array.Copy(A2, 0, A, 4, 4);//参数为别为(原数组,原数组起始位置,目标数组,目标数组起始位置,复制个数) Console.WriteLine("The Destination Array:\n"); foreach (int k in A) Console.WriteLine(k + " "); Console.WriteLine(); Array.Clear(A, 0, A.Length); foreach (int c1 in A) Console.WriteLine(c1 + " "); Console.WriteLine(); int []C1={0,1,2,3,4,5,6,7,8,9}; Array.Clear(C1, 1, 3); foreach(int c2 in C1) Console.WriteLine(c2+" "); Console.WriteLine(); int f = 2; int loca1 = Array.BinarySearch(A1, f); if (loca1 < 0) Console.WriteLine("不存在此元素\n");

练习题-第六章_数组(有答案)

一、填空题 1.在C语言中,二维数组元素在内存中的存放顺序是。 2.定义了二维数组:int array[4][5],该数组所占的内存空间为______字节。 3.假设有整型数组array[100][100],其中第66行,第66列元素array[66][66]在数 组中排列的位置(位置从1开始算起)为6566 。 4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[2][1]得到的初值是 ________。 5.下面的程序段的运行结果是____he_____。 char x[ ]=“the teacher”; int i =0; while(x[++i] != ’\0’) if(x[i-1] = = ‘t’) printf(“%c”,x[i]); 二、单项选择题 1.下面程序( B )(每行程序前面的数字表示行号)。 1 main( ) 2 { float a[10]={0.0}; 3 int i; 4 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 5 for(i=1;i<10;i++) a[0]=a[0]+a[i]; 6 printf(“%f\n”,a[0]); 7 } A)没有错误B)第2行有错误 C)第4行有错误D)第6行有错误 2.下面程序中有错误的行是(D)(每行程序前面的数字表示行号)。 1main( ) 2{ 3int a[3]={1}; 4int i; 5scanf(“%d”,&a); 6for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7printf(“a[0]=%d\n”,a[0]); } A. 3 B. 6 C. 7 D. 5 3.以下不能对二维数组a进行正确初始化的语句是( C )。 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};

Matlab的基本操作及变量、数组及其答案

实验一Matlab的基本操作及变量、数组 一、实验目的: 1. 熟悉Matlab的开发环境,基本类型的Matlab窗口、工作空间和如何获得在线帮助。 2. 熟悉和掌握Matlab变量和数组的基本操作 二、实验内容: 1. Matlab的基本操作 1.3 先自定义一个变量,然后分别用8种不同的数字显示格式显示查看。 >> format compact >> a=3.14159265358979 a = 3.14159265358979 >> format long >> a a = 3.141592653589790 >> format short e >> a a = 3.1416e+000 >> format long e >> a a = 3.141592653589790e+000 >> format hex >> a a = 400921fb54442d11 >> format bank >> a a = 3.14 >> format + >> a a = + >> format rat >> a a = 355/113 >> format short >> a a = 3.1416 1.4 下面的语句用于画出函数()0.2 2x y x e- =在[0,10]区间的值 x = 0:0.1:10; y = 2*exp(-0.2*x); plot(x,y) 用Matlab编辑器创建一个m文件,把上述语句写入这个m文件并命名为“test1.m”,保存在当前路径中,然后在命令窗中键入test1,观察结果和运行程序后工作空间的变化.

如何清空工作区间数据? 键入 clear ; 如何关闭图像窗口? 键入close ; 除了在命令窗输入文件名,还可以怎样运行一个m 文件程序? 点击file ,打开m 文件,点击Run 按钮,运行m 文件程序。 如果希望在命令窗中显示x 和y 的所有取值,应对程序做出怎么样的修改? x = 0:0.1:10; y = 2*exp(-0.2*x); plot(x,y); x,y 1.5 通过以下两种方式得到关于exp 函数的帮助: (1) 在命令窗中输入help exp 命令; (2) 运用帮助空间窗口。思考,用什么指令可以直接打开帮助空间中关于exp 函数的说明? 键入doc exp ;或者点击help ,再点击product help ,键入exp 搜索. 1.6 假设x =3,y = 4,用Matlab 计算下列表达式: (1) () 23 2 x y x y - (2) 43x y (3) 24x x π- (4) 3 3x x x y - >> format compact >> x=3,y=4 x = 3 y = 4 >> x^2*(y^3)/(x-y)^2 ans = 576 >> 4*x/(3*y) ans = 1 >> 4/x*(pi*x^(-2)) ans = 0.4654 >> x^3/(x^3-y^x) ans = -0.7297 1.7 在当前目录下创建一个m 文件, 键入以下程序并保存,先把文件保存为“2.m ”,运行后观察结果,总结m 文件的文件名(包括Matlab 标识符)命名规则。对该文件重新命名后运行,保存运行结果。 t = -2*pi:pi/10:2*pi; y = abs(sin(t)); plot(t,y) >> 2 ans = 2 重新命名m 文件后运行的结果:

矩阵和数组的操作 实验报告

实验报告 课程名称:MATLAB上机实验实验项目:矩阵和数组的操作 实验地点: 专业班级:学号 学生姓名: 指导教师: 年月日

实验二矩阵和数组的操作 一.实验环境 计算机 MATLAB软件 二.实验目的 1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。 2.学习矩阵和数组的加减运算与乘法。 3.掌握对数组元素的寻访与赋值,会对数组进行一般的操作。 三.实验内容与步骤 1.用三种方法创建一个3×3矩阵,然后利用矩阵编辑器,将其扩充为4×5矩阵,并保存,试着调用它。 2.建立一个等差数列,然后由它产生一个对角阵。 3.利用MATLAB的函数inv(A)求方阵的逆矩阵。 解:1. (1) >> A=[3,2,1;4,5,6;7,8,9] A = 3 2 1 4 5 6 7 8 9 (2) A=rand(3,3) A = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 2. > a=linspace(0.1,5,5) a = 0 0.3750 0.7500 1.1250 1.5000

>> B=diag(a) B = 0 0 0 0 0 0 0.3750 0 0 0 0 0 0.7500 0 0 0 0 0 1.1250 0 0 0 0 0 1.5000 3. >> A=[1,2;5,6] A = 1 2 5 6 >> B=inv(A) B = -1.5000 0.5000 1.2500 -0.2500 四.练习题 1.创建一个5×5矩阵,提取主对角线以上的部分。 >> A=rand(5,5) A = 0.4447 0.1763 0.8936 0.1389 0.1988 0.6154 0.4057 0.0579 0.2028 0.0153 0.7919 0.9355 0.3529 0.1987 0.7468 0.9218 0.9169 0.8132 0.6038 0.4451 0.7382 0.4103 0.0099 0.2722 0.9318 >> B=triu(A) B = 0.4447 0.1763 0.8936 0.1389 0.1988 0 0.4057 0.0579 0.2028 0.0153 0 0 0.3529 0.1987 0.7468 0 0 0 0.6038 0.4451 0 0 0 0 0.9318

FoxPro数组操作

FoxPro数组操作 2007-07-26 23:12 FoxPro数组操作 数组在FoxPro中有着广泛的应用,例如用它来构造和显示菜单、存储和显示数据库记录等。FoxPro支持一维和二维数组,允许数组元素具有不同的数据类型。数组使用前必须先定义,定义数组用DIMENSION或DECLARE命令。 数组的定义 格式1:DIMENSION <数组名1>(<数值表达式1>[,<数值表达式2>])[,<数组名2>(<数值表达式3>[,<数值表达式4>])]… 格式2:DECLARE <数组名1>(<数值表达式1>[,<数值表达式2>])[,<数组名2>(<数值表达式3>[,<数值表达式4>])]… 说明: 1、两个命令功能相同,都是用来定义数组。 2、一维数组数据个数由数值表达式1的值确定。例如DIMENSION a1(10)定义了一个含有10个元素的名为a1的一维数组。通过下标可以确定各个特定的数组元素,下标从1开始,各元素是顺序排列的。 3、二维数组中的数据按行序排列。行数由数值表达式1的值确定,列数由数值表达式2的值确定。例如DIMENSION a2(2,3)定义了一个含有6个元素的名为a2的二维数组,其数组排列顺序如下表: 4、数组定义以后系统为每个数组元素自动赋予逻辑假值F。 数组元素的赋值 可以用赋值命令对数组元素赋值,也可对整个数组赋值。 格式1:STORE <表达式> TO <数组> 格式2:<数组>=<表达式>

说明:第一个命令是对整个数组赋值,第二个命令是对数组元素赋值。 数组与数据库文件记录间的数据交换 1、数据库文件记录值传送到数组 格式:SCATTER[FIELDS <字段表>] TO <数组> [BLANK]|MEMVAR[BLANK] 功能:把数据库文件当前记录中的数据传送到数组或一组内存变量中。 说明: ①将当前记录字段表中指定字段变量的值,按先后顺序传送给数组的各个元素,数组元素的类型根据记录的字段值决定;若无可选项FIELDS<字段表>,则传送所有字段。 ②如数组元素的个数多于字段变量的个数,则剩余那些数组元素的值不受影响;否则系统自动扩大数组的数组的个数。 ③若选用TO <数组> BLANK短语,则会自动生成一个数组,其中各个元素与当前数据库文件相应字段的类型和长度完全相同,但数组是空的。 ④若选用TO MEMVAR短语,则将当前记录传送到一组内存变量中,这些变量不仅与数据库文件相应字段同名,且类型与长度也相同。 ⑤若选用TO MEMVAR BLANK短语,将建立一组具有空值的内存变量。 2、数组中的数据传送到数据库文件 格式:GATHER FROM <数组> | MEMVAR [FIELDS <字段表>] 功能:把数组或内存变量中的数据传送到数据库文件当前记录中。 说明: ①从数组的第一个元素开始,顺序地将其传送到所指定的字段。要求数组元素的类型符合各字段变量的类型。 ②如果数组元素的个数少于字段数,则当前记录中其余字段的值不受影响,反之则不考虑其余的那些数组元素。 ③如果选用MEMVAR短语,则将若干与字段名相同的内存变量的数据传送到当前的记录中。

第六章数组解析

第六章数组 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。 一、一维数组 1、一维数组的定义 定义:数组中的每个元素只带一个下表时,这样的数组称为一维数组。 一般形式: 类型名数组名[常量表达式],······; 注意: (1)、数组名的命名规则和标识符的命名规则相同。 (2)、常量表达式要有方括号括起来,不能用圆括号。 (3)、常量表达式表示数组元素的个数(只能是整数),即数组长度,并且数组的第一个元素是从下标0开始的! (4)、常量表达式可以是常量也可以是符号常量,不能包含变量。 (5)、允许在同一个类型说明中说明多个数组和变量;例如:int a,b,c,d[10],e[5]; 2、一维数组元素的初始化 通过定义语句定义数组后,系统会根据数组元素的个数在内存中开辟一串连续的存储单元,这是存储单元没有确定的值。一维数组的初始化方式如下: a、在定义数组时,对数组元素赋初值,例如:int a[10]={0,1,2,3,4,5,6,7,8,9}; b、可以只给一部分元素赋初值,例如:int a[10]={0,1,2,3,4},表示只给数组的前5个元素赋初值,后5 个元素的值,系统自动默认为0。 c、在对全部数组元素赋初值时,可以不指定数组长度,例如:int a[]={0,1,2,3,4}; 注意: (1)、“{}”中的值不能超过数组元素的个数。 (2)、可以用“,”表示对应位置的元素为0,如:int a[100]={1,2,3,,,7,8,18,,,67}。 3、一维数组的引用 C语言规定: 数组必须先定义,后使用!并且只能逐个引用数组元素,而不能一次引用整个数组!其引用格式为:数组名[下标]; 其中,下标可以是整型常量也可以是整型表达式,例如:a[0]=a[5]+a[7]+a[2*3]

C语言第六章数组习题答案

第六章 数组 习题答案 2、0 4 3、0 6 4、&a[i] i%4==0 printf("\n"); 5、i+j==3_ a[i][j] 6、12 7、a[i][j]+b[i][j] printf(“\n ”) 8、按行存放 9、( a[i]>a[j]) 10、将串str2复制到串str1中后再将串str3连接到串str1之后 三、阅读题 1、如右图所示 2、AQM 3、AzyD 4、9198 5、如右图所示 6、92 7、1,2,5,7, 8、2 9、v1=5,v2=8,v3=6,v4=1 10、a*b*c*d* 四、编程题 1(1)选择法排序 #include void main( ) {int i,j,n=10,p,a[10];int temp; for(i=0;i

for(j=i+1;j void main( ) {int i,j,n=10,p,a[10];int temp; for(i=0;ia[j]) {temp=a[i];a[i]=a[j];a[j]=temp;} printf("\n排序后的一维数组:\n"); for(i=0;i void main( ) {int a[11],i,n=10,k; int point; printf("\n 请输入原始数据:\n"); for(i=0;ik) {point=i; break;} if(i!=n) {for(i=n;i>point;i--) a[i]=a[i-1]; a[point]=k;} /*从后向前方式*/ else a[n]=k; printf("插入后的数是:\n"); for(i=0;i int main() {int i,j,upp,low,dig,spa,oth; char text[3][80];

实验4:串和数组的基本操作

实验4:串和数组的基本运算 实验名称:串和数组的基本运算成绩: 实验日期:年月日实验报告日期:年月日 一、实验目的 1、掌握串的逻辑结构及顺序存储结构。 2、熟练掌握串的一些基本运算。 3、熟悉串类型的实现方法和文本模式匹配方法 4、掌握数组的逻辑结构和存储结构 5、掌握稀疏矩阵的存储结构及一些运算的实现 二、实验内容 模式匹配 1、①若串t是串s的子串,则函数值为s中第一个这样的子串在主串中的位置,否则函数值为-1。 ②串t非空。 2、如果用三元组形式表示稀疏矩阵A和B,试编写一个求解A+B的算法。 三、实验要求 1、认真复习教材中与串和数组相关的算法。 2、完成本实验要求的各个程序。 3、结合运行结果,对程序进行分析。 4、思考从s串中删除一个子串t的算法,子串由起始位置start和长度len决定。 四、实验步骤、过程 1、头文件与类型定义: #include #include #define MAXLEN 40 typedef struct { /*串结构定义*/

char ch[MAXLEN]; int len; }SString; 2、创建字符串函数 void createstring(SString *s) { int i,j; char c; printf("请输入要建立的串的长度:"); scanf("%d",&j); for(i=0; ich[i] = c; } s->len = j; } 3、字符串模式匹配函数

相关文档
最新文档