版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 C语言程序设计概述习题答案算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。3C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编
2、译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。4指出合法与不合法的标识符命名。答5说明下列Turbo C热键的功能。答F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序) Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。6说明下列Turbo C方式下输入并运行下列程序
3、,记录下运行结果。main()printf("*n");printf(" welcome you n");printf(" very good n);printf("*n");main() int a,b,c,t;printf("please input three numbers;");scanf("%d,%d,%d",&a,&b,&c); /*教材S是错误的*/t=max(max(a,b),c);printf("max number is:%dn&
4、quot;,t);int max(int x, int y) int z;if(x>y)z=x;else z=y;return(z);答运行结果:*welcome youvery good*运行结果:please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/ max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个函数。答main()8在Turbo C环境下进行程序调试时,可以使用Run下拉菜单的命令或按键转到用户屏幕查看程序运行结果。答1、User screen2、Alt+F59C语言对标识符与关键字有些什么规定?答1、
5、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。10C源程序输入后是如何进行保存的?答是以C为扩展名保存的纯文本文件。第二章 C语言程序的基本数据类型与表达式习题答案1指出下列常数中哪些是符合C语法规定的。答''-× '101'-× ""-× e3-× 019- 0x1e-2请找出下列程序中的错误,改正后写出程序运行结果。void main()int
6、 x,y=z=5,aver;x=7AVER=(x+y+z)/3printf("AVER=%dn",aver);void main() char c1='a'c2='b'c3='c'int a=3.5,b='A'printf("a=%db='"endn",a,b);printf("a%cb%cbc%ctabcn",c1,c2,c3);答main()int x,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf("AVER
7、=%dn",aver);运行结果:AVER=5main() char c1='a', c2='b', c3='c'int a=3,b='A'printf("a=%d,b='%c'"end"n",a,b);printf("a%cb%cbc%ctabcn",c1,c2,c3);运行结果:a=3,b='A'"end"aabcc abc3写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋
8、值后的数据(实数保留到小数点后两位)。int99-1char 'h'unsigned int 66float 55.78long int 68答int 99 104 66 55 68 -1char'c''h''B''7''D'unsigned int9910466556865535float99.00104.0066.0055.7868.00-1.00long int99104665568-14写出程序运行结果。void main()int i,j;i=8,j=10;printf("%d,
9、%d,%d,%dn",i,j,+i,j+); main() int a=1,b=2,c=30;printf("%d,%d,%d,%dn",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,0void main()int a=10,b=20,c=30,d;d=+a<=10|b->=20|c+;printf("%d,%d,%d,%dn",a,b,c,d);答运行结果:11,19,30,15写出下面表达式的值(设a=10,b=4
10、,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)ya*=b+c+a-c+b+a-c+ba<b?x:'A'b+=ca+b,18+(b=4)*3,(a/b,a%b)x+a%3*(int)(x+y)%2/4+sizeof(int)a<b?a:c<d?c:db+=ca*=b=c=2a=b=c答0 0 9.500000 90 10 10 'A' 2 4.5 1 0 20 06下列每组表达式中,被执行后结果完全等价的是哪些(设a、b、m是已被赋值的整型变量)?m
11、=(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*3m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b答前面是赋值表达式,而后面的是一个逗号表达式,所以一定不同;前面的表达式中a/b结果为一整数,结果已经取整,精度可能受到影响,之后强制float后才为浮点型,后面的是先将a转换为float后再与b相除,其值保证了精度,所以不同。因为a、b均为整数,其前后两个表达式的计算结果是一致的。前一表达式是一算术表达式,而后者为一赋值表达式,此为一点不同;另外,前一表达式的m只被赋过一次
12、值,后一表达式中的m曾两次被赋值,第一次赋值时与第一表达式中的值一致,第二次赋值后即不再相同。前后表达式的计算结果应该是一致的:a=2, b=3, m=67条件表达式x>0?x:-x的功能是什么?答如果x的值是一正数,则表达式的值为x值;如果x的值是一非正数,则表达式的值为-x。其实该表达式的值即为x的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在math.h头文件中。用一个条件表达式描述从a、b、c中找出最大都赋给max.答max=a>(b>c?b:c)?a:(b>c?b:c);9若x为int型变量,则执行以下语句后x的值为( )。x=6;x
13、+=x-=x*x;A. 36 B. -60 C. 60 D. -24答B.10若有以下类型说明语句:char w; int x; float y; double z;则表达式w*x+z-y的结果为( )类型。A. float B. char C. int D. double答D.第三章 顺序结构程序设计习题答案1变量k为float类型,调用函数scanf("%d",&k),不能使变量k得到正确数值的原因是。答格式修饰符与变量类型不一致。因为%d输入的数据类型应该为十进制整数,而&k为占用4个字节的float类型变量的地址。2a=1234,b=12,c=34,
14、则执行“printf("|%3d%3d%-3d|n",a,b,c);”后的输出是。答|1234 1234 |分析如下:%3d为右对齐输出变量,且指定输出变量的值宽度为3个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。%-3d为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。3设有“int a=255,b=8;”,则“printf("%x,%on",a,b);”输出是。 答ff,10如果“printf("%X,%on",a,b);”则输出为FF,1
15、0。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“%x”则输出小写,如果是“%X”则输出大写。如果希望在输出十六进制时输出前导符0x或0X,则以上输出语句应改“printf("%#x,%on",a,b);”为或“printf("%#X,%on",a,b);”。本条解释不必须掌握。4以下程序输出的结果是。main()int a1=1,a2=0,a3=2;printf("%d,%d,%dn",a1,a1+a2+a3,a3-a1);答1,3,15printf函数中用到格式符%5s,其中5表示输出字符占用5列。如果字符串长度大
16、于5,则按输出;如果字符串长度小于5,则按输出。答实际 左端补空格6已定义变量如下:int a1,a2;char c1,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答设int a=10,b=5;以下为输出语句及结果:printf("%d+%d=%dn&q
17、uot;,a,b,a+b); 10+5=15printf("%d-%d=%dn",a,b,a-b); 10-5=5printf("%d*%d=%dn",a,b,a*b); 10*5=50printf("%d/%d=%dn",a,b,a/b); 10/5=2printf("%(float)d/%d=%fn",a,b,(float)a/b); (float)10/5=2.000000 printf("%d%d=%dn",a,b,a%b); 10%5=08输入一个非负数,计算以这个数为半径的圆周长和面
18、积。答#define PI 3.1415926main()float r,l,area;printf("Input a positive:");scanf("%f",&r);l=2*PI*r;area=PI*r*r;printf("l=%ftarea=%fn",l,area);9输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。答main()int x,y;printf("Input a number(100-999):");scanf("%d",&x);y
19、=100*(x%10)+10*(x/10%10)+x/100; /*注意分析此处算法*/printf("%d->%dn",x,y);10输入任意大小的3个整数,判断其中是否有两个奇数一个偶数。若是则输出YES,不是则输 出NOT(要求用条件表达式进行判断,不使用if语句)。答main()int x,y,z,oddcount=0; /*奇数数计数变量*/printf("Input x,y,z:");scanf("%d,%d,%d",&x,&y,&z);x%2=1?oddcount+:0;y%2=1?oddc
20、ount+:0;z%2=1?oddcount+:0;oddcount=2?printf("YES"):printf("NOT");11求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这3个字符及其对应的ASCII码值。答本题考查同学们对字符类型数据的认识,如果在ASCII范围内则即可以显示为字符,又可以显示为整数值;无论是否能够显示为字符,字符类型数据是可能参与数值运算的,切记。main()char c;printf("Input character:");scanf("
21、;%c",&c);printf("%c->%dn",c-1,c-1);printf("%c->%dn",c,c);printf("%c->%dn",c +1,c+1);getch(); /*为便于调试程序,运行至此程序停顿,此时可以看到运行结果,按任意键程序真难得结束并返回到编辑环境*/输入三角形的边长,求三角形面积(面积sqrt(s(s-a)(s-b)(s-c),s=(a+b+c)/2)。答#include"math.h" /*由于程序中使用了开平方函数sqrt(),所以需要包
22、含数学头文件*/main()float a,b,c,s,area;int ok=0;printf("Input a,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&q
23、uot;);getch();第四章 选择结构程序设计习题答案1设x、t均为int型变量,则执行语句“x=10;t=x&&x>10;”后,t的值为。答2假定所有变量均已正确定义,则程序段:int a=0, y=10;if(a=0)y- -; else if(a>0)y+;else y+=y;运行后 y 的值是;答203能表述 20<x<30 或 x<-100 的C 语言表达式是。答x>20&&x<30|+x<-1004若有定义语句“int a=25,b=14,c=19;”,则以下语句执行结果是。 if(a<=2
24、5 && b<=2 && c)printf("*a+b=%d, a-b=%d*n", a+b, a-b);else printf("*a=%d, b=%d, c=%d*n",a, b, c);答*a=25, b=14, c=19*5假定 i 和 j 为 int 型变量,则执行以下语句后 i 的值是。 int i=1;switch(i)case 1: for(j=0; j<9; j+) i+=j; break;case 2: for(j=1; j<10; j+) i+=j; break;case 3: i+
25、;答37分析:执行了case 1: 和case 3: 中的代码。同时case 1:语句中的 是可以取消的。6以下两条 if 语句可合并成一条 if 语句,即。if(a<=b) x=1;else y=2;if(a>b)printf("*y=%dn", y);else printf("*x=%dn",x);答if(a<=b) printf("*x=%dn",x=1);else printf("*y=%dn", y=2);7输入两个字符,若这两个字符的序号(ASCII码)之差为偶数,则输出它们的后继字符
26、,否则输出它们的前驱字符。答main()char a,b;printf("Input two chatacter a,b:");scanf("%c,%c",&a,&b);if(a-b)/2=0)printf("%c,%c",a+1,b+1);else printf("%c,%c",a-1,b-1);8输入整数 a 和 b ,如果 a 能被 b 整除,就输出算式和商,否则输出算式、整数商和余数。答main()int a,b;printf("Input two integer numbers
27、a,b:");scanf("%d,%d",&a,&b);if(b!=0&&a%b=0)printf("%d/%d=%d",a,b,a/b);elseprintf("%d/%d=%d.%d",a,b,a/b,a%b);9输入某个点 A 的平面坐标 (x,y),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心坐标为 (2,2),半径为 1。答include"math.h"main()float x,y,d;printf("Input x,y:");sca
28、nf("%f,%f",&x,&y);d=sqrt(x-2)*(x-2)+(y-2)*(y-2);if(d>1)printf("outside");else if(d<1)printf("inside");else printf("inside");10输入年号和月份,输出这一年该月的天数(一个年份,先判断是否闰年)。答main()int y,m,d,f;printf("Input year and month y-m:");scanf("%d-%d"
29、;,&y,&m);f=(y%4=0&&y/100!=0|y/400=0);if(m=2)d=28+f; /*依据是否闰年决定2月份的实际天数,若是闰年,则f=1,d即为29天*/elsed=31-(m=4)+(m=6)+(m=9)+(m=11);/*m=4时其值为1,则本月为30天,典型算法,重要啊*/printf("%d-%d is %d days.n",y,m,d);11请将以下语句改写成 switch 语句(a>0)。if(a<30) m=1;else if(a<40) m=2;else if(a<50) m=3
30、;else if(a<60) m=4;else m=5答switch(a/10)case 1:case 2:case 3:m=1;break;case 4:m=2;break;case 5:m=3;break;case 6:m=4;break;default:m=5;12有一函数x-1 -5<x<0y= x x=0x+1 0<x<8编写一程序,要求输入 x 的值,输出 y 的值。分别用不嵌套的 if 语句,嵌套的 if 语句,switch语句编写。答使用不嵌套的 if 语句程序如下:main()float x,y;printf("Input x:&quo
31、t;);scanf("%f",&x);if(x>-5&&x<0)y=x-1;if(x=0)y=0;if(x>0&&x<8)y=x+1;printf("y=%fn",y);使用嵌套的 if 语句程序如下:main()float x,y;scanf("%f",&x);if(x>-5&&x<8)if(x<0)y=x-1;else if(x=0)y=0:else y=x+1;printf("y=%fn",y);main
32、()float x,y;scanf("%f",&x);if(x<8)if(x>0)y=x+1;else if(x=0)y=0;else if(x>-5)y=x-1;printf("y=%fn",y);使用多分支语句程序如下:main()float x,y;int m;printf("Input x:");scanf("%f",&x);if(x>-5&&x<8)if(x<0)m=-1;else if(x=0)m=0:else m=1;switch(m
33、)case -1:y=x-1;break;case 0:y=0;break;case 1:y=x+1;break;printf("y=%fn",y);以下为假设对int类型的变量进行处理,但毕竟不算完美 main()int x,y;printf("Input x:");scanf("%d",&x);switch(x)case -4:case -3:case -2:case -1: y=x-1; break;case 0: y=0; break;case 1:case 2:case 3:case 4:case 5:case 6:
34、case 7: y=x+1; break;printf("y=%dn",y);第五章 循环结构程序设计习题答案1输入 n 个整数,求这 n 个数之中的偶数平均值,并输出。答main()int n,i,x,sum=0,count=0;printf("Input n:");scanf("%d",&n);for(i=0;i<n;i+)printf("Input %d:",i+1);scanf("%d",&x);if(x%2=0)sum+=x;count+;printf("
35、;Average is:%fn",(float)sum/count); getch();2输入一串字符,直到输入一个星号()为止,统计(输出)其中的字母个数和数字字符个数。答#include"stdio.h"main()char ch;int charcnt=0,numcnt=0;while(ch=getchar()!='*')if(ch>='a'&&ch<='z'|ch>='A'&&ch<='Z')charcnt+;if(ch&
36、gt;='0'&&ch<='9')numcnt+;printf("Characters number:%dnDigits number:%dn",charcnt,numcnt); getch();3从键盘输入一个正整数 n,计算该数的各位数字之和并输出。例如,输入数是5246,则计算5+2+4+617并输出。答#include"stdio.h"main()int n,i,sum=0,count=0;printf("Input n:");scanf("%d",&a
37、mp;n);while(n/10)!=0)count+;sum+=n%10;printf("%d+",n%10);n/=10;printf("=%d",sum+n);getch();4输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。答#include"stdio.h"main()char ch;printf("Input string:");while(ch=getchar()!='n')if(ch>='a'&&ch<=
38、9;z')printf("%c",ch-32);if(ch>='A'&&ch<='Z')printf("%c",ch+32);getch();5设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元。答main()float x=200;int n=0;dox*=(1+0.045);n+;while(x<500);printf("n=%d",n);getch();6输出1999中能被3整除
39、,而且至少有一位数字是5的所有数字。答main()int x,y,flag;for(x=1;x<1000;x+)flag=0;y=x;if(y%3=0) /*余数为0说明该数能够被3整除*/while(y%10!=0)if(y%10=5)flag=1; /*依个位、十位、百位顺序判断是否余数为5*/y/=10;if(flag=1)printf("%dt",x);getch();7求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶每步跨6阶,则最后剩5阶每步跨7阶,最后正好1阶。答main()int x=0,
40、flag=0;while(1)x+;if(x%2=1)if(x%3=2)if(x%5=4)if(x%6=5)if(x%7=0)printf("%d",x);break;getch();8输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,1531*1*1+5*5*5+3*3*3答main()int x,a,b,c;printf("Input number:");scanf("%d",&x);a=x/100; /*变量a中记录x的百位数字*/b=x/10%10; /*变量b中
41、记录x的十位数字*/c=x%10; /*变量c中记录x的个位数字*/if(a*a*a+b*b*b+c*c*c=x)printf("%d=%d*%d*%d+%d*%d*%d+%d*%d*%dn",x,a,a,a,b,b,b,c,c,c);printf("YES");elseprintf("NOT");getch();9计算斐波那契分数序列前n项之和(n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,.)。答main()int i,n=10;float f1=1,f2=2,f,sum=0;for(i=0;i<n;i+)s
42、um+=f2/f1;f=f1+f2;f1=f2;f2=f;printf("total=%dnsum=%f",n,sum);getch();10输入一个正整数,各输出n行的正(倒)三角形宝塔图案。答main()int n,i,j;printf("Input n:");scanf("%d",&n);for(i=0;i<n;i+)for(j=i+1;j<n;j+)printf(" ");for(j=0;j<2*i+1;j+)printf("*");printf("n
43、");for(i=0;i<n-1;i+)for(j=0;j<i+1;j+)printf(" ");for(j=2*i-1;j<n+1;j+)printf("*");printf("n");getch();11输出九九乘法表。答main()int i,j;for(i=1;i<=9;i+)for(j=1;j<=i;j+)printf("%d*%d=%-3d",j,i,i*j);printf("n");getch();12输入一串字符,直到输入一个星号为止,统计
44、(输出)其中的正整数和负整数个数以及所有正整数的平均值和所有负整数的平均值。答#include"stdio.h"#include"math.h"main()char ch;int x=0,y=1,f=0,pcnt=0,ncnt=0; float psum=0,nsum=0;while(ch=getchar()!='*') if(ch='-')if(x!=0)if(f=1)x=-x; nsum+=x; ncnt+; elsepsum+=x; pcnt+; printf("%dn",x); f=1;x=0;
45、y=1;continue;else if(ch>='0'&&ch<='9') x=10*x+ch-'0' y=10*y;if(x!=0&&10*x<y)f=0; continue;elseif(x!=0)if(f=1)x=-x; nsum+=x; ncnt+; elsepsum+=x;pcnt+;printf("%dn",x);f=0;x=0;y=1;continue;if(x!=0)if(f=1)x=-x;nsum+=x;ncnt+;elsepsum+=x;pcnt+;pri
46、ntf("%dn",x);printf("n-n");printf("Plus:n");printf("Count=%dn",pcnt);printf("Average=%fn",psum/pcnt);printf("-n");printf("Negative:n");printf("Count=%dn",pcnt);printf("Average=%fn",nsum/ncnt);getch();13一个整数等于该数
47、所有因子之和,则称该数是一个完数。例如,6和28都是完数。因为61+2+3,281+2+4+7+14。输出3位数中所有的完数。答main()int k1, k2, k3, k4, k5, k6, k7, k8, k9, k10;int i,a,n,s;for (a = 100; a <= 999; a+)n = 0; /* n累计因子的个数 */s = a; /* s存放未求出的因子之和,初值为被测数本身 */ for (i = 1; i < a; i+)if (a % i = 0) /* 由i到a循环检测i是否为a的因子 */ n+; /* 找到一个因子 */s = s - i;
48、 /* 减去已找到的因子 */switch (n) /* 将找到的因子赋绐k1, k2, . */case 1 : k1 = i; break;case 2 : k2 = i; break;case 3 : k3 = i; break;case 4 : k4 = i; break;case 5 : k5 = i; break;case 6 : k6 = i; break;case 7 : k7 = i; break;case 8 : k8 = i; break;case 9 : k9 = i; break;case 10 : k10 = i; break;if (s = 0) /* 已经找到全
49、部因子 */printf("%d Its factors are ", a);if (n > 1) printf("%d,%d", k1, k2); /* n>1表示a至少有2个因子 */if (n > 2) printf(",%d", k3); /* 注意以下if的用法,追加的方法 */if (n > 3) printf(",%d", k4);if (n > 4) printf(",%d", k5);if (n > 5) printf(",%d&q
50、uot;, k6);if (n > 6) printf(",%d", k7);if (n > 7) printf(",%d", k8);if (n > 8) printf(",%d", k9);if (n > 9) printf(",%d", k10);printf("n");getch();14编写程序按下列公式计算e的值(精度为1e-6)。e=1+1/1!+1/2!+1/3!.+1/n!答main()int i;double e=0,t=1;for(i=1;t>
51、0.000001;i+)for(j=1;j<=i;j+)t*=j;t=1/t;e+=t;printf("e=%fn",e);getch();15用二分法求方程2x3-4x2+3x=0在(-10,10)附近的根(二分法:先找到a、b,使f(a)、f(b)异号,说明在区间(a,b)内一定有零点,然后求f(a+b)/2,现在假设f(a)<0,f(b>0,a<b,如果f(a+b)2=0,该点就是零点,如果f(a+b)/2<0,则在区间(a+b)/2,b)内有零点,按上述方法再求该区间中点的函数值,通过每次把f(x)的零点所有小区间收缩一半的方法,使区间
52、的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。答#include"math.h"main()double x,fx,fa,fb,a=-10,b=10,z=0.0001;fa=2*a*a*a-4*a*a+3*a;fb=2*b*b*b-4*b*b+3*b;if(fa*fb<0)dox=(a+b)/2;fx=2*x*x*x-4*x*x+3*x;if(fx<0)a=x;fa=2*a*a*a-4*a*a+3*a;elseb=x;fb=2*b*b*b-4*b*b+3*b;while(fabs(fa-fb)>z);printf("The
53、 root is:%lfn",x);getch();第六章 函数与编译预处理习题答案1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。答main()unsigned int m,n,p,q;for(;)printf("m,n=");scanf("%d,%d",&m,&n);if(m<0|n<0)printf("The end.n");break;p=funp(m,n);q=funq(m,n);printf("p(%d,%d)=%
54、dnq(%d,%d)=%dn",m,n,p,m,n,q);int funp(int m,int n)int i;if(m>n)i=m;m=n;n=i;for(i=m;i>0;i-)if(m%i=0&&n%i=0)return(i);int funq(int m,int n)int i;if(m<n)i=m;m=n;n=i;for(i=m;i<=m*n;i+=m)if(i%n=0)return(i);2编写一个函数,由参数传入一个字符串,统计此字串中字母、数字和其他字符的个数,在主函数中输入字符串并显示统计结果。答未制作函数,主要利用了选择语句结
55、构:#include"stdio.h"main()int i,c,zm=0,sz=0,kg=0,qt=0;printf("Input a string:");while(c=getchar()!='n')if(c=' ')kg+;else if(c>47&&c<58)sz+;else if(c>='A'&&c<='Z'|c>='a'&&c<='z')zm+;else qt+;p
56、rintf("am=%d,sz=%d,kg=%d,qt=%dn",zm,sz,kg,qt);制作函数,利用函数调用:#include"stdio.h"int analys(char ch);main( )int i,zm=0,sz=0,qt=0,c;printf("Input a string:");while(c=getchar()!='n')i=analys(c);switch(i)case 1: zm+; break;case 2: sz+; break;case 3: qt+;printf("zm=%
57、d,sz=%d,qt=%dn",zm,sz,qt);int analys(char ch)if(ch>='A'&&ch<='Z'|ch>='a'&&ch<='z')return 1;if(ch>47&&ch<58)return 2;return 3;3按照第5章第8题的要求编写判断水仙花数的函数,从主函数输入正整数n,在主函数中调用判断水仙花数的函数,找出n以内所有的水仙花数。【输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位
58、数的各位数字的立方和等于这个3位数本身。例如,1531*1*1+5*5*5+3*3*3】答main()int x,i,f;printf("Input number:");scanf("%d",&x);for(i=0;i<=x;i+)f=0;f=fun(i);if(f=1)printf("%dt",i);getch();int fun(int x)int a,b,c;a=x/100;b=x/10%10;c=x%10;if(a*a*a+b*b*b+c*c*c=x)return 1;else return 0;4定义一个宏,实
59、现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。答#define f(a,b) (a=a+b,b=a-b,a=a-b)main()int x,y;printf("Input x,y:");scanf("%d,%d",&x,&y);printf("%d,%d",x,y);f(x,y);printf("<->%d,%dn",x,y);getch();5已知二阶Fibonacci数列:0 若n=0Fib(n)= 1 若n=1Fib(n-1)+Fib(n-2) 其它情况定义递归函数求Fib(n)。答main()int i,n;printf("Input n:");scanf("%d",&n);for(i=0;i<=n;i+)printf("%dt",fib(i);getch();int fib(int n)if(n=0)return 0;else if(n=1)return 1;else return (fib(n-1)+fib(n-2);6定义函数求
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年土地承包经营权流转土地经营权流转项目评估合同范本3篇
- 2024年度企业实习生综合能力培养劳动合同2篇
- 2024年度民间借款合同示范文本(含借款人信用评估)3篇
- 2024年林权分享采伐协议
- 洛阳师范学院《急危重症护理学(含灾害护理学)》2023-2024学年第一学期期末试卷
- 科技园区秩序维护合同模板
- 2025产品授权销售总代理合同书
- 古建筑修复工程分包合同施工合同
- 商务大厦彩钢瓦屋面改造合同
- 市区环境监测数据统计分析方法
- 国际标准《风险管理指南》(ISO31000)的中文版
- (完整版)外研版高中英语必修三单词表(带音标)
- MOOC 国际商务-暨南大学 中国大学慕课答案
- 特征值与特征向量
- 作家协会2024年下半年工作计划3篇
- 2024征信考试题库(含答案)
- 个人理财(西安欧亚学院)智慧树知到期末考试答案2024年
- pc(装配式)结构施工监理实施细则
- 医院内审制度
- 押运人员安全培训课件
- 给小学生科普人工智能
评论
0/150
提交评论