北大网络教育(计算机专业)C程序设计作业答案(共8页).doc
精选优质文档-倾情为你奉上北大网络教育(计算机专业)C程序设计作业答案第一章作业一、将数150、10.75、50.375用十六进制表示150=96;10.75=A;50.375=32150(十进制)=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) c102、下列变量名中, A 是合法的。 A) _boo B) 70A C) 30b D) while3、下列常量中, 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)75、已知c2为字符型,则执行语句c2=C+8-A后,c2的值为 D 。 A) 12 B) 11 C)不确定的值 D) 106、设a为double变量,b为int型变量,c为字符型变量,则a+b+c为( C )型 A) int B) float C) double D) char7、语言中不可用作标识符的字符有( B ) A 下划线 B %C 数字 D 字母 8、设int a;则表达式a=2,4,a+2的值是( D ) A.1 B.2 C.3 D.49.设a为字符变量,b为int型变量,c为double型变量,则a*b+c为( C )型 A. int B. float C. double D. char10. 若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. %x2、在printf()函数的格式说明符中,字符型数的输出格式说明符是 D 。A. %s B. %f C. %ld D. %c3、 已知ch是字符型变量,下面不正确的赋值语句是 C 。A) ch=7+9; B) ch=0; C) ch=x+y; D) ch=5+9;4、要使用putchar()函数必须在程序前加语句 A 。A. #include <stdio.h> B. include <stdio.h>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 <stdio.h>void main()char c=k;printf(“%d,%cn”,c,c);printf(“%d,%cn”,b,b);107,k98,b2. #include <stdio.h>void main()int a;float d;printf(“Enter a and d: ”);scanf(“%d%f”,&a,&d);printf(“%5d,%8.2fn”,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. 44、已知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=30C. x=20,y=30,z=10 D. x=20,y=30,z=205、设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 != 01、当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>z2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变;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. 42、对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 <stdio.h>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. T1、While循环语句的循环体至少执行一次。(F )2、任何循环语句的循环体至少都可执行一次。( ) F3、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 <stdio.h>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. D1、在C语言中,引用数组元素时,其数组下标的数据类型允许是 B 。A.整型常量 B. 整型常量或整型表达式C. 整型表达式 D. 任何类型的表达式2、若有说明:int a34;则对a数组元素的正确引用是 B 。A. a24 B. a1+110 / 5 C. a1,3 D. a(2)(1)3、已知 int w24=7,15,8,9,20,25,14,17;则 w01的值是 C A 8 B.9 C. 15 D. 254、若有说明 int a3=1,2,3,4,5,6,7, 8;则a数组第一维的大小是 C 。A. 2 B无确定值 C. 3 D. 45、若有说明 int a4=1, 2, 3, 4, 5;则a数组第一维的大小是 C 。A. 2 B无确定值 C. 3 D. 语法错误6、下面程序的运行结果是 B 。char c5=a,b,c, 0,c,0;printf(“%s”,c);A. ab B. abc C. ab c D. ab7、判断字符串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 q25; 定义的数组 q 包含 A 个元素 A. 10 B 8 C. 5 D. 210、已知 char c6="ABCDE", d6;要将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 ,a33= 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",aij); printf("n"); printf("n"); for(i=0; i<3; i+) s1=s1+aii; s2+=ai2-i; printf("s1=%d, s2=%dn",s1,s2); a:4 9 65 3 12 8 7 s1=14,s2=11第八章作业一、选择题1.D 2.D 3.B 4.C 5. B1.在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 102.void main()int i=0;while(+ i) if(i= =10) break;if(i%3!=1) continue;printf(“%dn”,i);2.1 47第十章作业一、判断题。1、 指针和一般变量一样都有两个值:一个是它在内存中的地址值,另一个是它所存放的数据值。T2、 指针存放的值就是它所指向的变量的地址值。T3、 指向int型变量的指针不能使用double型变量的地址值进行赋值。T4、 定义指针的说明语句中,在指针名前边的*,与执行语句中在指针名前边的*具有相同功能。 F5、 在给指针赋值时,要求指针与被赋值的地址值类型相同,级别一样。T6、 数组名是一种地址值,它可以用来给指针赋值,但要求类型相同和级别一致。T7、 任何两个指针进行比较运算是无意义的。F8、 指针运算实际是地址运算,指针加一就是实际的地址值加一。F9、 数组元素可以使用下标表示,也可以使用指针表示。T10、 指针数组的元素可以是不同类型指针的集合。F二、 填空题。1、单目运算符&后跟变量名,表示是该变量的 地址 ,单目运算符*后跟指针名,表示该指针的 内容 。 2、指针用来存放某个变量的 地址值 。3、已知:char *c=”good”;则printf(“%sn”,c)输出为 good ,printf(“%sn”,c+1)输出为 ood 。4、若有定义:int a10,*p=a;则*(p+5)表示 a5 的值。5、若有定义:int* p;则*p表示_ p所指向的变量的内容_ 。专心-专注-专业