C语言程序设计教程第二版高等教育出版社谭浩强张基温唐永炎等第1章1.1请叙述什么是高级语言?高级语言主要是指和机器硬件环境无关的程序设计语言。1.2什么是过程化语言?什么是非过程化语言?所谓面向过程语言,就是把解题过程看作是数据被加工的过程。其主要特点是数据与算法的分离。如C,PASCAL。可将过程程序设计语言简单地看作:程序=算法+数据结构。非过程化语言的特点是数据和算法是一个有机的整体。如C++。1.3请简述建立C语言程序的过程。编辑,编译,连接,运行。File1.cfile1.objfile1.exe1.4请编写一个程序,能显示出以下两行文字:Iamastudent.IloveChina.//FileName:THQCh1_04.c#includestdio.hintmain(){printf(Iamastudent.\n);printf(IloveChina.\n);return0;}1.5编一程序,从键盘输入两个整数,输出此两数之和。//FileName:THQCh1_05.c#includestdio.hintmain(){intx,y;printf(请输入两个整数xy,中间用空格隔开);scanf(%d%d,&x,&y);printf(x与y的和为%d.\n,x+y);return0;}1.6调用库函数,求以下的函数值:(1)cos3.5678(2)lg90(3)e2.567(4)5(5)tan0.78563//FileName:THQCh1_06.c#includestdio.h#includemath.hintmain(){printf(cos3.5678=%f\n,cos(3.5678));printf(lg90=%f\n,log10(90));printf(exp(2.567)=%f\n,exp(2.567));printf(sqrt(5)=%f\n,sqrt(5));printf(tan(0.78563)=%f\n,tan(0.78563));return0;}1.7编写一个求三个整数之和的程序。//FileName:THQCh1_07.c#includestdio.hintSumofThreeNum(intx,inty,intz);intmain(){intx,y,z;printf(请输入三个整数,中间用空格分隔(xyz):);scanf(%d%d%d,&x,&y,&z);printf(三个数的和为%d\n,SumofThreeNum(x,y,z));return0;}intSumofThreeNum(intx,inty,intz){returnx+y+z;}1.8编写一个求a+│b│的程序。//FileName:THQCh1_08.c#includestdio.h#includemath.hintSumofAandAbsB(inta,intb);//求a与b的绝对值的和intmain(){intx,y;printf(请输入两个整数,中间用空格分隔(xy):);scanf(%d%d,&x,&y);printf(三个数的和为%d\n,SumofAandAbsB(x,y));return0;}intSumofAandAbsB(inta,intb){returna+abs(b);}1.9编写一个求0~100之间全部偶数之和的程序。//FileName:THQCh1_09.c#includestdio.h#includemath.hintSumofOddBetween0_100();//求0与100之间的偶数的和intmain(){printf(0与100之间的偶数的和为%d\n,SumofOddBetween0_100());return0;}intSumofOddBetween0_100(){inti,sum=0;for(i=0;i=100;i++){if(i%2==0)sum=sum+i;}returnsum;}1.10编写一个程序,从5个整数中找出最小的数,并显示此数。intFindMinNum(inta[],intk);//从k个整数中找出最小的数{if(n1)exit(0);inti,x=a[0];for(i=1;ik;i++){if(a[i]x)x=a[i];}returnx;}第2章2.1为什么C语言中每个数据都要属于一个特定的类型?因为不同的类型在内存中所占的存储空间不同,将数据区分为不同的类型可以更好地组织数据,提高数据处理的效率。2.2指出数的定点形式与浮点形式有何不同。定点数不含指数部分,浮点数含指数部分。2.3计算机中表示的数是连续的吗?不是。2.4写一个程序测试你所用的C版本中的float型数据所占的字节数。intmain(){printf(float型数据的长度为%d\n,sizeof(float));return0;}2.5写一个程序测试一下把带小数的float和double型数据用printf函数输出时,小数部分截断还是四舍五入?#includestdio.hintmain(){floata;doubleb;a=3.1415926;b=3.1415926535897935;printf(a=%8.6f\nb=%17.15f\n,a,b);return0;}运行结果:a=3.141593b=3.141592653589794这说明在截断时,按四舍五入来处理的。2.6下列常数中哪些是合法的C常量那些是非法的C常量?对合法者指出其类型,对非法者指出原因。-0.23-0x2aL0x7ge30033.e-5‘\n’“x-y”‘{’12.5e2“105”‘105’“35′53”3+53507″πe2E5‘AB’0x2.5b03e5±7f7ff2e-31012356e3e+2.35e+01g3合法的常量如下:-0.-0x2al00035e+03.e-52E5‘{’‘\n’“105”“x-y”“35′53”不合法的常量如下:230x7ge312.5e2‘105’“35′53”3+53507″πe‘AB’0x2.5b03e5±7f7ff2e-31012356e3e+2.31g32.7下面语句的执行结果是什么?(1)printf(“\007ABC\011DE\012FGH\0xA”);(2)printf(“\nABC\tDE\nFGH\n”);(3)printf(“\nwhyis21+31equalto%d?\n\n”,21+31);(1)\007执行响铃,然后输出ABC;\011执行Tab键的功能;\012为换行;\0xA也为换行;(2)换行然后输出ABC,执行Tab键,输出DE,换行输出FGH,再换行;(3)换行后,输出whyis21+31equalto52?然后两次换行。2.8在下列符号中,你可以选用哪些作变量名?哪些不可以?为什么?a3B3aBπ+ab*xsb5ifnextdaye2ok?Intgermaxnumberi*j可作变量名的有:a3Bsnextintgermaxnumber2.9写出下面程序段执行后变量a,b,c的值。chara=’2’,b=’a’;intc;c=a+b;a=c;a的ASCII码为147,为图形符号ô;b的值为’a’;c的值为147。2.10写出下面程序的输出结果。main(){intx;x=-3+4*5-6;printf(“%d\n”,x);x=3+4%5-6;printf(“%d\n”,x);x=-3*4%-6/5;printf(“%d\n”,x);x=(7+6)%5/2;printf(“%d\n”,x);}111012.11写出下面程序的输出结果。main(){printf(“%d%d%d%d\n”,1+2,5.2,-2*4,11%3);printf(“%.5f%.5f%.5f\n”,1.+2.,5.12,-2.*4.);}32-823.000005.12000-8.000002.12写出下面程序的执行结果。intmain(){intx=2,y,z;x*=3+2;printf(%d\n,x);x*=y=z=4;printf(%d\n,x);x=y=1;z=x++-1;printf(%d,%d\n,x,z);z+=-x+++(++y);printf(%d,%d\n,x,z);return0;}10402,03,02.13写出下面程序的运行结果。intmain(){intx=40,y=4,z=4;x=y==z;printf(%d\n,x);x=x==(y-z);printf(%d\n,x);return0;}102.14写出下面程序的执行结果。intmain(){intx,y,z;x=y=z=3;y=x++-1;printf(%d\t%d\t,x,y);y=++x-1;printf(%d\t%d\t,x,y);y=z--+1;printf(%d\t%d\t,x,y);y=z--+1;printf(%d\t%d\t,x,y);y=--z+1;printf(%d\t%d\t,x,y);return0;}425424122.15写出下面程序的输出结果。intmain(){inti,j;i=16;j=(i++)+i;printf(%d\n,j);i=15;printf(%d\t%d\n,++i,i);i=20;j=i--+i;printf(%d\n,j);i=13;printf(%d\t%d\n,i++,i);return0;}3216154013132.16写出下列表达式的值。(1)14&&47(2)14&&74(3)!(25==5)(4)!(13)||(25)(5)!(4=6)&&(3=7)(1)1(2)0(3)0(4)1(5)02.17写出下面程序的输出结果。intmain(){intx,y,z;x=y=z=0;++x||++y&&++z;printf(x=%d\ty=%d\tz=%d\n,x,y,z);x=y=z=0;++x&&++y||++z;printf(x=%d\ty=%d\tz=%d\n,x,y,z);x=y=z=0;++x&&++y&&++z;printf(x=%d\ty=%d\tz=%d\n,x,y,z);x=y=z=-1;++x&&++y&&++z;printf(x=%d\ty=%d\tz=%d\n,x,y,z);x=y=z=-1;++x&&++y||++z;printf(x=%d\ty=%d\tz=%d\n,x,y,z);x=y=z=-1;++x||++y&&++z;printf(x=%d\ty=%d\tz=%d\n,x,y,z);return0;}x=1y=0z=0x=1y=1z=0x=1y=1z=1x=0y=-1z=-1x=0y=-1z=0x=0y=0z=-12.18用C语言描述下列命题。(1)a小于b或者小于c。(2)a或b都小于c。(3)a或b中有一个小于c。(4)a非负整数。(5)a是奇数。(6)a不能被b整除。(7)角A在第一或第三象限。(8)a是一个带小数的正数,而b是一个带小数的负数。(1)ab||ac(2)ac&&bc(3)ac||bc(4)(fmod(a,1)==0)&&(a=0),函数fmod(a,1)的作用是求整除a/1的余数(5)fmod(a,2)==1(6)fmod(a,b)!=0(7)(a=0&&a=PI/2)||(a=PI&&a=PI*3.2)(8)(floor(a)!=a&&a0)&&(floor(b)!=b&&b0),函数floor(a)的作用是求出不大于a的最大整数。2.19写出下面程序的输出结果。intmain(){intx=1,y=1,z=1;y=y+z;x=x+y;printf(%d\n,xy?y:x);printf(%d\n,xy?x++:y++);printf(%d\n,x);printf(%d\n,y);x=3;y=z=4;printf(%d\n,(x=z=x)?1:0);pr