文档库 最新最全的文档下载
当前位置:文档库 › 《C语言程序设计》形成性考核作业(2)解答

《C语言程序设计》形成性考核作业(2)解答

《C语言程序设计》作业2解答

一、选择题

1. 在下面的一维数组定义中,( C )语句有语法错误。

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

B. int a[10]={0};

C. int a[ ];

D. int a[5];

2. 在下面的二维数组定义中,( C )语句是正确的。

A. int a[5][ ];

B. int a[ ][5];

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

D. int a[ ](10);

3. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为( C )。

A. 2

B. 4

C. 6

D. 8

4. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( A )。

A. 0

B. 4

C. 8

D. 6

5. 将两个字符串连接起来组成一个字符串时,选用( C )函数。

A. strlen( )

B. strcap( )

C. strcat( )

D. strcmp( )

二、填空题

1. 假定一维数组的定义为“char * a[8];”,则该数组所含元素的个数为8 。

2. 假定一维数组的定义为“char * a[8];”,则该数组所占存储空间的字节数为32 。

3. 假定二维数组的定义为“int a[3][5];”,则该数组所占存储空间的字节数为60 。

4. 假定二维数组的定义为“double a[M][N];”,则该数组所含元素的个数为M*N 。

5. 假定二维数组的定义为“double a[M][N];”,则每个数组元素的行下标取值范围在0 ~M-1 之

间。

6. 假定二维数组的定义为“double a[M][N];”,则每个数组元素的列下标取值范围在0~N-1 之

间。

7. 使用“typedef char BB[10][50];”语句定义BB 为含有10行50列的二维字符数组类型。

8. 存储字符'a'需要占用存储器的 1 个字节空间。

9. 空字符串的长度为0 。

10. 存储一个空字符串需要占用 1 个字节。

11. 字符串"a:\\xxk\\数据"的长度为11 。

12. 用于存储一个长度为n的字符串的字符数组的长度至少为n+1 。

13. strcmp函数用于进行两个字符串之间的比较。

14. strcpy函数用于把一个字符串拷贝到另一个字符数组空间中。

15. 一个二维字符数组a[10][20]能够存储10 个字符串。

16. 一个二维字符数组a[10][20]能够存储的每个字符串的长度至多为19 。

三、写出下列每个程序运行后的输出结果

1. #include

void main( ) {

int a[10]={12, 39, 26, 41, 55, 63, 72, 40, 83, 95};

int i, i1=0, i2=0;

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

if(a[i]%2==1) i1++; else i2++;

printf("%d %d\n", i1, i2);

}

程序的运行结果是: 6 4

2. #include

#include

void main( )

{

int i;

char * a[5]={"student","worker","cadre","soldier","peasant"};

char * p1, * p2;

p1=p2=a[0];

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

if(strcmp(a[i], p1)>0) p1=a[i];

if(strcmp(a[i],p2)<0) p2=a[i];

}

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

}

程序运行的结果是: worker cadre

3. #include

int a[10]={4, 5, 6, 15, 20, 13, 12, 7, 8, 9};

void main( ) {

int i, s0, s1, s2;

s0=s1=s2=0;

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

switch(a[i]%3) {

case 0 : s0+=a[i]; break;

case 1 : s1+=a[i]; break;

case 2 : s2+=a[i]; break;

}

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

}

程序运行的结果是: 42 20 33

4. #include

void main( ) {

char a[ ]="abcdbfbgacd";

int i1=0, i2=0, i=0;

while(a[i]) {

if(a[i]=='a') i1++;

if(a[i]=='b') i2++;

i++;

}

printf("%d %d\n", i1, i2);

}

程序运行的结果是: 2 3

5. #include

void main( ) {

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

int m=a[0][0];

int ii=0, jj=0;

int i, j;

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

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

if(a[i][j]>m) { m=a[i][j]; ii=i; jj=j; } printf("%d %d %d\n", ii, jj, a[ii][jj]);

}

程序运行的结果是: 2 1 12

6.#include

void main( ) {

int a, b;

for(a=1, b=2; b<50; ) {

printf("%d %d ", a,b);

a=a+b;

b=a+b;

}

printf("\n");

}

程序运行的结果是: 1 2 3 5 8 13 21 34

四、写出下列每个函数的功能

1. #include

int SA(int a, int b ) {

if(a>b) return 1;

else if(a==b) return 0;

else return -1;

}

函数的功能是: 比较两个整数a和b的大小,若a大于b,则函数返回1;若a等于b,则函数返回0;

若a小于b,则函数返回-1。

2. int SC(int a, int b, int c) {

if(a>=b && a>=c) return a;

if(b>=a && b>=c) return b;

return c;

}

函数的功能是: 比较并返回三个整数a,b和c中的最大值。

3. double SF(double x, int n) { //n为大于等于0的整数

double p=1, s=1;

int i;

相关文档
相关文档 最新文档