欢迎光临散文网 会员登陆 & 注册

厦门大学《C语言程序设计》第四版教材课后习题答案

2021-03-17 21:39 作者:Idream璀璨  | 我要投稿

本文是厦门大学《C语言程序设计》教材第四版课后习题的完整答案。完整版答案word文档共38页,10章内容,由于篇幅限制本文只放出第1-4章内容部分,需者自取~~~

关注我+给本篇文章点赞投币收藏+截图私信我,即可领取本文完整文档~~~

祝大家学习进步,考试顺利!!!



   第一章 绪论

一、问答题

1、下面列出一些C语言编写的基本规则,请指出正确规则。

(1)语句结束必须用分号

(2)程序中的标点符号(如分号“;”)必须用英文的标点符号

(3)注释不影响程序的运行

(4)\n实现换行

(5)main函数必不可少

(6)若使用printf输出结果,则必须在程序前添加#include<stdio.h>

答案:正确规则有(1)(2)(3)(4)(5)(6)

 

2、请指出下面程序的错误。

int mian()

{

  printf(“hello world”)

  return 0;

}

(1)printf(“hello world”)后面少分号。

(2)主函数名写错。

(3)多了return 0;

(4)main()后面少分号。

(5)少了#include<stdio.h>

答案:(1)(2)(5)

 

3、指出输出结果为500+200=700的语句。

答案:(1)printf(“500+200=%d”,500+200);

     (2)printf(“500+200=700”);

 

4、下面是关于C程序注释的叙述,指出其中正确的。

答案:正确的有

(1)/*......*/可以注释多行,也可以注释一行

(4)//是行注释,从//开始至行尾为注释内容

 

5、设有程序“1.cpp”,编译后运行该程序,执行的是()文件

答案:(3)1.exe

 

二、单选题

1、下面的叙述正确的是()

答案:A、一个C的源程序可以由一个或多个函数组成

2、C程序是从()开始执行的

答案:A、主函数

3、下面程序的运行结果是()

答案:A、程序出错,不能运行      原因是:/*没有对应的*/

4、以下正确的printf语句是()

答案:A、printf(“This is a C program.\n”);

三、编程题

1、编写一个程序,在屏幕上显示下列信息:

We study the C programming language.

We all like it.

 

#include <stdio.h>

void main()

{

  printf("We study the C Programming language.\nWe all like it.\n");

/*或者printf("We study the C Programming language.\n”);

      printf(“We all like it.\n");  */

 

}

 

2、编写一个程序,在屏幕中央显示你的姓名、学号和出生日期。

#include <stdio.h>

void main()

{

  printf("姓名:郑杭杰\n学号:23020091152716\n出生日期:19870118\n");

}

 

3、编写一个程序,在屏幕上显示下列信息

This Program prints a formula:

72*88=6336

 

答案

#include <stdio.h>

void main()

{

  printf("This Program prints a formula:\n”);

printf(“72*88=%d\n",72*88);

}

 第二章 

一、      问答题

1、  下面哪些是C语言的合法常量?

(1)       是(2)是(3)否(4)是(5)是(6)否(7)是(8)是

2、  为下面的每个数据,选择short,int,long,float,double中能存储他们的最小类型

(1)       int(2)int(3)short(4)float

3、  编程求1/20的值,下面哪个公式结果为0?

(1)1/20

4、有int型变量a、b,求a与b的平均值,为得到精确值,可以使用下面哪些公式?

   (2)(a+b)/2.0

   (3)(a+b)/2.

(4)(float)(a+b)/2

5、在C语言中的=并不是数学符号中的等号,指出下面错误的表达式

   (2)3=a

 (3)x+1=6

6、下面两个语句都正确吗?请将不正确的改正

   (1)int a=b=c=5    不正确,int a=5,b=5,c=5 ;

7、printf(“%d”,表达式);语句将输出表达式的值,(1)上面两个语句输出的结果都相同,都是2,问:为什么结果相同?

++i是先让i自加1后再参加其他运算,所以第一个输出2,这时候i的值已经变成2,所以下一个仍输出2

(2)       输出结果相同吗?

   不同,i++是先参加其他运算i再自加1,所以先输出结果为1,这时执行i++,i的值为2,第二个输出结果为2

     8、将下列数学式子改成合法的C语言表达式

        (1)fabs((x+y)*(z+u)+2*c)

        (2)3.14* r*r/(a+b)

(3)(In(x)+cos(y))/3

(4)4*x*x*x+2*exp(y)

(5)4*3.14*R*R

     9、说出下列C语言表达式的值和类型

        (1)-5,int

        (2)6,int

        (3)24.0,double

        (4)100.5,double

        (5)5,int

     10、指出可以使整型变量i的值加1的语句

        (1)i++   (2)++i  (3)i=i+1   (4)i+=1

     11、下面3组语句能完成变量a,b两个变量值的交换吗?

        (1)可以 (2)可以 (3)不可以

二、单选题

   1.D 2.C 3.C 4.B 5.C 6.A 7.A 8.A 9.A 10.A 11.A 12.B 13.D 14.A

三、编程题

1、编写程序,输出|-6|+16.3*5.4的值

#include<stdio.h>
#include<math.h>

int main()
{

printf("%f\n",abs(-6)+16.3*5.4);
  return 0;
}

 

 

2、编一程序,输入a,b两个值,输出两个数中较大值的平方根。a和b两数的较大值为(a+b+abs(a-b))/2

 

#include<stdio.h>

#include<math.h>

 

int main()

{

  int a,b,max;

  float c;

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

  max=(a+b+abs(a-b))/2;

  c=sqrt(max);

  printf("%f\n",c);

  return 0;

}

 

3、编一程序,计算从键盘输入的一个数的平方和立方。

 

#include<stdio.h>

#include<math.h>

 

int main()

{

  double a,b,c;

  scanf("%lf",&a);

  b=a*a;

  c=a*a*a;

  printf("%.2f\n",b);

  printf("%.2f\n",c);

  return 0;

}

 

4、编写程序,从键盘输入四个实数,输出他们的平均值

#include<stdio.h>

#include<math.h>

 

int main()

{

  double a,b,c,d,avg;

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

  avg=(a+b+c+d)/4;

  printf("%.2f\n",avg);

  return 0;

}

 

5.编写程序,从键盘输入两个字符分别存放在变量c1,c2中,要求交换c1和c2的值并输出

#include<stdio.h>

void main(){

char c1,c2,temp;

scanf(“%c,%c”,&c1,&c2);

temp=c1;

c1=c2;

c2=temp;

printf(“after:c1=%c,c2=%c\n”,c1,c2);

 

}

第三章

一、问答题

查找下列程序段的错误,并将其改正。

    (1)   float  x,y;

        scanf(“%f , %f”,x,y);

   (2) double  f=3.1415926;

        printf  ( “%d”,f);

(3)  float  x, y;

    scanf (“%f%f\n”,x ,y);

(4)  double x; long y;

         scanf ( “%f%d”,&x,&y);

    (1) 将scanf(“%f , %f”,x,y); 改为 scanf(“%f , %f”, &x, &y);

   (2)将printf ( “%d”,f); 改为 printf ( “%f”,f);或printf ( “%lf”,f);都可以.

   (3)将scanf (“%f%f\n”,x ,y); 改为scanf (“%f%f”,&x ,&y);

   (4)将scanf ( “%f%d,&x,&y);改为scanf ( “%lf%ld”,&x,&y);

二、选择题

1、A

2、A

3、putchar函数可以向终端输出一个D)字符或字符变量值

4、运行以下程序时,从键盘输入25,13,10(回车),则输出结果是A)a1+a2+a3=48

main() {

    int a1,a2,a3;

    scanf(“%d,%d,%d”,&a1,&a2,&a3);

    printf(“a1+a2+a3=%d\n”,a1+a2+a3);

}

5、若有以下定义和语句

char c1=’b’,c2=’e’;

printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);

则输出结果是B) 3,E

6、下面的语句正确地描述了计算公式。C)y=(a*x*x*x)/(x-b)

7、有以下列程序,叙述正确的是B)程序输出小写字母m

   void main ()

{  char  a1=‘M’,a2=‘m’;

 printf (“%c\n”,(a1,a2));

}

三、编程题

1、请编程序 输入圆的半径,计算并输出圆的周长和面积。常量PI的值取3.14159,周长和面积取小数点后两位数字。

#include<stdio.h>

#define PI 3.14159

void main()

{

        float r,s,c;

        printf("输入半径:");

        scanf("%f",&r);

        s=PI*r*r;

        c=2.0*PI*r;

        printf("圆的面积是:%.2f\n",s);

        printf("圆的周长是:%.2f\n",c);

}

2.编写程序,把整数华式温度f转换为浮点型的摄氏温度c。转换公式为c=5/9(f-32)计算并输出摄氏温度,输出时要求有文字说明,取2位小数。

#include<stdio.h>

void main()

{

        float f,c;

        printf("输入华氏温度:");

        scanf("%f",&f);

        c=5.0/9*(f-32);

        printf("摄氏温度是:%.2f",c);

}

3.编写程序,从键盘输入一个5位正整数,然后分别求出它的个位数、十位数、百位数、千位数和万位数,并打印出这5位数字的和。

#include<stdio.h>

int main()

{

        int num;

        int n1,n2,n3,n4,n5;

        printf("请输入一个5位整数\n");

        scanf("%d",&num);

        n1=num/10000;

        n2=num/1000%10;

        n3=num/100%10;

        n4=num/10%10;

        n5=num%10;

        printf("%d\n",n1+n2+n3+n4+n5);

        return 0;

}

4.输入三角形的三边长,求三角形面积。请编程序。

#include<stdio.h>

#include<math.h>

main()

{

        float a,b,c,s,area;

        printf("输入三角形的三条边长:");

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

        if(a+b>c&&a+c>b&&b+c>a)  {

                s=1.0/2*(a+b+c);

                area=sqrt(s*(s-a)*(s-b)*(s-c));

                printf("面积是:%f",area);

        }

        else

                printf("该三角形不存在!");

}

5.编写一个程序,输入一个小写字母,输出其对应的大写字母。

#include<stdio.h>

void main()

{

        char ch;

        printf("输入一个小写字母,将输出一个相应大写字母:");

        ch=getchar();

        ch=ch-‘a’+’A’;

        putchar(ch);

}

6、若a=3,b=4,c=5,x=1.2,y=2.4,z= -3.6,u=51274,n=128765,c1=’a’,c2=’b’,想得到以下的输出结果,请写出程序(包括定义变量和输出设计)。

#include<stdio.h>

int main()

{

        int a = 3, b = 4, c = 5;

        double x = 1.2, y = 2.4, z = -3.6;

        int u = 51274, n = 128765;

        char c1 = 'a', c2 = 'b';

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

        printf("x=%.6f y=%.6f z=%.6f\n",x,y,z);

        printf("x+y=%.2f y+z=%.2f z+x=%.2f\n",x+y,y+z,z+x);

        printf("u=%6d n=%6d\n",u,n);

        printf("c1='%c' or %d(ASCII)\n",c1,c1);

        printf("c2='%c' or %d(ASCII)\n", c2, c2);

        return 0;

}

7、编写程序,社银行定期存款的年利率rate为3.25%,存款期为n年,存款本金为capital元,计算并输出n年后的本利之和deposit.

                   Interest(利息)=principal(本金)*rate(年利率)*n(年)

#include<stdio.h>

void main()

{

        float r=0.0325,n,c,d;

        printf("输入存款期n:");

        scanf("%f",&n);

        printf("输入本金c:");

        scanf("%f",&c);

        d=c*(r*n+1);

        printf("%f",d);

}

8、编写程序,输入销售员的销售额,计算并输出其月工资,公司规定销售员的工资由底薪加提成构成,底薪为1000元,提成为当月总销售额的9%

#include<stdio.h>

void main()

{

        float r=1000.0,n,d;

        printf("输入销售额n:");

        scanf("%f",&n);

        d=r+n*0.09;

        printf("%f",d);

}

 第四章

一、问答题

1、(1)1   (2)1 0 (3)1   (4)0   (5)1 3,4,5  (6)1 8,8,9   (7)1 2,1,1

2、(1)3,2,2     (2)1,2,3

3、t  %f %f  a=b

4、等价

二、单选题

1.D 2.C 3.C 4.A 5.A 6.C 7.A 8.D 9.D 10.D 11.A 12.B 13.C 14.C 15.C 16.B 17.C 18.B

三、编程题

    1、输入一个整数,判别它是奇数还是偶数。

#include<stdio.h>

void  main()

{

  int n;

  scanf("%d",&n);

  if(n%2==0) printf("%d是偶数\n",n);

  else printf("%d是奇数\n",n);

}

 

2、从键盘输入一个字符,如果输入的是大写字母,则将它转换成小写字母后输出,否则输出原来输入的字符。

#include<stdio.h>

void main()

{

  char c;

  scanf("%c",&c);

  if(c>='A'&&c<='Z')  printf("%c\n",c-‘A’+’a’);

  else printf("%c\n",c);

}

3、输入一个不超过4位的整数,确定这个数的位数并输出。

#include<stdio.h>

void main()

{

   int n,

   sacnf(“%d”,&n);

   if(n<0)

      n=-n;  //保证n是正数

   if(n<=9)

      printf(“一位数”);

   else if(n<=99)

      printf(“二位数”);

else if(n<=999)

      printf(“三位数”);

   else if(n<=9999)

      printf(“四位数”);

   else

      printf(“输入错误”);

}

 

4、输入24小时制的时间,输出12小时制的格式。

#include <stdio.h>

void main()

{ int hour,minute;

    scanf(“%d:%d”,&hour,&minute);

    if( hour<12 )

       printf(“%d:%d AM”, hour, minute);

    else

       printf(“%d:%d PM”,hour-12,minute);   

}

 

5、输入两个日期,判断并输出哪个日期更早,要求日期格式为mm/dd/yy

#include <stdio.h>

void main()

{ int month1,day1,year1,month2,day2,year2;

    printf(“Enter first date(mm/dd/yy):”);

    scanf(“%d/%d/%d”,&month1,&day1,&year1);

    printf(“Enter second date(mm/dd/yy):”);

    scanf(“%d/%d/%d”,&month2,&day2,&year2);

    if( year1==year2 && month1==month2 && day1==day2)

        printf(“equal day”);

    else if( year1<year2 || (year1==year2 && month1<month2) 

|| (year1==year2 && month1==month2 && day1<day2 ) )

        printf( “%d/%d/%d is earlier than %d/%d/%d\n”,

month1,day1,year1,month2,day2,year2);

        else

       printf( “%d/%d/%d is later than %d/%d/%d\n”,

month1,day1,year1,month2,day2,year2);

 

}

 

6、输入4个整数,从中找出最大值和最小值并输出。要求尽可能少使用IF语句

#include<stdio.h>

void main(){

int a,b,c,d,max1,max2,min1,min2;

scanf(“%d%d%d%d”,&a,&b,&c,&d);

if(a>b)

 {max1=a; min1=b;}

else

    {max1=b; min1=a;}

if(c>d)

 {max2=c; min2=d;}

else

    {max2=d; min2=c;}

printf(“max=%d\nmin=%d\n”,max1>max2?max1:max2,min1<min2?min1:min2);

}

 

7、输入三角形三条边的长度,判断是否构成三角形,是否为直角三角形

#include<stdio.h>

void main()

{ float a, b, c;

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

if (a+b>c&&a+c>b&&b+c>a)  {

printf("构成三角形!\n");

if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)

printf("是直角三角形!\n");

else

printf("不是直角三角形!\n");

}

else

printf("不能构成三角形!\n");

}

   8、输入员工的工作时间,计算并输出该员工的工资。公司规定每个雇员40小时以内的报酬为10.00美元/小时,超出40小时以外的按工资的1.5倍工资付酬。

 #include<stdio.h>
void main()
{
  float  hour,salary;
  scanf("%f",&hour);
  if(hour<=40) salary=10*hour;
  else salary=400+(hour-40)*10*1.5;
  printf("该员工工资为%.2f\n",salary);
}

   9、根据分段函数y=f(x)的定义,输入x,输出y的值

 #include<stdio.h>
#include<math.h>
void main()
{
  float x,y;
      scanf("%f",&x);
      if(x<=-1)  y=2*x*x*x-1;
      else if(x<=0) y=x*x;
      else if(x<=1) y=sqrt(x);
      else y=3*x+2;
      printf("%.2f",y);

}

10、输入某年某月某日,计算这一天是该年的第几天

#include<stdio.h>

void main()

{  int year,month,day,sum;

    scanf("%d%d%d",&year,&month,&day);

sum=day;

switch(month) {

   case 12: sum+=30;/*第11月的天数*/

       case 11: sum+=31; /*第10月的天数*/

       case 10: sum+=30; /*第9月的天数*/

       case 9 : sum+=31;

   case 8: sum+=31;

   case 7: sum+=30;

   case 6: sum+=31;

   case 5: sum+=30;

       case 4: sum+=31;

       case 3: if( year%400==0 || year%4==0 && year%100!=0 ) sum+=29;

             else sum+=28;

       case 2: sum+=31;

       case 1: break;

       default : printf(“月份输入有误!”);break;

}

printf("该日是该年的第%d天\n",sum);

}

 

11、判断体重属于何种类型

#include<stdio.h>

void main()

{

  float weight,height,t;

  scanf("%f%f",&weight,&height);

  t=weight/(height*height);

  if(t<18) printf("体重偏轻\n");

  else if(t<25) printf("体重正常\n");

  else if(t<27) printf("体重超重\n");

  else printf("肥胖\n");

}

 


厦门大学《C语言程序设计》第四版教材课后习题答案的评论 (共 条)

分享到微博请遵守国家法律