北大网络教育(计算机专业)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所指向的变量的内容___________ 。