C语言第五章习题-2010.10.14更新

2020-04-17 05:39

练习5-1

一、选择题

1.合法的数组说明语句是( )。 A.int a[]=\ B.int a[]={0,1,2,3,4,5}; C.char a=\ D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( )。 A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10 scanf(\ int a[SIZE]; int a[n]; 3.已知:int a[10];,则对a数组元素的正确引用是( )。 A.a[10] B.a[3.5] C.a(5) D.a[10-10] 4.以下对一维数组a进行正确初始化的语句是( )。 A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={}; C.int a[]={0}; D.int a[2]={10, 9, 8}; 5.对以下说明语句的正确理解是( )。 int a[10]={6, 7, 8, 9, 10};

A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10]

D.因为数组长度与初值的个数不相同,所以此语句不正确 二、填空题

6.求所有不超过200的N值,N的平方是具有对称性质的回文数。所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。

例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。 #include main()

{int m[16], n, i, t, count=0; long a, k;

printf(\ for (n=10; n<200; n++) { k=0; t=1; a=n*n;

for (i=1; a!=0; i++) { ①; a/=10; }

for (; i>1; i--) { k+=m[i-1]*t; ②;

- 1 -

}

if ( ③ ) printf(\ } }

则①为( )、②为( ; )、③为( )。

7.设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,

并将这些和存在数组b中,按每行3个元素的形式输出。则①是( )、②是( )、③是( )。 main()

{int a[10], b[10], i; for (i=0; i<10; i++) scanf(\ for ( ①; i<10; i++) ② for (i=1; i<10; i++) { printf(\ if ( ③==0) printf(\ } }

8.下面程序用“顺序查找法”查找数组a中是否存在某一关键字。则①是( 是( )。 main()

{int a[8]={25, 57, 48, 37, 12, 92, 86, 33}; int i, x;

scanf(\ for (i=0; i<8; i++) if (x==a[i])

{ printf(\ ①; }

if ( ② ) printf(\}

三、读程序,写结果

9.若有以下输入(代表回车),则下面程序的运行结果是( )。 52 main()

{int a[8]={6, 12, 18, 42, 44, 52, 67, 94}; int low=0, mid, high=7, found, x; found=0;

scanf(\

while ((low<=high)&&(found==0)) { mid=(low+high)/2;

)、②

- 2 -

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

if (found==1) printf(\ else printf(\}

- 3 -

练习5-2

一、选择题

1.已知:int i, x[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9};,则下面语句的输出结果是( )。 for (i=0; i<3; i++) printf(\A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 2.以下对二维数组a的正确说明是( )。 A.int a[3][]; B.float a(3,4); C.double a[1][4]; D.float a(3)(4); 3.已知:int a[3][4];,则对数组元素引用正确的是( )。 A.a[2][4] B.a[1, 3] C.a[1+1][0] D.a(2)(1) 4.已知:int a[3][4];,则对数组元素的非法引用是( )。 A.a[0][2*1] B.a[1][3] C.a[4-2][0] D.a[0][4] 5.以下能对二维数组a进行正确赋初值的语句是( )。 A.int a[2][]={{1, 0, 1}, {5, 2, 3}}; B.int a[][3]={{1, 2, 3}, {4, 5, 6}}; C.int a[2][4]={{1, 2, 3}, {4, 5}, {6}}; D.int a[][3]={{1, 0, 1}, {}, {1, 1}}; 6.以下不能对二维数组a进行正确赋初值的语句是( )。 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}; 7.已知:int a[3][4]={0};,则下面正确的叙述是( )。 A.只有元素a[0][0]可得到初值0 B.此说明语句是错误的

C.数组a中每个元素都可得到初值,但其值不一定为0 D.数组a中每个元素均可得到初值0

8.若有说明:int a[][3]={1, 2, 3, 4, 5, 6, 7};,则a数组第一维的大小是( )。 A.2 B.3 C.4 D.无确定值 9.若二维数组a有m列,则在a[i][j]前的元素个数为( )。 A.j*m+i B.i*m+j C.i*m+j-1 D.i*m+j+1 二、填空题 10.下面的程序是求出数组a矩阵的两条对角线上的元素之和,则①是( )、②是( )。

#include main()

{int a[3][3]={1, 3, 6, 7, 9, 11, 14, 15, 17}, sum1=0, sum2=0, i, j; for (i=0; i<3; i++) for (j=0; j<3; j++)

if (i==j) sum1=sum1+a[i][j]; for (i=0; i<3; i++) for( ①; ②; j--)

if (i+j==2) sum2=sum2+a[i][j];

printf(\}

11.从键盘上输入若干(不超过1000个)学生的成绩,计算出平均成绩,并输出低于

平均分的学生的成绩,用输入负数结束输入。则①是( )、②是( )、③是( )、

- 4 -

④是( )。

#include main()

{ float x[1000], sum=0, ave, a; int n=0, i;

printf(\ scanf(\

while (a>0&&n<1000) { sum+=①; x[n]=②; n++;

scanf(\ }

ave=③;

printf(\ printf(\ for (i=0; i

if ( ④ ) printf(\}

12.下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空,

①是( )、②是( )、③是( )。 main()

{ int a[2][3]={{1, 2, 3}, {4, 5, 6}}; int b[3][2], i, j; printf(\ for (i=0;

{ printf(\ ②; }

printf(\ }

printf(\ for (i=0; ③; i++)

{ for (j=0; j<=1; j++) printf(\ printf(\ } }

13.下面程序的功能是检查二维数组是否对称(即:对所有i和j都有a[i][j]=a[j][i])。

请填空,①是( )、②是( )。 main()

- 5 -


C语言第五章习题-2010.10.14更新.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:污水处理厂工程厂区景观绿化工程施工组织设计 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: