搜档网
当前位置:搜档网 › c语言复习题及答案第七章数组

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

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,9 B)8,9 C)1,8 D)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 2

2、以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相

同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。

请填空。

#include< >

main()

{ char str[100],str2[100],c;

int i,s;

printf("\n input string 1:\n"); gest(str1);

printf("\n input string 2:\n"); gest(str2);

i=0;

while((strl[i]==str2[i]&&(str1[i]!= ))

i++;

s= ;

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

} (1998年9月)

'\0'或0 strl[i]-str2[i]

3、若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是a=1234 b=5 A或a=1234b=5。

char a[10],b;

scanf("a=%s b=%c",a,&b); (1999年4月)

4、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低

于平均分的学生成绩,用输入负数结束输入。请填空。

main( )

{ float x[1000], sum=,ave, a;

int n=0,i;

printf("Enter mark:\n");scanf("%f",&a);

while(a>=&& n<1000)

{ sum+; x[n]=;

n++; scanf("%f",&a);

}

ave=;

printf("Output:\n");

printf("ave=%f\n",ave);

for (i=0;i

if printf (“%f\n”,x[i]);

} (1999年9月)

=a a sum/n x[i]

5、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。

请填空。

#include< >

#include< >

main()

{ char a[]="clanguage",t;

int i, j, k;

k=strlen(a);

for(i=0; i<=k-2; i+=2)

for(j=i+2; j<=k;j+=2)

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

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

puts(a);

printf("\n");

} (2000年4月)

6、下列程序段的输出结果是Hello。

main()

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

b[5]=0;

printf(“%s \n”, b );

} (2001年4月)

7、若变量n中的值为24,则prnt函数共输出5行,最后一行有4个数。

void prnt(int n, int aa[ ])

{ int i;

for(i=1; i<=n;i++)

{ printf(“%6d”, aa[i]);

if( !(i%5) ) printf(“\n”);

}

printf(“\n”);

} (2001年4月)

8、若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素

中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。

fun( int a[ ])

{ int i;

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

for(i=0; i<5; i++) =a[i];

} (2001年9月)

a[i-1] a[9-i]

9、若有定义语句: char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以

实现字符串拷贝。(注:不得使用逗号表达式)

while(s[i]){ d[j]=s[i++];j++;}

d[j]=0; (2001年9月)

10、以下程序的输出结果是abc。

main()

{ char s[]="abcdef";

s[3]=‘\0';

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

} (2002年4月)

11、若有以下程序

main()

{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};

int i,j,s=0;

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

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

{ if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

执行后输出的结果是58。(2003年4月)

12、函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

其构成规律是:

第0列元素和主对角线无素均为1

其余元素为其左上方和正上方元素之和

数据的个数每行递增1

请将程序补充完整。

#defint N 6

void YangHui(int *[N][N])

{ int i,j;

x[0][0]=1

for(i=1;i

{ x[i][0]= =1;

for(j=1;j

x[i][j]= ;

}

} (2003年4月)

x[i][i] x[i-1][j-1]+x[i-1][j]或 [i-1][j]+x[i-1][j-1]

13、以下程序运行后的输出结果是1 3 7 15。

main()

{ int i, n[]={0,0,0,0,0};

for(i=1;i<=4;i++)

{ n[i]=n[i-1]*2+1;

printf(“%d”,n[i]);

}

} (2003年9月)

14、以下程序运行后的输出结果是1 2 3 0 5 6 0 0 9。

main()

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

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

for(j=i+1;j<3;j++) a[j][i]=0;

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

{ for(j=0;j<3;j++) printf("&d ", a[i][j]);

printf("\n");

}

} (2003年9月)

15、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。

如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。

#include <>

#include <>

main()

{ char s[80], d[80]; int i, j;

gets(s);

for(i=j=0; s[i]!=‘\0’; i++)

if( s[i]>='0' && s[i]< ='9') { d[j]=s[i]; j++;} d[j]=‘\0’;

puts(d);

} (2003年9月)

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

相关主题