当前位置:文档之家› C语言第7章 数组

C语言第7章 数组

C语言第7章 数组
C语言第7章 数组

第7章数组

17.

以下能正确定义二维数组的是____。

A、int a[][3];

B、int a[][3]={2*3};

C、int a[][3]={};

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

答案:B

难易程度:初级

章节:7.3.2 二维数组的定义

21.

s1和s2已正确定义并分别指向两个字符串。若要求:当s1 所指串大于 s2所指串时,执行语句S;

则以下选项中正确的是____。

A、if(s1>s2)S;

B、if(strcmp(s1,s2))S);

C、if(strcmp(s2,s1)>0)S;

D、if(strcmp(s1,s2)>0)S;

答案:D

难易程度:初级

章节:7.4 字符数组

60.

有以下程序

main( )

{ char a[]="abcdefg",b[10]="abcdefg";

printf("%d %d\n",sizeof(a),sizeof(b));

}

执行后输出结果是____。

A、7 7

B、8 8

C、8 10

D、10 10

答案:C

难易程度:初级

章节:7.4字符数组

64.

有以下定义

#include

char a[10],*b=a;

不能给a数组输入字符串的语句是____。

A、gets(a)

B、gets(a[0])

C、gets(&a[0]);

D、gets(b);

答案:B

难易程度:初级

章节:7.5 字符数组

73.

以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是____。

A、char s[10]="abcdefg";

B、char t[]="abcdefg",*s=t;

C、char s[10];s="abcdefg";

D、char s[10];strcpy(s,"abcdefg");

答案:C

难易程度:初级

章节:7.5 字符数组

101.

以下不能正确定义二维数组的选项是____。

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

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

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

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

答案:D

难易程度:初级

章节:7.3二维数组的定义及初始化

103.

以下能正确定义一维数组的选项是____。

A、int num[];

B、#define N 100

int num[N];

C、int num[0..100];

D、int N=100;

int num[N];

答案:B

难易程度:初级

章节:7.1.1 一维数组的定义

104.

下列选项中正确的语句组是____。

A、char s[8]; s={"Beijing"};

B、char *s; s={"Beijing"};

C、char s[8]; s="Beijing";

D、char *s; s="Beijing";

答案:D

难易程度:初级

章节:7.4.1字符数组的初始化

143.

有以下程序

main()

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

int i,j,k=2;

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

{ printf("%d ",m[k][i]); }

}

执行后输出结果是____。

A、4 5 6

B、2 5 8

C、3 6 9

D、7 8 9

答案:C

难易程度:初级

章节:7.3 二维数组

144.

以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。 #define N 10

void arrin(int x[N])

{ int i=0;

while(i

scanf("%d%",____);

}

在下划线处应填入的是____。

A、x+i

B、&x[i+1]

C、x+(i++)

D、&x[++i]

答案:C

难易程度:中级

章节:7.2一维数组的使用

145.

有以下程序

main()

{ char s[]="\n123\\";

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

执行后输出结果是____。

A、赋初值的字符串有错

B、6,7

C、5,6

D、6,6

答案:C

难易程度:中级

章节:7.4字符数组

161.

以下能正确定义数组并正确赋初值的语句是____。

A、int N=5,b[N][N];

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

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

D、int d[3][2]={{1,2},{34}};

答案:D

难易程度:初级

章节:7.3二维数组的定义及初始化

164.

以下不能正确进行字符串赋初值的语句是____。

A、char str[5]="good!";

B、char str[]="good!";

C、char *str="good!";

D、char str[5]={'g''o''o''d'};

答案:A

难易程度:初级

章节:7.4字符数组

170.

有以下程序

main()

{ char s[]="\n123\\";

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

执行后输出结果是____。

A、赋初值的字符串有错

B、6,7

C、5,6

D、6,6

答案:C

难易程度:中级

章节:7.4字符数组

176.

若有定义和语句:

char s[10]:s="abcd";printf("%s\n",s);

则结果是(以下u代表空格)____。

A、输出abcd

B、输出a

C、输出abcduuuuu

D、编译不通过

答案:D

难易程度:初级

章节:7.4字符数组

207.

当调用函数时,实参是一个数组名,则向函数传送的是____。

A、数组的长度

B、数组的首地址

C、数组每一个元素的地址

D、数组每个元素中的值

答案:B

难易程度:初级

章节:7.5.2数组名作为函数的参数

218.

以下程序的输出结果是____。

main()

{ char ch[3][5]={"AAAA","BBB","CC"};

printf("\"%s\"\n",ch[1]);

}

A、"AAAA"

B、"BBB"

C、"BBBCC"

D、"CC"

答案:B

难易程度:中级

章节:7.4字符数组

221.

以下程序的输出结果是____。

mian()

{ 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

答案:C

难易程度:中级

章节:7.3.2 二维数组的定义

225.

当执行下面的程序时,如果输入ABC,则输出结果是____。

#include "stdio.h"

#include "string.h"

main()

{ char ss[10]="12345";

gets(ss) ;strcat(ss,"6789"); printf("%s\n",ss);

}

A、ABC6789

B、ABC67

C、12345ABC6

D、ABC456789

答案:A

难易程度:中级

章节:7.4字符数组

237.

有以下程序

int f(int b[][4])

{ int i,j,s=0;

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

{ i=j;

if(i>2) i=3-j;

s+=b[i][j];

}

return s;

}

main( )

{ int a[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}}; printf("%d\n",f(a));

}

执行后的输出结果是____。

A、12

B、11

C、18

D、16

答案:D

难易程度:中级

章节:7.5.2数组名作为函数的参数

244.

以下选项中,不能正确赋值的是____。

A、char s1[10];s1="Ctest";

B、char s2[]={'c','t','e','s','t'};

C、char s3[20]="Ctest";

D、char *s4="Ctest\n";

答案:A

难易程度:初级

章节:7.4字符数组

249.

设有以下语句

char str[4][12]={"aaa","bbbb","ccccc","dddddd"},*strp[4]; int i;

for(i=0;i<4;i++)strp[i]=str[i];

下列选择不是对字符串的正确引用的是(其中0

A、strp

B、str[k]

C、strp[k]

D、*strp

答案:A

难易程度:中级

章节:7.4字符数组

259.

有以下程序

main()

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

int i,j,k=2;

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

{ printf("%d ",m[k][i]); }

}

执行后输出结果是____。

A、4 5 6

B、2 5 8

C、3 6 9

D、7 8 9

答案:C

难易程度:中级

章节:7.3.2 二维数组的定义

286.

以下能正确定义一维数组的选项是____。

A、int num[];

B、#define N 100

int num[N];

C、int num[0..100];

D、int N=100;

int num[N];

答案:B

难易程度:初级

章节:7.1一维数组的定义

295.

若有定义:int aa[8];则以下表达式中不能代表数组元素aa[1]的地址的是____。

A、&aa[0]+1

B、&aa[1]

C、&aa[0]++

D、aa+1

答案:C

难易程度:初级

章节:7.1一维数组的定义

299.

以下程序的输出结果是____。

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

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

A、9

B、12

C、13

D、14

答案:A

难易程度:中级

章节:7.4字符数组

303.

执行下面的程序段后,变量k中的值为____。

int k=3,s[2];

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

A、不定值

B、33

C、30

D、10

答案:A

难易程度:初级

章节:7.1一维数组的定义

313.

有以下程序

main( )

{ char a[]="abcdefg",b[10]="abcdefg";

printf("%d %d\n",sizeof(a),sizeof(b)); }

执行后输出结果是____。

A、7 7

B、8 8

C、8 10

D、10 10

答案:C

难易程度:中级

章节:7.4字符数组

328.

合法的数组定义是____。

A、int a[]="string";

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

C、char s="string";

D、char a[]={0,1,2,3,4,5};

答案:D

难易程度:初级

章节:7.4字符数组

331.

以下程序的输出结果是____。

main()

{ int i,a[10];

for(i=9;i>=0;i--) a[i]=10-i;

printf("%d%d%d",a[2],a[5],a[8]);

}

A、258

B、741

C、852

D、369

答案:C

难易程度:初级

章节:7.2一维数组的使用

335.

以下程序的输出结果是____。

main()

{ char w[][10]={"ABCD","EFGH","IJLK","MNOP"},K;

for (K=1;K<3;K++) printf("%s\n",w[k]);

}

A、ABCD

FGH

KL

B、ABCD

EFG

IJ

M

C、EFG

JK

O

D、EFGH

IJKL

答案:D

难易程度:中级

章节:7.4字符数组

359.

以下程序输出的结果是____。

#include

#include

main()

{ char w[][10]={"ABCD","EFGH","IJKL","MNOP"};

int k;

for (k=1;k<3;k++)

printf("%s\n",&w[k][k]);

}

A、ABCD

FGH

KL

B、ABCD

EFG

IJ

M

C、EFG

JK

D、FGH

KL

答案:D

难易程度:中级

章节:7.4.4 二维字符数组

365.

假定int类型变量占用两个字节,若有定义:int x[10]={0,2,4};,则数组x在内存中所占字数是____。

A、3

B、6

C、10

D、20

答案:D

难易程度:初级

章节:7.1 一维数组的定义和初始化

377.

设有

static char str[]="Beijing";

则执行

printf("%d\n",strlen(strcpy(str,"China")));

后的输出结果为____。

A、5

B、7

C、12

D、14

答案:A

难易程度:初级

章节:7.4 字符串函数

401.

以下数组定义中不正确的是____。

A、int a[2][3];

B、int b[][3]={0,1,2,3};

C、int c[100][100]={0};

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

答案:D

难易程度:初级

章节:7.3.2 二维数组的定义

402.

以下不能正确定义二维数组的选项是____。

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

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

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

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

答案:D

难易程度:初级

章节:7.3.2 二维数组的定义

409.

函数调用:strcat(strcpy(str1,str2),str3)的功能是____。

A、将串str1复制到串str2中后再连接到串str3之后

B、将串str1连接到串str2之后再复制到串str3之后

C、将串str2复制到串str1中后再将串str3连接到串str1之后

D、将串str2连接到串str1之后再将串str1复制到串str3中

答案:C

难易程度:初级

章节:7.4 字符串函数的调用

414.

以下定义语句中,错误的是____。

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

B、char *a[3];

C、char s[10]="test";

D、int n=5,a[n];

答案:D

难易程度:初级

章节:7.1 一维数组的定义

418.

以下程序的输出结果是____。

main()

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

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); }

A、0650

B、1470

C、5430

D、输出值不定

答案:A

难易程度:初级

章节:7.3.4 二维数组的初始化

438.

下列程序执行后的输出结果是____。

main()

{ char arr[2][4];

strcpy(arr,"you"); strcpy(arr[1],"me");

arr[0][3]='&';

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

}

A、you&me

B、you

C、me

D、err

答案:A

难易程度:初级

章节:7.4.3 字符串的输出

449.

若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是____。

A、&t[3][2]

B、t[3]

C、t[1]

D、*t[2]

答案:C

难易程度:初级

章节:7.3 二维数组的定义和二维数组元素的引用

461.

有如下程序

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

答案:D

难易程度:初级

章节:7.1 一维数组的定义和初始化

473.

请读程序:

#include

f(int b[],int n){

int i,r;

r=1;

for(i=0;i<=n;i++) r=r*b[i];

return r;

}

main(){

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

x=f(a,3);

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

}

上面程序的输出结果是____。

A、720

B、120

C、24

D、6

答案:B

难易程度:初级

章节:7.5 数组作为函数参数

489.

若已定义

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

其中0≤i≤9,则对数组元素不正确的引用是____。

A、a[p-a]

B、*(&a[i])

C、p[i]

D、a[10]

答案:D

难易程度:初级

章节:7.1 数组下标的取值范围

492.

若有以下定义和语句:

char *s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

则输出结果是____。

A、4

B、5

C、9

D、10

答案:A

难易程度:初级

章节:7.4 字符函数的调用

494.

若有以下定义和语句:

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

则不能表示a数组元素的表达式是____。

A、*p

B、a[10]

C、*a

D、a[p-a]

答案:B

难易程度:初级

章节:7.1 数组下标的取值范围

505.

有以下定义

#include

char a[10],*b=a;

不能给a数组输入字符串的语句是____。

A、gets(a)

B、gets(a[0])

C、gets(&a[0]);

D、gets(b);

答案:B

难易程度:初级

章节:7.4 字符数组

520.

下列描述中不正确的是____。

A、字符型数组中可以存放字符串

B、可以对字符型数组进行整体输入、输出

C、可以对整型数组进行整体输入、输出

D、不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

答案:C

难易程度:初级

章节:7.4 字符数组

523.

以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是____。

A、char s[10]="abcdefg";

B、char t[]="abcdefg",*s=t;

C、char s[10];s="abcdefg";

D、char s[10];strcpy(s,"abcdefg");

答案:C

难易程度:初级

章节:7.4 用字符数组作为字符串和用指针指向的字符串之间的区别

557.

当执行下面程序且输入:ABC时,输出的结果是____。

#include

#include

main( )

{ char ss[10]="12345";

strcat (ss,"6789");

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

}

A、ABC

B、ABC9

C、123456ABC

D、ABC456789

答案:A

难易程度:初级

章节:7.4 字符串函数

564.

设有数组定义:char array [] = "China";则数组array所占的空间为____。

A、4个字节

B、5个字节

C、6个字节

D、7个字节

答案:C

难易程度:初级

章节:7.4 字符串数组

589.

下面程序的输出是____。

#include

#include

main()

{ char *p1="abc",*p2="ABC",str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

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

A、xyzabcABC

B、zabcABC

C、yzabcABC

D、xyabcABC

答案:D

难易程度:中级

章节:7.4 字符串函数

592.

有以下程序

void sort(int a[],int n)

{ int i,j,t;

for(i=0;i

for(j=i+2;j

if(a[i]

main()

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

sort(aa,10);

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

printf("\n");

}

其输出结果是____。

A、1,2,3,4,5,6,7,8,9,10,

B、10,9,8,7,6,5,4,3,2,1,

C、9,2,7,4,5,6,3,8,1,10,

D、1,10,3,8,5,6,7,4,9,2,

答案:C

难易程度:高级

章节:7.5 数组作为函数参数和循环嵌套

608.

以下程序的输出结果是____。

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

答案:A

难易程度:中级

章节:7.3 二维数组的定义和二维数组元素的引用

613.

有以下程序

void f(int a[],int i,int j)

{ int t;

if(i

{ t=a[i]; a[i]=a[j]; a[j]=t;

f(a,i+1,j-1);

}

}

main( )

{ int i,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++) printf("%d,",aa[i]); printf("\n"); }

执行后输出结果是____。

A、5,4,3,2,1,

B、5,2,3,4,1,

C、1,2,3,4,5,

D、1,2,3,4,5,

答案:A

难易程度:中级

章节:7.5 数组作为函数的参数

622.

有如下程序

main()

{int a[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++) p[i]=i+1;

printf("%d\n",a[1][2]);

}

程序运行后的输出结果是____。

A、3

B、6

C、9

D、2

答案:B

难易程度:中级

章节:7.3 二维数组的定义和二维数组元素的引用

640.

有以下程序

#define N 20

fun (int a[],int n,int m)

{ int i,j;

for(i=m;i>=n;i--)a[i+1]=a[i];

}

main()

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

fun(a,2,9);

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

}

程序运行后的输出结果是____。

A、10234

B、12344

C、12334

D、12234

答案:C

难易程度:中级

章节:7.5 数组作为函数的参数

642.

有以下程序

prt(int *m,int n)

{ int i;

for(i=0;i

}

main()

{ int a[]={1,2,3,4,5},i;

prt(a,5);

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

}

程序运行后的输出结果是____。

A、1,2,3,4,5,

B、2,3,4,5,6,

C、3,4,5,6,7,

D、2,3,4,5,1,

答案:B

难易程度:中级

章节:7.5 数组作为函数的参数

691.

有以下程序

main()

{char p[ ]={‘a’,’b’,’c’} ,q[ ]=”abc”; printf (“%d %d \n”,sizeof(p),sizeof(q)); };

程序运行后和输出结果是____。

A、4 4

B、3 3

C、3 4

D、4 3

答案:C

难易程度:初级

章节: 7.4 字符数组

697.

有以下程序

#include "stdio.h"

void sort(int a[ ] ,int n)

{int i,j,t;

for (i=0;i

for (j=i+1;j

if (a[i]

main()

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

sort(aa+2, 5);

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

printf("\n");

}

程序运行后的输出结果是____。

A、1,2,3,4,5,6,7,8,9,10,

B、1,2,7,6,3,4,5,8,9,10

C、1,2,7,6,5,4,3,8,9,10

D、1,2,9,8,7,6,5,4,3,10

答案:C

难易程度:高级

章节: 7.5 数组作为函数的参数

698.

有以下程序

void sum(int a[ ] )

{ a[0]=a[-1]+a[1];}

main()

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

sum (&a[2]);

printf(“%d\n”,a[2]);

}

程序运行后输出结果是____。

A、6

B、7

C、5

D、8

答案:A

难易程度:高级

章节: 7.5 数组作为函数的参数

700.

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

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式] ; (1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如int a[10] ; //可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素; 3、一维数组的初始化: (1) (1)可以在定义数组后,立刻赋值;如int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ; (2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, …?, float 0.0 ; 如int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ; for ( i=0 ; i <10 ;i ++ ) a [ i ] = i ; 基础训练(A) 一、选择题 1、在c语言中,引用数组元素时,其数组下标的数据类型允许是()。 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 2、要说明一个有10个int元素的数组,应当选择语句()。 A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3、以下对数组的正确定义是:()。 A) float b[5.0] B) float b[5] C) float b(5) D) float b[] 4、对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5]

C语言复习题及答案 第七章 数组教程文件

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

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式 ] ; (1) (1)数组名后必须用方括弧 [ ] ,用其他括弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标 ] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如 int a[10] ; //可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素; 3、一维数组的初始化: (1) (1)可以在定义数组后,立刻赋值;如 int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ; (2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ‘’, float 0.0 ; 如 int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ; for ( i=0 ; i <10 ;i ++ ) a [ i ] = i ; 基础训练(A) 一、选择题 1、在c语言中,引用数组元素时,其数组下标的数据类型允许是()。

《C语言程序设计》第7章 数组

第7章数组 第1次课:2学时 一、教学内容 1、一维数组的定义和引用 2、二维数组的定义和引用 二、教学目标 1.了解一维数组、二维数组的基本概念; 2.掌握数组的定义与引用; 3.掌握数组元素的引用 三、教学重点及难点 重点:数组的定义和引用 难点:数组的定义和引用 四、教学方法 多媒体教学,案例驱动,实例演示,提问。 五、教学过程设计 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。 7.1 一维数组的定义和引用 7.1.1 一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符数组名[常量表达式]; 其中:类型说明符是任一种基本数据类型或构造数据类型;数组名是用户定义的数组标识符;方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 对于数组类型说明应注意以下几点: (1) 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 (2) 数组名的书写规则应符合标识符的书写规定。 (3) 数组名不能与其它变量名相同。 (4) 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5 个元素。但是其下标从0 开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 (5) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。

C语言数组典型例题分析报告与解答

数组练习解答 1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是________________ 【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。 【答案】方法一:float a[4]={0.0,0.0,0.0,0.0}; 方法二:float a[]={ 0.0,0.0,0.0,0.0}; 方法三:float a[4]= {0.0}; 方法四: static float [4]; 2 下列数组定义语句中,错误的是() ① char x[1]='a';②auto char x[1]={0}; ③ static char x[l];④ char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。 【答案】① 3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列 4 1 1 1 4 2 3 2 4 2 3 3 【答案】 l、2、4、3 4 用"选择排序法"对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用"冒泡排序法"执行第2步后的结果是______________________。 【分析】开始排序前的排列为: 4 1 3 2 执行第1步后的排列为: 1 4 3 2 执行第2步后的排列为: 1 2 3 4 【答案】1、2、3、4 5 下列数组定义语句中,正确的是() ① int a[][]={1,2,3,4,5,6};② char a[2]「3]='a','b'; ③ int a[][3]= {1,2,3,4,5,6};④ static int a[][]={{1,2,3},{4,5,6}};【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案①④是错误的。C语言还规定,定义字符型数组时不允许直接使用"字符常量"的方式赋初值,所以备选答案②也是错误的。显然备选答案③符合题意。【答案】③ 6 定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句是() ①char s[]={‘1','2','3','\0 '};②char s「」={"123"}; ③char s[]={"123\n"}; ④ char s[4]={'1','2','3'};

☆C语言实验五(第七章一维数组:排序综合题)

【2008春上机编程题_C07】 【解题思路】:在理解上述要求基础上,只用一个主函数完成:找出Fibonacci 数列的前40个数,存放在一维数组m[40](声明长整型变量long)中,然后找出其中所有素数,存放在一维数组n[40]中(提示:n数组要求对素数总数以k计数),再选用一种排序法对一维数b进行降序排列,最后按长整型量以“%9ld”

形式、一行五个数据将满足条件的数据输出到屏幕: 【提示】:排序方法有“简单起泡法”;“双向起泡法”;“选择法”;所以要求学生在调试上述程序基础上按班组选取排序方法,编写本次作业。(约定:起始Fibonacci数列存放在一维数组m[40]中,挑选出的素数存放在一维数组n[40]中,最后以升序排列的数组n输出,满足素数的个数设定为k)。 参考程序: 简单起泡排序法:(参考教科书P134)

{ 双向起泡排序法:(参考上机指导书P54例、2010春完善程序题第15题或软件第七章填空第15题)原理为“下列程序的功能是对n数组n[0]~a[k-1]中存储的k 个整数从大到小排序。排序算法是:第一趟通过比较将k个整数中的最小值放在a[k-1]中,最大值放在a[0]中;第二趟通过比较将k个整数中的次小值放在a[k-2]中,次大值放在a[1]中,………,依次类推,直到待排序序列为递减序列。”

选择排序法:(参考上机指导书P50例)

课堂练习空余时间或课后业余时间练习知识题 【软件第七章】 选择: 1,下列一维数组的声明中,正确的是____(22)_____。 , A. int a[]; B. int n=10,a[n]; C. int a[10+1]={0}; D. int a[3]={1,2,3,4}; 5.以下程序运行后的输出结果是_____(25)___。 main() { char a[7]="a0\0a0\0";int i,j; i=sizeof(a);j=strlen(a); printf("%d %d",i,j); } 2 B.7 2 C.7 5 2 8.以下声明中错误的是_____(27)_____。 A. int a[2]; B. int a[]={0,1}; C. int a[3]=0; D. nt a[3][4]={0}; ¥ 11. 已知有声明"int m[]={5,4,3,2,1}, i=0;",下列对数组元素的引用中,错误的是_____(27)_____。 A. m[++i] B. m[5] C. m[2*2] D. m[m[4]] 参考资料:数制变换 输入一个十进制数,输出为二进制数形式的一维整型数组

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 int main(void) { int i,n,temp; int a[10]; printf("Input n:"); scanf("%d",&n); 页脚内容1

printf("Input %d integer:",n); for(i=0;i 页脚内容2

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=0;i++) printf("%d ",a[i]); return 0; } 【练习7-4】找出不是两个数组共有的元素。输入一个正整数n (1<n≤10),再输入n 个整数,存入第1个数组中;然后输入一个正整数m(1

C语言第七章数组部分复习题

数组复习题 一.选择题 1.若有以下定义语句:int a[]={1,2,3,4,5,6,7,8,9,10}; 则值为5 的表达式是:() a) a[5] b) a[a[4]] c) a[a[3]] d) a[a[5]] 2.要求定义具有80个、char类型元素的一维数组,错误的定义语句是:() a) #define N 80 b) int N=80; char s[N]; char s[N]; c) #define N 40 d) char s[40+40]; char s[2*N]; 3. 若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则对a 数组元素正确的引用是:() a) a[10] b) a[a[3]-5] c) a[a[9]] d) a[a[4]+4] 4. 若有以下定义语句:float a[11]={0,1,2,3,4,5,6,7,8,9,10}; 则以下叙述中错误的是:() a) a数组在内存中占44个字节 b) a数组的最后一个元素为a[10] c) a数组的第一个元素为a[0] d) 以上定义语句给a数组所赋初值是整数,不能正确赋值 5. 若有以下定义语句:double a[5]; int i=0; 能正确给a数组元素输入数据的语句是:()

a) scanf(“%lf%lf%lf%lf%lf”,a); b) for(i=0 ;i<=5 ;i++) scanf(“%lf”,a+i); c) while(i<5) scanf(“%lf”,&a[i++]); d) while(i<5) scanf(“%lf”,a+i); 6. 以下关于数组的描述正确的是:() a) 数组的大小是固定的,但可以有不同数据类型的数组元素 b)数组的大小是可变的,但所有数组元素的数据类型须相同 c) 数组的大小是固定的,且所有数组元素的数据类型须相同 d) 数组的大小是可变的,且可以有不同数据类型的数组元素 7. 若有说明:int a[10];,则对a数组元素引用不正确的是:() a) a[5+5] b) a[5.5] c) a[10-10] d) a[5] 8. 执行int a[ ][3]={1,2,3,4,5,6,7};语句后,a[1][0]的值是:() a) 1 b) 3 c) 5 d) 4 9. 若有说明:int k[ ][4]={1,2,3,4,5,6,7,8,9,10,11};,则k数组的第一维长度是:() a) 3 b) 2 c) 1 d) 无确定值 10. 若有以下程序: void main() { int k[9]={19,16,17,15,13,11,10,9}, i=1,s=0; while(i<9 && k[i]%3) s=s+k[i++];

相关主题
文本预览
相关文档 最新文档