C语言程序设计练习题(答案)参考_第1页
C语言程序设计练习题(答案)参考_第2页
C语言程序设计练习题(答案)参考_第3页
C语言程序设计练习题(答案)参考_第4页
C语言程序设计练习题(答案)参考_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档供参考,可复制、编制,期待您的好评与关注! 1.1 上机实训项目实验1实验步骤1、进入VC环境 从“开始”“程序”“Microsoft Visual Studio 6.0”“Microsoft Visual C+ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序 在VC环境中选择“文件”菜单,然后单击“新建”菜单项。如图1-2所示图1-2 选择新建 在弹出的新建对话框中设置好相应的内容,如图2-2所示。要事先准备好保存文件的目录,例d:lx目录。在图1-3中“文件”一栏的源程序文

2、件的扩展名一定要输入C语言程序的扩展名“.c”。设置好后,单击“OK”,就回到了VC+的编辑界面,即将进行输入和编辑的源程序文件example.c文件存放在D盘的LX目录下。2设置源程序的文件名,扩展名一定要为“.c”且一定要输入扩展名3.设置存放目录1.单击该处图1-3 新建对话框的设置 在图1-4的工作区中,输入源程序图1-4 输入、编辑源程序 输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。图1-5 保存源程序 源程序的编译如图2-6所示,单击主菜单的“编译”(Build), 在其下拉菜单中选择“编译example.c”(

3、Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。内容是“This build command requires an active project worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No”,表示不同意,将取消编译。此处选择“是”。从该处进入编译或者从该处进入编译图1-6 编译源程序图1-7 要求创建一个工作区 编译完成后将如图1

4、-8所示,此时注意编译窗口中的信息,如果有编译错误,将要对源程序进行修改,然后再重新编译,直到没有错误为止。注意此处的obj文件图1-8编译信息 编译没有错误,完成并生成obj文件后,就可进入程序的连接了。连接的目的是将程序和系统提供的资源(如函数库、头文件等)建立连接,真正生成可以执行的程序文件。如图1-9所示,单击主菜单的“编译”(Build), 在其下拉菜单中选择“构建example.exe”(build example.exe),或者单击工具栏上的“构建”按钮。执行连接后,将在调试窗口中显示连接的信息,如图1-10所示,如果连接有错误,将修改源程序,然后再编译、连接,直至没有错误为止。

5、或单击此处图1-9 程序的连接注意:此处生成的.exe文件图1-10 连接后的信息 程序的执行完成了编译、连接后,就生成了可执行程序文件,些时该程序可执行了。如图1-11所示,单击主菜单的“编译”(Build), 在其下拉菜单中选择“执行example.exe”(Execute example.exe),或者单击工具栏上的“执行”按钮。执行后,将出现图1-12所示的结果。或单击此处图1-11 执行程序图1-12 执行的结果实验2 程序中包含三处错误,分别为:(1) Int应为int;(2)“sum=25+30”后缺少“;”;(3)缺少“return 0;”实验3 提示:要完成题目任务,一种方法

6、是每一行调用一个printf函数输出,另一种方法是只调用一个printf函数输出。代码分别如下:(1)#include <stdio.h>int main (void)printf ("This is my first C program.n");printf ("And programming in C is even more fun.n");return 0;(2)#include <stdio.h>int main (void)printf ("This is my first C program.nAnd pr

7、ogramming in C is even more fun.n");return 0;实验 4 (1)计算33+56的和。解题思路:将例1.2中变量值改为33与56代码如下:#include <stdio.h>int main(void)int value1,value2,sum;value1=33;value2=56;sum=value1+value2;printf(“%d+%d=%dn”, value1, value 2,sum);(2)计算1+2+3+4+5解题思路:可以分别建立五个变量value1,value2,value3,value4,value5,赋值后

8、计算value1+value2+value3+value4+value5,代码如下:#include <stdio.h>int main(void)int value1,value2,value3,value4,value5,sum;value1=1;value2=2; value3=3; value4=4; value5=5;sum=value1+value2+value3+value4+value5;printf(“%d+%d+%d+%d+%d=%dn”, value1, value 2, value3, value4, value5, sum);实验 5 解题思路:根据摄氏度

9、与华氏温度转换公式进行转换,代码如下:#include <stdio.h>int main () float f, c; f = 27.0; c = (f-32)/1.8; printf("f=%fnc=%fn", f, c); return 0; 1.2 课后实训项目一、 选择题1.C ; 2. D; 3.A; 4.C; 5.A二、填空题1. main函数2. ;3. 编译三、分析下面程序,写出运行结果1. The result is 952. we are students.I begin to study C language. 四、找出下面程序中的所有语

10、法错误,然后在计算机上运行输出正确结果。1.(1)Void 应为 void; (2)INT 应为 int;(3) “/* COMPUTE RESULT” 后缺少“*/” ;(4)“printf ("The answer is %in" sum) ;” 应为“printf ("The answer is %dn" ,sum);”2. (1)缺少预处理指令#include <stdio.h>;(2)没有声明value1,value2。3. (1)缺少main函数#include <stdio.h>;(2)没有对value1,value

11、2进行声明;(3)输出语句中“The sum of value1 and value2 is %dn”缺少双引号;(4)函数体应由括起来。2.1 上机实训项目实验1解题思路:根据运行结果,了解各种数据类型在内存所占用空间的大小,运行结果如下:int is 4Bchar is 1Blong int is 4Bunsigned int is 4Bfloat is 4Bdouble is 8B实验2解题思路:根据例子,分析VC+6.0短整数、字符型和float型数据的范围,运行结果如下: s=32767 c=127 f=3.1234e+038 s=-32768 c=-128 f=1.#INF(越界)

12、通过程序运行结果可知:VC+6.0短整数范围-3276832767;字符型范围-128127;float型范围:0以及-3.4*10-383.4*1038实验3 解题思路:错误1 “j=+3;”应为“j=+i;”。+与运算符只能用于变量,不能用于常量或者表达式,如5+或者(a+b)+都是不合法的。错误2 “k=5.0%2;” 应为“k=5%2;”。%运算符要求参加运算的对象为整数,结果也是整数。实验4解题思路,代码如下:# include <stdio.h>int main()int a=3,b=4,c=5;double x=1.2,y=2.4,z=-3.6;long int u=

13、51274,n=128765;char c1='a',c2='b'printf("a=%db=%dc=%dn",a,b,c);printf("x=%7.6fy=%7.6fz=%7.6fn",x,y,z);printf("x+y=%3.2fy+z=%3.2fz+x=%3.2fn",x+y,y+z,z+x);printf("u=%dn=%dn",u,n);printf("c1='%c'or%dn",c1,c1);printf("c2='

14、;%c'or%dn",c2,c2);return 0;实验5 错误:“average=1/2*(96+55);”应改为“average=1.0/2.0*(96+55);” 解题思路:两个整数相除的结果是整数,需要改为两个实数相除。2.2 课后实训项目一、 选择题1)C 以0开头的数字是8进制数字,但是8进制数字里面是没有8的(满8进位),所以出错;2)C;3)D ;4)D;5)D;6)B;m为(n*100+0.5)取整数部分,相当于四舍五入;7)A;8)C;9)B A赋值表达式,C y=y+=5,在C语言+,-都不能位于“=”左边,D强制类型转换;10)B x=x+x-(x-

15、x);11)A;12)C;13)D二、填空题 1) 标识符;2)变量;3)整型、字符型、长双精度型;4)字母、数字、下划线;5)4B;6)f;7)pow(e,x*x+y*y)*(1/fabs(x-y)); 8) 3.5三、分析下面程序,写出运行结果1. i=2,j=2 i=2,j=32. 119,w 97, a 3. 24,683 3.456000,53400.0000004. 2 20.0000005. -6 四、找出下面程序中的所有语法错误,然后在计算机上运行输出正确结果。1. #include <stdio.h>int main (void)float a = 5, b =

16、3; 错误: 应为 int a = 5, b = 3;printf ("a % b = %dn", a % b);return 0; 运行结果: a%b=22. #include <stdio.h>int mian() 错误1:mainchar c=China; 错误2; 将字符串赋给字符变量printf(c=%cn,c); 错误3:双引号Return 0; 错误4 :return 首字母小写运行结果c=C3. #include <stdio.h>int main( )int a,b,c; a=2;b=3; C=a+b; 错误: C未定义 print

17、f(“%d+%d=%dn”,a,b,c);return 0;运行结果: 2+3=5五、程序设计题1. 解题思路:需要知道三角形求面积公式s=底*高*0.5,根据公式进行编程,代码如下:# include <stdio.h>int main()double a,b,c;a=5.0;b=6.0;c=a*b/2;printf("area is %f",c);return 0;2. 解题思路:知道根据半径r求圆形周长公式l=2r以及面积公式S=r2,代码如下:# include <stdio.h># define PI 3.1416int main()dou

18、ble a,area,length;a=5.0;area=PI*a*a;length=2*PI*a;printf("area is %f and length is%fn",area,length);return 0;3. 解题思路:已知边长a,正方形求面积公式s=a2,代码如下:# include <stdio.h>int main()double a,area;a=6.0;area=a*a;printf("area is %f n",area);return 0;4 解题思路:已知圆柱体的底面半径a,高h,圆柱体体积c=r2h,代码如下:

19、# include <stdio.h># define PI 3.1416int main()double a,h,cube;a=6.0;h=10.0;cube=PI*a*a*h;printf("cube is %f n",cube);return 0;3.1 上机实训项目实验1 1 略2答:输出为a b,此时c1=a,c2= ,c3=b3答:输出为 a b此时c1=a,c2=回车 ,c3=b4答:输入123<回车>实验2 下面程序是的功能是输入两个整数,输出其和,试调试运行。#include <stdio.h>int main()int

20、 x,y;printf("请输入两个整数:n");scanf("x=%d,y=%d",&x,&y);printf("%d%+%d=%dn",x,y,x+y); 错误:多写一个%,输出错误。return 0;实验3解题思路:调用scnaf与printf函数输入输出字符数据,代码如下:#include <stdio.h>int main()char a,b,c;scanf("%c",&a);scanf("%c",&b);scanf("%c&quo

21、t;,&c);printf("%c",a);printf("%c",b);printf("%c",c);return 0;实验4 下面程序是输入1个整数和1个实数,然后其值,找出其中的错误。#include <stdio.h>int main() long x; double y; scanf("%f,%f",&x,&y); 错误1:scanf("%ld,%lf",&x,&y);,double 型数据输入要用%lf; printf("

22、x=%f,f=%fn",x,y); 错误2:printf("x=%d,f=%fn",x,y);,x为整数; 错误3:缺少return 0; 实验 5 代码如下: scanf(_“%d,%f”,&x,&y _); printf(_“x+y=%f”,x+y _) 课后实训项目一、 选择题1)D;2)D;3)C;4)D;5)B;6)A;7)B;8)B;9)C;10)B如果使用的格式符与对应的变量类型不一致,有可能造成读取错误的数据,但系统不报错;11)C;12)C;13)C赋值语句的对象只能是变量,而不是表达式;14)A;15)A;16)D 二、填空题

23、1) 3;2)%;3)格式控制,输出表列;4)%d,%c,%s;5)&a,&b; a=b三、程序阅读题1. 运行结果 A,662. 运行结果 1,65,1.5,6.53. 输出结果为i:dec=14,otc=177774,hex=fffc,unsigned=65532 4. 输出结果是12 34四、改错题1. 下面程序编译时无错误,运行程序时,从键盘输入1,2,但输出结果不正确,找出程序中的错误并改正之。#include <stdio.h>void main() int x,y; scanf( "%d,%d",x,y); 改错:scan

24、f( "%d,%d",&x,&y); printf( "%d,%d",x,y);2. 下面程序是输入两个double型数据,然后输出的和,找出错误并改正之#include <stdio.h>void main()double x,y;scanf(“%f %f”,&x,&y); 改错1: scanf(“%lf %lf”,&x,&y);printf(“x+y=%fn,x+y); 改错2: printf(“x+y=%fn”,x+y);五、程序设计题1. 解题思路:设置两个整数给变量

25、a,b,输入的大数放在a中,输入的小数放在b中,利用a/b和a%b分别求他们的商和余数,代码如下:#include <stdio.h>int main()int a,b,c;int d,e;scanf("%d,%d",&a,&b);if (a<b)c=a;a=b;b=c;d=a/b;e=a%b;printf("a=%d,b=%d,d=%d,e=%dn",a,b,d,e);return 0;2. 解题思路:用%(求余)。 比如输入321,321%100 = 21 用321 - (321%100) 再 除以100 即可得:

26、(321 - (321%100))100 = 3 同样,用21%10 = 1 再除以10 即可得:(321%100)-(321%100)%10)/10 = 2 最后,1-(1%1) = 1。代码如下:#include <stdio.h>int main()int a;int b,c,d;scanf("%d",&a);b=a%10;c=a/10%10;d=a/100;printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);return 0;4.1 上机实训项目实验1 正确程序代码为:#include <stdi

27、o.h>int main()float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b) t=a;a=b;b=t;/if语句后是个复合语句,需要加上花括号if(a>c) t=a;c=a;c=t;if(b>c)t=b;b=c;c=t;printf(“%f,%f,%fn”,a,b,c);return 0;实验2 解题思路:分段函数计算,根据不同的x,按照条件选择建立不同的分支执行。参考代码如下:# include <stdio.h>int main()float x,y;printf("Ple

28、ase input x:n");scanf("%f",&x);if (x<1.0)y=x;else if (x>1.0)&&(x<10.0)y=2*x-1;else if (x>=10.0) y=3*x-11;printf("The value of y is:%fn",y);return 0;实验3 解题思路:ASCII代码表示的小写字母比大写字母值大32,首先判断是否大写字母,如果是,则当前值加32,如果是小写字母,则当前值减32。参考代码如下:#include<stdio.h>i

29、nt main()char ch;scanf("%c",&ch);if(ch>='A'&&ch<='Z')ch=ch+32;else if(ch>='a'&&ch<='z')ch=ch-32;printf("%cn",ch);return 0;实验4 解题思路:首先要明确构成三角形的条件,两边之和大于第三遍;然后根据等边三角形(三边相等)、等腰三角形(两边相等)、直角三角形(直角边平方和等于斜边平方)分别进行判断,参考代码如下:

30、#include <stdio.h>#include <math.h>void main()int a,b,c;int k, i, j ;int m,o,p;int a1,b1,c1;printf("输入三条边:n"); scanf("%d,%d,%d",&a,&b,&c) ;i=a*a+b*b-c*c;j=b*b+c*c-a*a;k=a*a+c*c-b*b;m=abs(a-b);o=abs(a-c);p=abs(c-b);a1=a+b;b1=b+c;c1=a+c;if (a1>c)&&

31、;(b1>a)&&(c1>b)&&(m<c)&&(o<b)&&(p<a) if(m=0)&&(o=0) printf("这是一个等边三角形。n"); else if (m=0)|(o=0)|(p=0) printf("这是一个等腰三角形。n"); else if(i=0)|(j=0)|(k=0) printf("这是一个直角三角形!n");else printf("这是一个任意三角形!n");else pr

32、intf("这不是一个三角形!n");实验5 解题思路:根据不同的距离,确定折扣和运费,参考代码如下:#include <stdio.h>int main()double cost(double x,double y,double z,double p);double f,p,w,s,d;printf("请输入距离:");scanf("%lf",&s);printf("n请输入运费:");scanf("%lf",&p);printf("n请输入货物重量:&q

33、uot;);scanf("%lf",&w);if (s<250.0)d=0;f=cost(p,w,s,d);else if (s>=250.0)&&(s<500.0)d=0.05;f=cost(p,w,s,d);else if (s>=500.0)&&(s<1000.0)d=0.1;f=cost(p,w,s,d);else if (s>=1000.0)&&(s<2000.0)d=0.15;f=cost(p,w,s,d);else if (s>=2000.0)&&a

34、mp;(s<3000.0)d=0.2;f=cost(p,w,s,d);else if (s>3000.0)d=0.3;f=cost(p,w,s,d);printf("运送距离%f,折扣%f,总费用%fn",s,d,f);return 0;double cost(double x,double y,double z,double p)double q;q=x*y*z*(1-p);return q;4.2 课后实训项目一、 选择题1)D;2)C;3)D;4)C 【A%2 无非 0、1,奇数 A%2=1 为真,偶数 A%2=0 为假所以A对、B与A等价也对、D也对,C

35、反了】;5)B;6)B【首先要明确if语句后仅第一个语句z=x;与if关联 所以判断不成立时 z=x不执行 x=y;和y=z都照常执行 故答案x=20 y=30 z=30 】; 7)B;8)B;9)D;10)D二、 填空题1. 0 【f = (a > b) > c),这里a > b的结果是1,1 > c的结果是0】2. x>=z|y>=z3. 1 【&&在这里运算优先级最低,相当于:(!(a-b)+c-1)&&(b+c/2),即:(!(6-4)+2-1) && (4+2/2) =>(!2 +1)&

36、&(5) =>(0+1)&&(5)=>1】4. x:y,u:z5. c<d ,b<c三、 程序阅读题1. 2 0 02. 20,03. 0.6000004. yes5. 011122四、改错题1. 解题思路:题目要求功能是输入x,y的值,若x大于y则x、y都减1,否则x、y都加1。程序中x-; y-;与x+; y+;没有用括起来,达不到“若x大于y则x、y都减1,否则x、y都加1”的要求。修改时,要将x-; y-;与x+; y+;用括起来。修改后代码如下: #include <stdio.h>void main() int x,y;

37、scanf(“%d,%d”,&x,&y); if(x>y) x-; y-; else x+;y+; printf(“%d,%dn”,x,y);2. 解题思路: scanf(“%d”,&x);右侧括号应为半角括号;if条件中x=90应为=。修改后代码如下:#include <stdio.h> void main() int x; scanf(“%d”,&x); if (x=90) printf("right"); else printf("error"); 五、 程序设计题1. 解题思路:输入三个数a,b,

38、c。首先判断a与b的大小,然后判断a与c,b与c将最大的数存入c中,输出c。代码如下:#include <stdio.h>int main()int a,b,c,t;scanf(“%d,%d,%d”,&a,&b,&c);if(a>b) t=a;a=b;b=t; /比较a与b,如果a>b则a,b交换if(a>c) t=a;c=a;c=t; /比较a与c,如果a>c则a,c交换if(b>c)t=b;b=c;c=t; /比较c与b,如果b>c则c,b交换printf(“%d n”, c);return 0;2. 解题思路:首先要

39、明确构成三角形的条件,两边之和大于第三遍;符合三角形构成条件后,根据三角形三边求面积公式,求解面积。代码如下:#include <stdio.h>#include <math.h>void main()float a,b,c,max,s;double area;printf("输入三条边:n"); scanf("%f,%f,%f",&a,&b,&c) ;max=a;s=(a+b+c)*0.5;if(max<b) max=b;if(max<c) max=c;if(max>s) printf(

40、"不能构成三角形!n") ;area=sqrt(s*(s-a)*(s-b)*(s-c);printf("a=%f,b=%f,c=%fn",a,b,c);printf("area=%fn",area);3. 解题思路:二元一次方程根求解公式。需要判断b2-4ac是否大于0,大于0求实数根,否则求虚根。代码如下:#include <stdio.h>#include <math.h>int main()double a,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&a

41、mp;a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);if (disc>=0)q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("x1=%.2fnx2=%.2fn",x1,x2);elsedisc=fabs(disc);q=sqrt(disc)/(2.0*a);printf("x1=%.2f+%.2finx2=%.2f-%.2fin",p,q,p,q);return 0;4. 解题思路:根据公式分别计算税后输入和应缴税。代码如下:#include <stdio.h&g

42、t;int main()double cost(double x,double z,double p);double pay,fund,tax,base,taxed;base=3500.0;scanf("%lf",&pay);pay=pay-base;if(pay<=1500.0)tax=0.03;fund=0;taxed=cost(pay,tax,fund);else if(pay>1500.0)&&(pay<=4500.0)tax=0.1;fund=105;taxed=cost(pay,tax,fund);else if(pay

43、>4500.0)&&(pay<=9000.0)tax=0.2;fund=555;taxed=cost(pay,tax,fund);else if(pay>9000.0)&&(pay<=35000.0)tax=0.25;fund=1005;taxed=cost(pay,tax,fund);else if(pay>35000.0)&&(pay<=55000.0)tax=0.30;fund=2775;taxed=cost(pay,tax,fund);else if(pay>55000.0)&&(

44、pay<=80000.0)tax=0.35;fund=5505;taxed=cost(pay,tax,fund);else if(pay>80000.0)tax=0.45;fund=13505;taxed=cost(pay,tax,fund);printf("The pay is %5.2f and the tax is%5.2f",pay+base,taxed);return 0;/个人所得税计算公式double cost(double x,double z,double p)double c;c=x*z-p;return c;5.1 上机实训项目实验1错误1

45、 变量temp没有初始化;错误2,变量e没有初始化;错误3,while(temp>1e-6)后面不能加分号。实验2 程序中补充语句为:sum=sum+i; i=i+2; 实验3 解题思路:设置变量n,sum,在sum值不大于1000的条件下,每次将sum值加上n的平方,直到sum值大于1000,此时的n即为最大n。程序代码如下:#include <stdio.h>void main()int n,sum=0;n=0;while (sum<=1000)+n;sum=sum+n*n;printf("The max n=%dn",n);实验4 解题思路:在

46、10000以内判断,先将该数加上100后再开方,再将该数加上168后再开方,代码如下: #include <stdio.h>#include <math.h>int main() int i,x,y,z,t,p,q; for (i=1;i<10000;i+) x=(int) sqrt(i+100);/*x为加上100后开方后的结果*/ y=(int) sqrt(i+168);/*y为再加上168后开方后的结果*/ t=x*x; z=y*y; p=i+100; q=i+168; if (t=p)&&(z=q) printf("n%ld&qu

47、ot;,i);/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/ return 0; 实验 5 解题思路:利用for循环控制100-999个数,每个数分解出个位,十位,百位,然后进行判断。代码如下:#include <stdio.h>int main() int i,j,k,n; printf("Water flower number is:"); for (n=100;n<1000;n+) i=n/100;/分解出百位 j=n/10%10;/分解出十位 k=n%10;/分解出个位 if(n=i*i*i+j*j*j+k*k*k) printf

48、("%-5d",n); return 0;5.2 课后实训项目一、 选择题1)A;2)B 【因为条件是个赋值表达式,表达式值非零,条件永为真,故而无限次循环】;3)C 【n开始等于0,n+<=2成立,执行while循环,因为while 后面有个分号,所以循环体是空语句,一直到 n=2时,判断n<=2 仍然成立,再自增+,n的值这时候为3,接着,又1次判断n+<=2,条件不成立,但是仍然执行n+,所以n的值变为4。】4)D;5)D;6)B;7)B;8)A;9)D;10)C二、填空题1. switch 循环2. x>=0 x<min3. 4-i i

49、4. 15. n=1 2s三、程序阅读题1) 62) 113) 4) 3,35) 12345678910四、 改错题1) 错误:sum没有赋初值。2) 错误:while(i<=n)后应加;3) 错误1:n没有声明,也没有赋初值,没有循环结束条件;错误2:for(i=1,i<n,i+)里是语句,应用分号五、程序设计题1. 解题思路 :用梯形法求解,代码如下:#include <stdio.h>#define N 30int main()double a,b,x,s,h;a=1;b=2;h=(b-a)/N;for (x=a,s=0;x<b;x=x+h)s=s+(x*x

50、+(x+h)*(x+h)*h/2/2;printf("S=%fn",s);return 0;2. 解题思路:利用for循环控制100-999个数,每个数分解出个位,十位,百位,然后进行判断。代码如下:#include <stdio.h>int main() int i,j,k,n; printf("Water flower number is:"); for (n=100;n<1000;n+) i=n/100;/分解出百位 j=n/10%10;/分解出十位 k=n%10;/分解出个位 if(n=i*i*i+j*j*j+k*k*k) pr

51、intf("%-5d",n); return 0; 3. 解题思路:利用迭代公式xn+1=12xn+axn循环求解,代码如下:#include <stdio.h> #include<math.h> int main() float a,x0,x1; scanf("%f",&a); x0=a/2; x1=(x0+a/x0)/2; do x0=x1; x1=(x0+a/x0)/2; while(fabs(x0-x1)>=1e-5); printf("The squme foot of %5.2f is %8.5

52、fn",a,x1); return 0; 4. 解题思路:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 代码如下:#include <stdio.h>int main()int i,j,k,sum=0;printf("n");for (i=1;i<5;i+)for(j=1;j<5;j+)for(k=1;k<5;k+)if(i!=k && j!=k && i!=j)printf("%d%d%d ",i,j,k);sum=sum+1;if (s

53、um%10=0) printf("n");return 0;6.1 上机实训项目实验 1 解题思路:定义数组时,数组的大小说明必须是常量,而程序中的N却是变量。将int N=10;改为#define N 10后,重新运行。实验 2 解题思路:printf函数中的p格式符是输出地址的十六进制数,通过这个语句,可以了解变量的地址。查看结果,a5和b在内存中的地址是否相同?,若相同,变量b的值为什么变为10了?数组a的大小为5,根据C语言的规定,数组元素的下标从0开始,也就是说,a数组的下标最大为4。程序中a5=10;语句中,下标已经超范围,但编译时并未给出错误信息,所以在C语言

54、中,编译系统对数组下标超范围并不检查,编程时要特别注意。实验 3 参考代码如下:#include<stdio.h>void main() int i, j, n, t, a10; for(i=0; i<10; i+) scanf("%d", &ai); for(i=0; i<9; i+) n=i; for(j=i+1; j<10; j+) if(aj<an) n=j; t=an; an=ai; ai=t; for(i=0; i<10; i+) printf("%dn",ai);实验 4 解题思路:矩阵相乘

55、,输入一个m*n矩阵和一个n*p矩阵,结果必然是m*p矩阵,有m*p个元素,每个元素都需要计算,可以使用m*p嵌套循环进行计算。参考代码如下:#include<stdio.h>int main() int a1010,b1010,c1010,d1010;/定义多个二维数组 int i,k,q,n,m,j,s,p; for(i=0;i<10;i+) for(j=0;j<10;j+) dij=0; scanf("%d%d",&m,&n); /定制矩阵模式m*n for(i=0;i<m;i+)/输入第一个矩阵a for(j=0;j<n;j+) scanf(&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论