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

来源:互联网 发布:windows硬盘安装工具 编辑:程序博客网 时间:2024/05/16 14:20

【前记】 

      大一时,贪玩骂人,没有认真地跟着忠孝教授好好学习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();}