C语言程序设计教程第2版课后习题答案杨路明.docx

上传人:b****1 文档编号:2019278 上传时间:2023-05-02 格式:DOCX 页数:85 大小:35.67KB
下载 相关 举报
C语言程序设计教程第2版课后习题答案杨路明.docx_第1页
第1页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第2页
第2页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第3页
第3页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第4页
第4页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第5页
第5页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第6页
第6页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第7页
第7页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第8页
第8页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第9页
第9页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第10页
第10页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第11页
第11页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第12页
第12页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第13页
第13页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第14页
第14页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第15页
第15页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第16页
第16页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第17页
第17页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第18页
第18页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第19页
第19页 / 共85页
C语言程序设计教程第2版课后习题答案杨路明.docx_第20页
第20页 / 共85页
亲,该文档总共85页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计教程第2版课后习题答案杨路明.docx

《C语言程序设计教程第2版课后习题答案杨路明.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程第2版课后习题答案杨路明.docx(85页珍藏版)》请在冰点文库上搜索。

C语言程序设计教程第2版课后习题答案杨路明.docx

C语言程序设计教程第2版课后习题答案杨路明

第一章 C言语次序计划概述

-习题谜底1

 算法的描绘有哪些根本办法?

 

答 1、天然言语

2、公用东西

 2 C言语次序的根本构造是怎么样的?

举一个例子阐明。

 答

 1、C言语次序由函数形成;

2、“/*〞与“*/〞之间的内容形成C言语次序的正文局部;

3、用预处置下令#include、#define能够包括有关文件或预约义信息;

4、巨细写字母在C言语中是有区不的;

5、除main()函数跟规范库函数外,用户也能够本人编写函数,运用次序普通由多个函数构成,这些函数指定实践所需求做的任务。

 

3 C言语有什么特色?

 

答 1、存在构造言语的特色,次序之间非常轻易实现段的共享;

2、要紧构造身分为函数,函数能够在次序中被界说实现独破的义务,独破地编译代码,以实现次序的模块化;

3、运算符丰厚,包括的范畴非常广;

4、数据范例丰厚;

5、同意直截了当访咨询物理地点,即可直截了当对硬件进展伤害,实现汇编言语的年夜局部功用;

6、限度不太严厉,次序计划自在度年夜,如此使C言语能够增加对次序员的约束;

7、天生的目的代码品质,次序履行效力高,同时C言语编写的次序的可移植性好。

4

 ★指出正当与分歧法的标识符定名。

 

 AB12--√leed_3-- a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--× 

5

 阐明以下TurboC热键的功用。

 

 F2:

源文件存盘 F10:

挪用主菜单 F4:

次序运转到光标所外行〔用于调试次序〕 Ctrl+F9:

编译并链接成可履行文件 Alt+F5:

将窗口切换到DOS下,检查次序运转后果。

 

6

 阐明以下TurboC方法下输入并运转以下次序,记载下运转后果。

 

 

 ①main()

 {printf("********************\n");

 printf("  welcomeyou  \n");

 printf("   verygood \n);

 printf("********************\n");

 }

 ②main()

 { inta,b,c,t;

   printf("pleaseinputthreenumbers;");

   scanf("%d,%d,%d",&a,&b,&c);/*课本S是过错的*/

   t=max(max(a,b),c);

   printf("maxnumberis:

%d\n",t);

 }

 intmax(intx,inty)

 {intz;

   if(x>y)z=x;

   elsez=y;

   return(z);

 }

 

 运转后果:

********************

    welcomeyou

     verygood

********************

 运转后果:

pleaseinputthreenumbers;3,1,4/*左侧下划线内容为键盘输入*/

maxnumberis:

4

 

7

 一个C次序是由假设干个函数形成的,此中有且只能有一个___函数。

 

 main()

 

8

 在TurboC情况下进展次序调试时,能够运用Run下拉菜单的___下令或按___键转到用户屏幕检查次序运转后果。

 

 1、Userscreen

2、Alt+F5

 

9

 ★C言语对标识符与要害字有些什么规则?

 

 1、标识符用来表现函数、范例及变量的称号,它是由字母、下划线跟数字构成,但必需用字母或下划线扫尾。

2、要害字是一种言语中规则存在特定含意的标识符,其不克不及作为变量或函数名来运用,用户只能依照零碎的规则运用它们。

 

10

 C源次序输入后是怎样进展保管的?

 

 是以C为扩年夜名保管的纯文本文件。

 

 

第二章 C言语次序的根本数据范例与表白式

-习题谜底

1

 ★指出以下常数中哪些是契合C语法例则的。

 

 '\'--× '101'--× "\"--× e3--× 019--√ 0x1e--√ 

"ab\n"--√ 1.e5--× (2+3)e(4-2)--× 5.2e2.5--×

 

2

 请寻出以下次序中的过错,矫正后写出次序运转后果。

 

 

 ①voidmain()

 {intx,y=z=5,aver;

 x=7

 AVER=(x+y+z)/3

 printf("AVER=%d\n",aver);

 }

 ②voidmain()

 { charc1='a';c2='b';c3='c';

   inta=3.5,b='A'

   printf("a=%db=\'\"end\n",a,b);

   printf("a%cb%c\bc%c\tabc\n",c1,c2,c3);

 }

 

  main()

 {intx,y=5,z=5,aver;

 x=7;

 aver=(x+y+z)/3;

 printf("AVER=%d\n",aver);

 }

运转后果:

AVER=5

 ②main()

 { charc1='a',c2='b',c3='c';

   inta=3,b='A';

   printf("a=%d,b=\'%c\'\"end\"\n",a,b);

   printf("a%cb%c\bc%c\tabc\n",c1,c2,c3);

 }

运转后果:

a=3,b='A'"end"

     aabcc       abc

 

3

 写出以下赋值的后果,表格中写了数值的是要将它赋给其余范例的变量,将一切的空格填上赋值后的数据〔实数保管到小数点后两位〕。

int

 99

  

  

  

  

 -1

 

char

  

 'h'

  

  

  

  

 

unsignedint

  

  

 66

  

  

  

 

float

  

  

  

 55.78

  

  

 

longint

  

  

  

  

 68

  

 

 

 int

 99

 104

 66

 55

 68

 -1

 

char

 'c'

 'h'

 'B'

 '7'

 'D'

  

 

unsignedint

 99

 104

 66

 55

 68

 65535

 

float

 99.00

 104.00

 66.00

 55.78

 68.00

 -1.00

 

longint

 99

 104

 66

 55

 68

 -1

 

 

4

 ★写出次序运转后果。

 

 

 ①voidmain()

 {inti,j;

 i=8,j=10;

 printf("%d,%d,%d,%d\n",i,j,++i,j++);

 }

 ②main()

 { inta=1,b=2,c=30;;

   printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));

 }

留意:

a=b=c,a=b==c之间应为逗号,课本有误

 

 运转后果:

9,11,9,10

 运转后果:

30,1,0,0

 

 

 ③voidmain()

 {inta=10,b=20,c=30,d;

 d=++a<=10||b-->=20||c++;

 printf("%d,%d,%d,%d\n",a,b,c,d);

 }

  

 

 运转后果:

11,19,30,1

  

 

5

 ★写出上面表白式的值〔设a=10,b=4,c=5,d=1,x=2.5,y=3.5〕。

⑴a%=(b%=3)

⑵n++,a+=a-=a*=a

⑶(float)(a+c)/2+(int)x%(int)y

⑷a*=b+c

⑸++a-c+b++

⑹++a-c+++b

⑺a

x:

'A'

⑻b++==c

⑼a+b,18+(b=4)*3,(a/b,a%b)

⑽x+a%3*(int)(x+y)%2/4+sizeof(int)

⑾a

a:

c

c:

d

⑿b++==c

⒀a*=b=c=2

⒁a=b==c

 

 ⑴0⑵0⑶9.500000⑷90⑸10⑹10⑺'A'⑻2⑼4.5⑽1⑾0⑿20⒀0

 

6

 以下每组表白式中,被履行后后果完整等价的是哪些〔设a、b、m是已被赋值的整型变量〕?

 

 

 ①m=(a=4,4*5)与m=a=4,4*5

②(float)(a/b)与(float)a/b

③(int)a+b与(int)(a+b)

④m%=2+a*3与m=m%2+a*3

⑤m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b

 

 ①前面是赋值表白式,而前面的是一个逗号表白式,因此必定差别;

②前面的表白式中a/b后果为一整数,后果曾经取整,精度能够遭到妨碍,之后强迫float后才为浮点型,前面的是先将a转换为float后再与b相除,其值保障了精度,因此差别。

③因为a、b均为整数,其前后两个表白式的盘算后果是分歧的。

④前一表白式是一算术表白式,而后者为一赋值表白式,此为一点差别;其余,前一表白式的m只被赋过一次值,后一表白式中的m曾两次被赋值,第一次赋值时与第一表白式中的值分歧,第二次赋值后即不再一样。

⑤前后表白式的盘算后果应当是分歧的:

a=2,b=3,m=6

 

7

 前提表白式x>0?

x:

-x的功用是什么?

 

 假如x的值是一正数,那么表白式的值为x值;假如x的值是一非正数,那么表白式的值为-x。

事实上该表白式的值即为x的相对值,C言语中供给了一个函数fabs(x)即可实现此功用,该函数包括在math.h头文件中。

 

8

 用一个前提表白式描绘从a、b、c中寻出最多数赋给max.

 

 max=a>(b>c?

b:

c)?

a:

(b>c?

b:

c);

 

9

 ★假设x为int型变量,那么履行以下语句后x的值为〔  〕。

x=6;

x+=x-=x*x;

A.36 B.-60 C.60 D.-24

 

 B.

 

10

 ★假设有以下范例阐明语句:

charw; intx; floaty; doublez;

那么表白式w*x+z-y的后果为〔  〕范例。

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

 

 D.

 

 

第三章 次序构造次序计划

-习题谜底

1

 变量k为float范例,挪用函数scanf("%d",&k),不克不及使变量k失掉准确数值的缘故是___。

 

 格局润饰符与变量范例不分歧。

因为%d输入的数据范例应当为十进制整数,而&k为占用4个字节的float范例变量的地点。

 

2

 ★a=1234,b=12,c=34,那么履行“printf("|%3d%3d%-3d|\n",a,b,c);〞后的输入是___。

 

 |12341234|

剖析如下:

①%3d为右对齐输入变量,且指定输入变量的值宽度为3个字符位,假如变量实践位数小于3,那么左端补空格,假如变量实践位数年夜于3,那么按实践长度输入,不受限度。

②%-3d为左对齐输入变量,在输入变量时,如是变量实践位数小于3,那么在右端补空格,否那么按实践输入。

 

3

 ★设有“inta=255,b=8;〞,那么“printf("%x,%o\n",a,b);〞输入是___。

 ff,10

①假如“printf("%X,%o\n",a,b);〞那么输入为FF,10。

阐明在输入十六进制字母时,其巨细写受格局润饰符的限度,假如是“%x〞那么输入小写,假如是“%X〞那么输入年夜写。

②假如盼望在输入十六进制时输入前导符0x或0X,那么以上输入语句应改“printf("%#x,%o\n",a,b);〞为或“printf("%#X,%o\n",a,b);〞。

本条说明不用须控制。

 

4

 ★以下次序输入的后果是___。

main()

{

   inta1=1,a2=0,a3=2;

   printf("%d,%d,%d\n",a1,a1+a2+a3,a3-a1);

}

 

 1,3,1

 

5

 printf函数顶用到格局符%5s,此中5表现输入字符占用5列。

假如字符串长度年夜于5,那么按___输入;假如字符串长度小于5,那么按___输入。

 

 ①实践 ②左端补空格

6

 ★已界说变量如下:

inta1,a2;

charc1,c2;

假设请求输入a1、a2、c1跟c2的值,准确的输入函数挪用语句是___。

 

 scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2);

 

7

 输入两个整型变量a、b的值,输入以下算式以及运算后果___。

a+b、a-b、a*b、a/b、(float)a/b、a%b

每个算式占一行。

如a=10,b=5,a+b输入为:

10+5=15

 

 设inta=10,b=5;以下为输入语句及后果:

①printf("%d+%d=%d\n",a,b,a+b);       10+5=15

②printf("%d-%d=%d\n",a,b,a-b);       10-5=5

③printf("%d*%d=%d\n",a,b,a*b);       10*5=50

④printf("%d/%d=%d\n",a,b,a/b);       10/5=2

⑤printf("%(float)d/%d=%f\n",a,b,(float)a/b);    (float)10/5=2.000000

⑥printf("%d%%%d=%d\n",a,b,a%b);       10%5=0

 

8

 ★输入一个非正数,盘算以那个数为半径的圆周长跟面积。

 #definePI3.1415926

main()

{

     floatr,l,area;

     printf("Inputapositive:

");

     scanf("%f",&r);

     l=2*PI*r;

     area=PI*r*r;

     printf("l=%f\tarea=%f\n",l,area);

}

 

9

 输入恣意一个3位数,将其列位数字反序输入〔比方输入123,输入321〕。

 

 main()

{

  intx,y;

  printf("Inputanumber(100-999):

");

  scanf("%d",&x);

  y=100*(x%10)+10*(x/10%10)+x/100;  /*留意剖析此处算法*/

  printf("%d--->%d\n",x,y);

}

 

10

 ★输入恣意巨细的3个整数,推断此中能否有两个奇数一个偶数。

假设是那么输入YES,不是那么输入NOT〔请求用前提表白式进展推断,不运用if语句〕。

 

 main()

{

  intx,y,z,oddcount=0; /*奇数数计数变量*/

  printf("Inputx,y,z:

");

  scanf("%d,%d,%d",&x,&y,&z);

  x%2==1?

oddcount++:

0;

  y%2==1?

oddcount++:

0;

  z%2==1?

oddcount++:

0;

  oddcount==2?

printf("YES"):

printf("NOT");

}

 

11

 求先驱字符跟后继字符。

输入一个字符,寻出它的先驱字符跟后继字符,并按ASCII码值,按从年夜到小的次序输入这3个字符及其对应的ASCII码值。

 

 此题考察同窗们对字符范例数据的看法,假如在ASCII范畴内那么即能够表现为字符,又能够表现为整数值;不管能否能够表现为字符,字符范例数据是能够参加数值运算的,牢记。

main()

{

  charc;

  printf("Inputcharacter:

");

  scanf("%c",&c);

  printf("%c----->%d\n",c-1,c-1);

  printf("%c----->%d\n",c,c);

  printf("%c----->%d\n",c  +1,c+1);

  getch();  /*为便于调试次序,运转至此次序进展,如今能够看到运转后果,按恣意键次序真难过完毕并前往到编纂情况*/

}

 

12

 ★输入三角形的边长,求三角形面积〔面积=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2〕。

 

 #include"math.h"  /*因为次序中运用了开平方函数sqrt(),因此需求包括数学头文件*/

main()

{

  floata,b,c,s,area;

  intok=0;

  printf("Inputa,b,c:

");

  scanf("%f,%f,%f",&a,&b,&c);

  a+b>c?

ok++:

0;  /*以下3条语句为推断能否输入的数据能否形成封锁三角形*/

  a+c>b?

ok++:

0;

  b+c>a?

ok++:

0;

  ok==3?

(s=(a+b+c)/2,area=sqrt(s*(s-a)*(s-b)*(s-c)),printf("area=%f",area)):

printf("error");

  getch();

}

 

第四章 选择构造次序计划

-习题谜底

1

 ★设x、t均为int型变量,那么履行语句“x=10;t=x&&x>10;〞后,t的值为___。

 

 0

 

2

 ★假设一切变量均已正断界说,那么次序段:

inta=0,y=10;

if(a=0)y--;elseif(a>0)y++;

elsey+=y;

运转后y的值是___;

 

 20

 

3

 ★能表述20

 x>20&&x<30||+x<-100

 

4

 ★假设有界说语句“inta=25,b=14,c=19;〞,那么以下语句履行后果是___。

if(a<=25&&b<=2&&c)

   printf("***a+b=%d,a-b=%d***\n",a+b,a-b);

elseprintf("***a=%d,b=%d,c=%d***\n",a,b,c);

 

 ***a=25,b=14,c=19***

 

5

 ★假设i跟j为int型变量,那么履行以下语句后i的值是___。

inti=1;

switch(i)

{

   case1:

{for(j=0;j<9;j++)i+=j;break;}

   case2:

{for(j=1;j<10;j++)i+=j;break;}

   case3:

i++;

}

 

 37

剖析:

履行了case1:

跟case3:

中的代码。

同时case1:

语句中的{ }是能够撤消的。

 

6

 ★以下两条if语句可兼并成一条if语句,即___。

if(a<=b)x=1;

elsey=2;

if(a>b)printf("***y=%d\n",y);

elseprintf("***x=%d\n",x);

 

 if(a<=b)printf("***x=%d\n",x=1);

elseprintf("***y=%d\n",y=2);

 

7

 ★输入两个字符,假设这两个字符的序号〔ASCII码〕之差为偶数,那么输入它们的后继字符,否那么输入它们的先驱字符。

 

 main()

{

   chara,b;

   printf("Inputtwochatactera,b:

");

   scanf("%c,%c",&a,&b);

   if((a-b)/2==0)

   printf("%c,%c",a+1,b+1);

   elseprintf("%c,%c",a-1,b-1);

}

 

8

 ★输入整数a跟b,假如a能被b整除,就输入算式跟商,否那么输入算式、整数商跟余数。

 main()

{

   inta,b;

   printf("Inputtwointegernumbersa,b:

");

   scanf("%d,%d",&a,&b);

   if(b!

=0&&a%b==0)

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

   else

       printf("%d/%d=%d......%d",a,b,a/b,a%b);

}

 

9

 输入某个点A的破体坐标(x,y),推断〔输入〕A点是在圆内、圆外依然在圆周上,此中圆心坐标为(2,2),半径为1。

 

 include"math.h"

main()

{

   floatx,y,d;

   printf("Inputx,y:

");

   scanf("%f,%f",&x,&y);

   d=sqrt((x-2)*(x-2)+(y-2)*(y-2));

   if(d>1)printf("outside");

   elseif(d<1)printf("inside");

   elseprintf("inside");

}

 

10

 ★输入年号跟月份,输入这一年该月的天数〔一个年份,先推断能否闰年〕。

 

 main()

{

   inty,m,d,f;

   printf("Inputyearandmonthy-m:

");

   scanf("%d-%d",&y,&m);

   f=(y%4==0&&y/100!

=0||y/400==0);

   if(m==2)

     d=28+f;/*依照能否闰年决议2月份的实践天数,假设是闰年,那么f=1,d即为29天*/

   else

     d=31-(m==4)+(m==6)+(m==9)+(m==11);/*m==4时其值为1,那么本月为30天,典范算法,主要啊*/

   printf("%d-%dis%ddays.\n",y,m,d);

}

 

11

 ★请将以下语句改写成switch语句〔a>0〕。

if(a<30)        m=1;

elseif(a<40)   m=2;

elseif(a<50)   m=3;

elseif(a<60)   m=4;

else            m=5

 

 switch(a/10)

{

   case1:

   case2:

   case3:

m=1;break;

   case4:

m=2;break;

   case5:

m=3;break;

   case6:

m=4;break;

   default:

m=5;

}

 

12

 有一函数

   x-1   -5

y= x     x=0

   x+1   0

编写一次序,请求输入x的

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

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2