北大网络教育(计算机专业)C程序设计作业答案

北大网络教育(计算机专业)C程序设计作业答案
北大网络教育(计算机专业)C程序设计作业答案

北大网络教育(计算机专业)C程序设计作业答案

第一章作业

一、将数150、10.75、50.375用十六进制表示

150=96;10.75=A;50.375=32

150(十进制)=96(十六进制)

10.75(十进制)=A.C(十六进制)

50.375(十进制)=32.6(十六进制)

二、填空

1.在C语言中,数值常量0x2a的十进制值是 42 。

2.字母m的ASCII码为十进制数______109_____。

第三章作业

一、选择题:

1、下列变量名中, B 是非法的。

A) Tom B) 3n C) little_boy D) c10

2、下列变量名中, A 是合法的。

A) _boo B) 70A C) 30b D) while

3、下列常量中, C 是十六进制表示的int型常量。

A) 17 B) x52 C) 0xa3 D) 086

4、假设所有变量均为整型,则表达式(a=1,b=3,b++,a+b)的值是 A 。

A) 5 B) 8 C) 6 D)7

5、已知c2为字符型,则执行语句c2=’C’+’8’-‘A’后,c2的值为 D 。

A) 12 B) 11 C)不确定的值D) 10

6、设a为double变量,b为int型变量,c为字符型变量,则a+b+c为( C )型

A) int B) float C) double D) char

7、C语言中不可用作标识符的字符有( B )

A下划线

B %

C数字

D字母

8、设int a;则表达式a=2,4,a+2的值是( D )

A.1

B.2

C.3

D.4

9.设a为字符变量,b为int型变量,c为double型变量,则a*b+c为( C )型

A. int

B. float

C. double

D. char

10.若a是int型变量,则表达式(a=4*5,a*2),a+4的值为( C )

A. 20

B.22

C. 24

D. 44

第四章作业

一、选择题

1、在scanf()函数的格式说明符中,长整型数的输入格式符是 B 。

A. %lf

B. %ld

C. %f

D. %x

2、在printf()函数的格式说明符中,字符型数的输出格式说明符是 D 。

A. %s

B. %f

C. %ld

D. %c

3、已知ch是字符型变量,下面不正确的赋值语句是 C 。

A) ch=’7’+’9’; B) ch=’\0’; C) ch=’x+y’; D) ch=5+9;

4、要使用putchar()函数必须在程序前加语句 A 。

A. #include

B. include

C. include "stdio.h"

D. #include 'stdio.h'

5、若x为int型变量,则执行以下语句后x= A 。

x=5;

x+=x-=x+x;

A. -10

B. -5

C.0

D.10

二、判断题

1、C语言标准输入操作中,gets()函数一次只可以读取一个字符。(F)

2、C语言标准输出操作中,putchar()函数可以输出显示一个字符串。(F)

3、"a"与'a'是相同的; ( F )

三、分析下列程序的输出结果。

1.

#include

void main()

{

char c=’k’;

printf(“%d,%c\n”,c,c);

printf(“%d,%c\n”,’b’,’b’);

}

107,k

98,b

2.

#include

void main()

{

int a;

float d;

printf(“Enter a and d: ”);

scanf(“%d%f”,&a,&d);

printf(“%5d,%8.2f\n”,a,d);

}

Enter a and d: 70 80.158 ↙

70, 80.16

第五章作业

一、选择题。

1、下列运算符中优先级最高的是 C 。

A. <

B. &&

C. -

D.!=

2、判断char型变量ch是否为大写字母的正确表达式是 B 。

A. ‘A’<=ch<=’Z’

B. (ch>=’X’) && (ch<=’Z’)

C. (ch>=’A’)& (ch<=’Z’)

D. (‘A’<=ch) AND (‘Z’>=ch)

3、设有:int a=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b) && (n=c>d)后n的值为 B 。

A. 1

B.2

C. 3

D. 4

4、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 A 。

if (x>y)

z=x;x=y;y=z;

A. x=20,y=30,z=30

B. x=10,y=20,z=30

C. x=20,y=30,z=10

D. x=20,y=30,z=20

5、设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2 的值为( B )

A. 0

B. 1

C. 4

D. 6.5

二、填空题。1). 0 2). 0 3). 0 4)(y%2)= =1 5) x % 3 == 0 && x % 4 != 0

1、当a=2,b=1,c=0时,表达式f=a>b>c的值是0 。

2、当a=2,b=1,c=1时,表达式a>b!=c的值是0 。

3、10 != 2 + 8 || 5 < 4 && 3 > 9/4的结果是0 。

4、设y为int型变量,请写出描述“y是奇数”的表达式(y%2)= =1 。

5、整型变量y能被3整除但不能被 4 整除x % 3 == 0 && x % 4 != 0 。

三、程序填空题。请在【】中填上正确内容。

1、该程序实现输出x,y,z三个数中的最大者。

main()

{int x=4,y=6,z=7;

int 【1】;

if (【2】) u=x;

else u=y;

if (【3】) v=u;

else v=z;

printf(“v=%d”,v);

}

1.【1】u,v 【2】x>y【3】u>z

2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变;

main()

{ char ch;

scanf(“%c”,&ch);

if (【1】) ch=ch+32;

else if (ch>=’a’ && ch<=’z’ ) 【2】;

printf(“%c”,ch);

}

2. 【1】ch>=’A’ && ch<=’Z’【2】ch=ch-32

第六章作业

一选择题。

1、下面程序段的运行结果是 D 。

int n=0;

while (n++<=2) ; printf(“%d”,n);

A. 1

B. 2

C. 3

D. 4

2、对for(表达式1;;表达式3)可理解为 C 。

A. for(表达式1;0 ;表达式3)

B. for(表达式1;表达式1;表达式3)

C. for(表达式1;1 ;表达式3)

D. for(表达式1;表达式3;表达式3)

3、以下正确的描述是 C 。

A.continue语句的作用是结束整个循环的执行

B.在循环体内使用break语句或continue语句的作用相同

C.只能在循环体内和switch语句体内使用break语句

D.从多层循环嵌套中退出时,只能使用goto语句

4.下述关于break语句的描述中,( C )是不正确的。

A. break语句可用于循环体内,它将退出该重循环;

B. break语句可用于开关语句中,它将退出开关语句;

C. break语句可用于if体内,它将退出if语句;

D. break语句在一个循环体内可以出现多次;

5.执行以下程序时,从键盘输入2473↙(↙表示回车),则下面的程序的运行结果是(C )

#include

main( )

{ int c ;

while((c=getchar( ))!= ’\n’)

switch(c-'2')

{ case 0:

case 1: putchar(c+4);

case 2: putchar(c+4);break;

case 3: putchar(c+3);

default: putchar(c+2);break;

}

}

A. B. C. D.

二判断题1. F 2.F 3.T 4.F 5. T

1、While循环语句的循环体至少执行一次。(F )

2、任何循环语句的循环体至少都可执行一次。( ) F

3、break语句可以出现在各种不同循环语句的循环体中。(T )

4、for循环是只有可以确定的循环次数时才可使用,否则不能用for循环。(F)

5、条件语句是可以实现多路分支的。(T )

三填空题

1.已知for(j=1,s=0;j<=5;j+=2) s=s+j;执行循环后,s的值是 9 _ 。

1. 2. while循环是先判断表达式,如果为___真____,执行循环体,然后再判断表达式,

直到表达式为假,退出循环。

四程序填空题

1下面程序的功能是打印100以内个数为6且能被3整除的所有数。

#include

main()

{int i,j;

for (i=0; 【1】;i++)

{j=i*10+6;

if (【2】) continue;

printf(“%d”,j);

}

}

1.【1】i<=9 【2】j%3!=0

第七章作业

一、选择题1. B 2. B 3. C 4. C 5. c 6. B 7. D 8 D 9. A 10. D

1、在C语言中,引用数组元素时,其数组下标的数据类型允许是 B 。

A.整型常量

B. 整型常量或整型表达式

C. 整型表达式

D. 任何类型的表达式

2、若有说明:int a[3][4];则对a数组元素的正确引用是 B 。

A. a[2][4]

B. a[1+1][10 / 5]

C. a[1,3]

D. a(2)(1)

3、已知int w[2][4]={7,15,8,9,20,25,14,17};则w[0][1]的值是 C

A 8 B.9 C. 15 D. 25

4、若有说明int a[][3]={1,2,3,4,5,6,7, 8};则a数组第一维的大小是 C 。

A. 2 B无确定值 C. 3 D. 4

5、若有说明int a[][4]={{1, 2, 3}, {4, 5}{}};则a数组第一维的大小是C 。

A. 2 B无确定值 C. 3 D. 语法错误

6、下面程序的运行结果是 B 。

char c[5]={‘a’,’b’,’c’, ’\0’,’c’,’\0’};

printf(“%s”,c);

A. ‘a’’b’

B. abc

C. ab c

D. ab

7、判断字符串a和b是否相等,应当使用 D 。

A. if (a= =b)

B. if (a=b)

C. if (strcpy(a,b))

D. if (strcmp(a,b))

8、用数组名作为实参,传给形参的是( D )

A.数组第0个元素的值

B.数组全部元素的值

C.数组元素个数

D.数组首地址

9、用double q[2][5];定义的数组q包含 A 个元素

A. 10 B 8 C. 5 D. 2

10、已知char c[6]="ABCDE", d[6];要将c复制到d中,正确的做法是( D )

A. d=c;

B. c=d;

C. strcmp(c,d);

D. strcpy(d,c);

二、判断题

1、数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。( F )

2. 数组中的元素类型不能不同;( T )

3. 字符串"The"小于字符串"the";( T )

4. 任何数组的下标都是从0开始;( T )

5.符数组中的一个元素存放一个字符;( T )

三、分析下面程序的结果。

main ( )

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

printf("a:\n");

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

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

printf("\n");

}

printf("\n");

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

{ s1=s1+a[i][i];

s2+=a[i][2-i];

}

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

}

a:

4 9 6

5 3 1

2 8 7

s1=14,s2=11

第八章作业

一、选择题1.D 2.D 3.B 4.C 5. B

1.在C语言中,下面对函数不正确的描述是( D )。

A. 当用数组名作形参时,形参数组值的改变可以使实参数组之值相应改变。

B. 允许函数递归调用。

C. 函数形参的作用范围只是局限于所定义的函数内。

D. 子函数必须位于主函数之前。

2. 以下正确的函数形式是( D )。

A. double fun(int x,int y) { z=x+y; return z;}

B. fun(int x,y) { int z; return z;}

C. fun(x,y) { int x,y; double z; z=x+y; return z;}

D. double fun( int x,int y) {double z; z=x+y; return z; }

3. C语言规定,实参变量对形参变量的数据传递是( B )。

A.地址传递

B.单向值传递

C. 双向值传递。即由实参传给形参,再由形参传回给实参

D. 由用户指定传递方式

4. 关于实参和形参,以下的论述正确的是( C )。

A. 形参变量未被调用时占用内存

B. 实参可以没有确定的值。

C. 实参可以为常量、变量、表达式。

5.用数组名作为实参,传给形参的是( B )

A.数组第0个元素的值

B.数组首地址

C.数组元素个数

D. 数组全部元素的值

三、写出程序的输出结果

1.

void main(void)

{

int a=1,k;

for(k=0;k<3;k++) printf("%4d",f1(a))

}

int f1(int x)

{

static int z=3,y=0;

y++;

z++;

return(x+y+z);

}

1.

6 8 10

2.

void main()

{

int i=0;

while(++ i)

{

if(i= =10) break;

if(i%3!=1) continue;

printf(“%d\n”,i);

}

}

2.

1

4

7

第十章作业

一、判断题。

1、指针和一般变量一样都有两个值:一个是它在内存中的地址值,另一个是它所存放

的数据值。T

2、指针存放的值就是它所指向的变量的地址值。T

3、指向int型变量的指针不能使用double型变量的地址值进行赋值。T

4、定义指针的说明语句中,在指针名前边的*,与执行语句中在指针名前边的*具有相

同功能。F

5、在给指针赋值时,要求指针与被赋值的地址值类型相同,级别一样。T

6、数组名是一种地址值,它可以用来给指针赋值,但要求类型相同和级别一致。T

7、任何两个指针进行比较运算是无意义的。F

8、指针运算实际是地址运算,指针加一就是实际的地址值加一。F

9、数组元素可以使用下标表示,也可以使用指针表示。T

10、指针数组的元素可以是不同类型指针的集合。F

二、填空题。

1、单目运算符&后跟变量名,表示是该变量的地址,单目运算符*后跟指针名,

表示该指针的内容。

2、指针用来存放某个变量的地址值。

3、已知:char *c=”good”;则printf(“%s\n”,c)输出为good ,printf(“%s\n”,c+1)

输出为ood 。

4、若有定义:int a[10],*p=a;则*(p+5)表示a[5]的值。

5、若有定义:int* p;则*p表示___ p所指向的变量的内容___________ 。

相关主题
相关文档
最新文档