北京大学秋季学期《C语言程序设计》作业答案.docx

上传人:b****5 文档编号:7470774 上传时间:2023-01-24 格式:DOCX 页数:13 大小:41.54KB
下载 相关 举报
北京大学秋季学期《C语言程序设计》作业答案.docx_第1页
第1页 / 共13页
北京大学秋季学期《C语言程序设计》作业答案.docx_第2页
第2页 / 共13页
北京大学秋季学期《C语言程序设计》作业答案.docx_第3页
第3页 / 共13页
北京大学秋季学期《C语言程序设计》作业答案.docx_第4页
第4页 / 共13页
北京大学秋季学期《C语言程序设计》作业答案.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

北京大学秋季学期《C语言程序设计》作业答案.docx

《北京大学秋季学期《C语言程序设计》作业答案.docx》由会员分享,可在线阅读,更多相关《北京大学秋季学期《C语言程序设计》作业答案.docx(13页珍藏版)》请在冰豆网上搜索。

北京大学秋季学期《C语言程序设计》作业答案.docx

北京大学秋季学期《C语言程序设计》作业答案

北京大学2015年秋季学期《C语言程序设计》

作业答案

作业提交格式要求:

请同学们把答案集中单独写在一个.doc文档中,作为附件上传(不要把答案直接填写在题目的空中)。

特规定格式如下:

一、ABCDDAAAAA

二、

(1)BeiJingShangHai

(2)x=8,y=7

(3)r=k:

i+j=90

„„

以上只是举例,不是正确的输出结果。

请按上述规定书写和提交作业结果,不符合以上规定的作业将作为0分处理。

鼓励独立完成作业,严惩抄袭。

第一章作业

一、将数213、12.75、79.375用十六进制表示

答案:

0xD5、0xC.C、0x4F.6

二、填空

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

答案:

159

2.字母a的ASCII码为十进制数___________。

答案:

97

第二章作业

(1)

一、选择题:

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

A)MyCarB)4aC)my_carD)a48

答案:

B

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

A)56AB)_abcC)48bD)while

答案:

B

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

A)78B)0x7aC)x56D)063

答案:

B

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

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

答案:

B

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

A)‘C’B)‘D’C)不确定的值D)70

答案:

B

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

A)intB)floatC)doubleD)char

答案:

C

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

A字母

B数字

C%

D下划线

答案:

C

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

A.1

B.2

C.3

D.4

答案:

C)。

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

A.int

B.float

C.double

D.char

答案:

C

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

A.20B.23C.26D.46

答案:

C

第二章作业

(2)

一、选择题

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

A.%ldB.%lfC.%dD.%x

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

A.%cB.%fC.%ldD.%s

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

A)ch=’a+b’;B)ch=’\0’;C)ch=’7’+’9’;D)ch=5+9;

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

A.#include

B.include"stdio.h"

C.include

D.#include'stdio.h'

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

x=7;

x+=x-=x+x;

A.-14B.-7C.0D.14

二、判断题

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

(F)

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

(F)

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

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

1.

#include

voidmain()

{

charc=’p’;

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

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

答案:

112,p

97,a

2.

#include

voidmain()

{

inta;

floatd;

printf(“Enteraandd:

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

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

Enteraandd:

5615.765↙答案:

3个空格56,3个空格15.77

第四章作业

一、选择题。

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

A.

=

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

A.‘A’<=ch<=’Z’B.(ch>=’A’)&&(ch<=’Z’)

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

3、设有:

inta=1,b=2,c=3,d=4,m=2,n=2;

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

A.1B.2C.3D.4

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

if(x>y)

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

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

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

5、设a=3,b=4,c=5,则表达式!

(a+b)+c-1&&b+c/2的值为(B)

A.0B.1C.4D.6.5

二、填空题。

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

2、当a=5,b=4,c=2时,表达式a>b!

=c的值是1。

3、15!

=8+7||4<5&&3>9/4的结果是1。

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

5、整型变量X能被100整除但不能被400整除(X%100==0)&&(X%400!

=0)。

三、程序填空题。

请在【】中填上正确内容。

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

main()

{intx=4,y=6,z=7;

int【1】;

if(【2】)u=x;

elseu=y;

if(【3】)v=u;

elsev=z;

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

}

答案:

ux>yu>v

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

main()

{charch;

scanf(“%c”,&ch);

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

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

printf(“%c”,ch);

}

答案:

(ch>=’A’)&&(ch<=’Z’)ch=ch-32

第五章作业

一选择题。

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

intn=0;

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

A.2B.3C.4D.有语法错误

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()

{intc;

while((c=getchar())!

=’\n’)

switch(c-'2')

{case0:

case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+3);

default:

putchar(c+2);break;

}

}

A.668966B.6688766C.668977D.66778777

二判断题

1、条件语句是可以实现多路分支的。

(T)

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

(F)

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

(T)

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

(F)

5、While循环语句的循环体至少执行一次。

(F)

三填空题

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

2.while循环是先判断表达式,如果为_____真___,执行循环体,然后再判断表达式,直到表达式为假,退出循环。

四程序填空题

1下面程序的功能是计算1-3+5-7+„„-99+101的值

#include

main()

{inti,t=1,s=0;

for(i=1;i<=101;i+=2)

{【1】;s=s+t;【2】;}

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

}

答案:

t=-i;

s=-s;

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

#include

main()

{inti,j;

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

{j=i*10+6;

if(【2】)continue;

printf(“%d”,j);

}

}

答案:

i<10;

if((j%3)!

=0)

第六章作业

一、选择题

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

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

C.整型常量或整型表达式D.任何类型的表达式

2、以下能对一维数组a进行正确初始化的语句是C。

A.inta[10]=(0,0,0,0)B.inta[10]={};

C.inta[]={0};D.inta[10]={10*1};

3、若有说明:

inta[3][4];则对a数组元素的正确引用是C。

C。

A.a[2][4]B.a[1,3]C.a[1+1][0]D.a

(2)

(1)

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

A8B.9C.15D.25

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

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

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

charc*5+=,‘a’,’b’,’\0’,’c’,’\0’-;

printf(“%s”,c);

A.‘a’’b’B.abcC.abcD.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、用doubleq[3][5];定义的数组q包含D个元素

A.3B5C.8D.15

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

A.d=c;

B.c=d;

C.strcmp(c,d);

D.strcpy(d,c);

二、判断题

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

(F)

2.数组中的元素类型可以不同;(F)

3.字符串"This"大于字符串"that";(F)

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

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

三、程序填空题。

invstring(chara[])函数的功能是使输入的一个字符串按逆序存放,在主函数中输入和输出字符串。

请填空【?

】。

voidinvstring(chara[])

{intn,j;charc;

n=0;填空:

while(a[n]!

=【1】)n++;【1】‘\0’for(j=0;j<【2】;j++)【2】n/2

{c=a[j];【3】;【4】;}【3】a[j]=a[n–j-1]}【4】a[n–j-1]=cmain()

{chara[80];

gets(a);

invstring(【5】);【5】aputs(a);

puts("\n");

}

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

main()

{inti,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:

496

531

287

S1=14,s2=11

第七章作业

一、选择题

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

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

B.允许函数递归调用。

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

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

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

A.doublefun(intx,inty){z=x+y;returnz;}

B.fun(intx,y){intz;returnz;}

C.fun(x,y){intx,y;doublez;z=x+y;returnz;}

D.doublefun(intx,inty){doublez;z=x+y;returnz;}

3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B

A.地址传递

B.单向值传递

C.双向值传递。

即由实参传给形参,再由形参传回给实参

D.由用户指定传递方式

4.一个C语言程序是由(B)。

A.一个主程序和若干子程序组成

B.若干函数组成

C.若干过程组成

D.若干子程序组成

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

A.数组第0个元素的值)。

B.数组首地址

C.数组元素个数

D.数组全部元素的值

二、写出程序的输出结果

1.

voidmain(void)

{

inta=1,k;

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

intf1(intx)

{

staticintz=3,y=0;

y++;

z++;

return(x+y+z);

}

答案:

***6***8***10

2.

voidmain()

{

inti=0;

while(++i)

{

if(i==10)break;

if(i%3!

=1)continue;

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

}

}

答案:

1

第八章作业

一、判断题。

1、指针和一般变量一样都有两个值:

一个是它在内存中的地址值,另一个是它所存放的数据值。

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

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

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

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

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

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

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

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

10、指针数组的元素是类型相同指针的集合。

答案:

1-10TTFFTTFFTT

二、填空题。

1、单目运算符&后跟变量名,表里是该变量的(地址),单目运算符*后跟指针名,表示该指针的(指向的对象的值)。

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

3、已知:

char*c=”good”;则printf(“%s\n”,c)输出为(good),printf(“%s\n”,c+1)输出为(ood)。

4、若有定义:

inta[10],*p=a;则*(p+5)表示(a[5])的值。

5、int*p;在*p运算中,表示取__p指向的对象的内容____________。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1