【打基础】高级语言程序设计·厦大出版社 课后习题个人记录1

本文记录了一名学生在自学C语言过程中的心得与体会,详细解答了教材中的思考题与编程练习,包括符号常量的定义、ASCII码查询、整型溢出解释等内容。

【前记】 

      大一时,贪玩骂人,没有认真地跟着忠孝教授好好学习C语言。后来虽然又花了些时间查阅,但总归没有花一段连续的时间来研读这本教材《高级语言程序设计》(厦门大学出版社·黄翠兰主编),趁着实习前的这段空闲时间,重新拿起学习,并认真做好课后的习题,做到每题都弄懂,打好基础!有闲暇了,数据结构和C++也每题必做!发到自己的博客上监督自己完成!奋斗

 

【第二章】

1.思考题

  (1)用#define定义符号常量有什么好处?

   答:a.含义清楚;b.能做到“一改全改”。

  (2)用何种办法可以迅速找出回车换行符“\n”的ASCII码?

   答:printf("%d",'\n');

  (3)从整数在机内的表示方式的角度举例说明整形溢出的问题。

  答:整数在机内是用补码表示的,由于不同整形变量所占用的内存大小不同,所以,所能表示的数的范围也不同。例如,unsigned short 占用2字节,表示范围0~65535,用它来表示负数或者大于65535的整数时就溢出。

 (4)写出4个不同的表达式,分别将整型变量n减去1。

  答:n--,--n,n=n-1,n-=1。

 (5)试运行下面的代码,猜想其结果是如何得到的,并查资料验证你的想法。

   void main (void)

{

  int a,b,c;

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

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

}

答:2,scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。

(6)(略)

#include <stdio.h>

void main(){
  int a;
  char c;
  scanf("%d",&a);
  scanf("%c",&c);
  printf("a = %d,c=%d\n",a,c);
  getch();
}

2.分析下列程序的运行结果。

(1)

#include <stdio.h>
void main(){
  printf("ab c\t de\rf\tg\n");
  printf("h\ti\b\bj k");
  getch();
}

关于转义字符!

(2)

#include <stdio.h>
void main(){
  unsigned int a = 65535;
  printf("a=%d,%o,%x,%u\n",a,a,a,a);
  getch();
}

格式化输出!%d 十进制整数;%o 八进制整数; %x十六进制整数; %u十进制形式输出无符号数,例如地址值。

(3)#include <stdio.h>
void main(){
  int x,y,z,a,b,c;
  x=3;
  y=3;
  z=3;
  y+=++x;
  z+=x++;
  a=(x++)+(++x);
  b=-x++;
  c=-++x;
  printf("x=%d,y=%d,z=%d,a=%d,b=%d,c=%d",x,y,z,a,b,c);
  getch();
}

我只能说,哪天,我遇到这样的前辈遗码,我一定折服于他写出了这样的代码!

(4)略

3.略

4.略

5.用下面的scanf函数输入数据,使a=10,b=20,c1='a',c2='A',x=1.5,y=-1.5,请问该如何输入数据?

scanf("%5d%5d%c%*3c%dx%fy%f",&a,&b,&c1,&c2,&x,&y);

不至于叫用户一口气格式化输入这么多数据吧?

6.编程题

(1)输入直角三角形的两直角边的边长,求斜边的长度和三角形的面积。

#include <stdio.h>
#include <math.h>
void main(){
 float a,b,c,p,area;
 printf("请输入直角边a:\n");
 scanf("%f",&a);
 printf("请输入直角边b:\n");
 scanf("%f",&b);
 c = sqrt(a*a+b*b);
 if(a+b<=c||a+c<=b||b+c<=a)
 printf("输入的三边不能组成三角形!\n");
 p = (a+b+c)/2;
 area = p*(p-a)*(p-b)*(p-c);
 printf("斜边长:%f 面积:%f \n",c,area);
 getch();
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值