C语言程序设计试验及代码_第1页
C语言程序设计试验及代码_第2页
C语言程序设计试验及代码_第3页
C语言程序设计试验及代码_第4页
C语言程序设计试验及代码_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、西南林业大学C语言程序设计实验题、代码、输出结果编写目的: 学生的痛,大家都明白,特别是学渣的痛。呃,不过我渐渐从学渣成功逆袭,所以最后才会整理下这 些信息,为了让后面的人在面对这 C 语言时不会那么脑大,不用像我们开始时候的茫然。认真享受在课堂上 GET知识的过程,接下去的事:作业考试也是水到渠成的事情,有的课程的却要花点时间,但就像那句话说的: No pain,no get. 付出不一定会有收获,但是不付出一定会让你后悔。所以, 认真听课 ,不仅仅只是 C 语言, 还有其他的课程。实验题 目及代 码、输出结果实验题目目录目录 P1P6Printf 简单输出三角形 P6给定圆半径值为 5,编

2、程求圆面积和圆周长 P6编写一个摄氏温度与华氏温度之间的转换程序 P6编写程序,从键盘上输入两个电阻值,求它们并联电阻值和串联电阻值, 输出结果保留两位小数。P7 (有主函数子函数P26)使用两种指定的方法打印正三角形数阵 P7从键盘输入 3 个数字字符,将它们分别转换为对应的整数值 (即字符' 0' 转换为整数 0,字符' 1'转换为整数 1,依次类推) ,然后求 3 个整数的 平均值。 P8从键盘输入两个两位的正整数,按照以下格式组装成一个四位的正整数。 P8 (指针变量 P19) 输入三角形的三条边长,求三角形的面积。 P9从键盘任意输入 3 个整数,选出

3、其中的最大数并打印。 -P10 从键盘输入三个正整数,判断否能构成三角形的三边? -P10从键盘输入一个合法的算术运算符(+、-、*、/)及两个实数,使用if 语句编写程序,根据输入的运算符判断对这两个实数进行何种运算,并打印运算结果(要求结果保留两位小数)。P11 (有主函数子函数P21)从键盘输入一个年份和一个月份,使用switch语句编程判断并打印该月的天数P12从键盘输入1个整型的分数,使用switch语句编程,判断如果分数介于 0 59分之间就打印“不及格”;如果介于6079分之间就打印“及格”; 如果介于8089之间就打印“良好”;如果介于90100之间就打印“优 秀”。P13使用

4、while语句编程求100以内能被5整除但不能同时被7整除的数,并 统计找到的数的个数。P13从键盘输入一个正整数,使用while语句编程求该整数是一个几位数。P14使用while语句编程求 = 的前n项和P14使用for语句编程求= 的前n项和P15使用for语句编程求=的前 n项和P16使用for语句的嵌套结构编程打印九-九乘法表P16定义一个大小为10的整型一维数组,初始化所有数组元素,编程查找数组中的所有奇数,并统计奇数的个数 P17定义一个大小为10的整型一维数组,初始化其中的9个元素,这9个元素已经按照降序排列。从键盘再输入1个整数,将该整数插入到已有的元素中,需保证这10个数仍然

5、按照降序排序。P18利用指针编程,其功能是求电阻的并联值和串联值。 P18利用指针编程,其功能是利用“除号”和“求余号”将输入的两个两位的正整数组合成一个新的四位的正整数。 P16定义一个大小为10的整型一维数组并初始化数组元素,再定义一个指针 变量让其指向该数组,利用指针编程查找数组中的所有奇数。P20输入三角形的三条边长,定义一个子函数fun()求三角形的面积P21定义一个子函数fun()打印菱形。P22定义一个子函数fun(),其功能是求1累加到100的和P23定义一个子函数fun(),求表达式二一的前n项和P23定义一个fun()函数,其功能是:求两个整数的和、差、积、商。P26在主函

6、数中输入一元二次方程ax2+bx+c=0的三个系数a、b、c,求方程的实根。定义三个子函数fun 1( )、fun2( )、fun3()分别处理方程有无实根、 有两个相同实根、有两个不同实根的情况P27从键盘上输入一个的字符串,输出所有ASCII码为奇数的字符,并统计这些字符的个数。 P28从键盘上输入一个由大写字母、小写字母、数字字符、其它字符构成的字符串,统计字符串中的大写字母个数、小写字母个数、数字字符个数、其它字符个数。P28从键盘输入两个字符串,分别存到字符数组a和字符数组b中,编程将第二个字符串连接到第一个字符串末尾,形成一个新字符串。(不使用#includevstring.h&g

7、t; 库函数)P29使用while语句编程求 =(n从0开始)前n项值,直到某一项的值小于10-6就结束循环。 P30使用for语句的嵌套结构编程打印行数为奇数的对称三教菱形P31从键盘输入一个正整数 x,编程求比x大的,最临近x的n个素数,例如, 为x和n分别输入数值10和15,就表示求出比10大的,最临近10的15个素 数。P31题目及答案printf()函数的编程练习格式1编程输出如图所示的三角形。void mai n()prin tf("*n ");prin tf("* n ");prin tf("*n ");prin tf(

8、"* n "); 给定圆半径值为5,编程求圆面积和圆周长提示:(1) 本题需定义三个浮点型变量,如double r = 5, s, l;(2) 输出浮点型数据的格式说明符是%lf(3) C语言中没有n这个符号,编写程序时直接使用3.14159(4) C语言中没有求次方的运算符,求次方可用连乘的方法#in clude<stdio.h>#define PI 3.14159int mai n()float r=5;printf("圆半径=%lfn 圆面积=%fn 圆周长=%fn",r,PI*r*r,2*PI*r);(其中一个数的n次方可以用数学运算

9、来算pow(r,n), “ r”为底数,n为次数)sea nf()函数、运算符编程练习编写一个摄氏温度与华氏温度之间的转换程序,转换 公式是: 提示:该公式中的C'是一个从键盘输入的已知量;F” 是通过公式计算并打印出来的未知量#in elude <stdio.h>void mai n()double F,C;printf(”请输入一个摄氏温度值:",C);scan f("%lf",&C);F=1.8*C+32;或F=9/5*C+32若定义类型为int,则需要变为 F=9.0/5*C+32或F=9/5.0*C+32或用强制类型转换F=

10、(double)( 9/5)*C+32 ;原因是除号“ /”在运算时为整型运算printf("对应的华氏温度值是2lf",F);编写程序,从键盘上输入两个电阻值,求它们并联电阻值和串联电阻值,输出结果保留两 位小数。运行结果如图所示:注:并联和串联的电阻值计算公式如下。(1)并联电阻RP =R1*R2R1+R2(2)串联电阻 RS = R1+R2提示:(1) scanf()函数可以写成 scanf("%d,%d", &r1, &r2);(2) 结果保留两位小数的格式说明符是“ .2lf”。#in clude <stdio.h>

11、void mai n()double R1,R2,RRRS;printf("请输入两个电阻值:",R1,R2);scan f("%lf,%lf",&R1,&R2);RP=(R1*R2)/(R1+R2);RS=R1+R2;printf(”并联电阻值:%.2lf n串联电阻阻值:.2lf",RP,RS);1、使用两种指定的方法打印如图所示图形字符的输入和输出方法一:使用printf()函数的C格式打印图形提示:一个c”只能打印一个字符。方法一:#in clude<stdio.h> void mai n()方法二:使用pr

12、intf()函数的d”格式打印图形prin tf("%4dn %4dn %dn",1,222,33333);void mai n()方法二:#in clude<stdio.h>int a,b,c;void mai n()a=49;b=50沙 *C:ItestDebugprog. ese"char a,b,c;c=51;待输乂誦木瞄检的正堂级吨34a='1'虽苔成的四位正樂数是:1324b='2'printf("Press flin# key to< cont inueHc=3;%cnprintf(&quo

13、t; %cn",a);",a);7printf(" %c%c%c n", b,b,b);priprin tf("%c%c%c%c%cn",c,c,c,c,c);ntf(” %c%c%cn", b,b,b);prin tf("%c%c%c%c%c n",c,c,c,c,c);方法二的类似(运用 ASCLL码)#in clude<stdio.h>1、从键盘输入3个数字字符,将它们 分别转换为对应的整数值(即字符 '' 转换为整数0,字符''转换为整数1, 依次类推)

14、,然后求3个整数的平均值。 运行结果如图所示:double a,b,c,d;printf(”请输入三个数字字符:”); scan f("%lf,%lf,%lf", &a,&b,&c); d=(a+b+c)/3;printf(” 平均值=%lfn",d);#in clude <stdio.h>提示:本题的变量定义可参考如下:char a, b, c;/ 变量 a,b,c保 存输入的3个数字字符int x, y, z; / 变量 x,y,z保存转换后的3个整数double aver; / 变量 aver保 存求出的平均值#in cl

15、ude<stdio.h>#in clude<math.h>void mai n(void)");char a,b,c;int x,y,z; double aver;printf("请输入三个数字字符:sca nf("%c,%c,%c",&a,&b,&c); x=a-48;y=b-48;z=c-48;aver=(x+y+z)/3.0;printf("平均值为:%2lf",aver)void ma in (void)从键盘输入两个两位的正整数,按照以下格式组装成一个四位的正整数。例如:输入1

16、2和34,组装成的四位数是1324。运行效果如右图所示:提示:(1)首先利用 除号”和求余号”分别把两个两位正整数的十位数、个位数分离开; 再经过数学运算组装成一个四位数。(2)scanf(函数可以写成 scanf("%d%d", &a, &b);#in clude<stdio.h>#in clude<math.h> void mai n(void)int a,b, z;printf(”请输入两个两位数的正数:");sca nf("%d %d",&a, &b); z=a/10*1000+b

17、/10*100+a%10*10+b%10; printf(”合成的四位正整数是:%dn",z);数学函数的使用1、输入三角形的三条边长,求三角形的面积。运行结果如图所示: 提示:(1) 本题的变量定义可参考如下:int a, b, c; double x, s;(2) scanf(函数可以写成scan f("%d,%d,%d", &a, &b, &c);(3) 计算三角形面积的公式是:(4)求x的开方值的库函数是 sqrt(x),使用时其中包含头文件 math.h#in clude<stdio.h>#in clude<ma

18、th.h>void mai n(void)int a,b,c;double x,s;printf("请输入三角形的三边:”);scan f("%d %d %d",&a,&b,& c);x=(a+b+c)/2;s=sqrt(x-a)*(x-b)*(x-c)*x); prin tf("s=%lfn",s);单分支if语句编程练习从键盘任意输入3个整数,选出其中的最大数并打印。提示:(1) 要判断最大数,需对每两个数作两两比较。(2) 可以使用3个单分支if语句编写程序。(3) 从键盘输入2个整数到变量a、b中,编程总是

19、把较小的数放入a中,较大的数放入b中#i nclude <stdio.h>a=b;void mai n()b=t;int a,b,c,t;if(a<c)printf("请输入三个整数:”);t=a;scan f("%d%d%d", &a,&b,&c);a=c;if(a<b)c=t;t=a;if(b<c)t=b;b=c;c=t;printf("最大数是:%dn",a);#i nclude <stdio.h>void mai n()int a,b,t;printf("请输入

20、两个整数到变量a,b中");scan f("%d%d",&a,&b);prin tf("a=%d,b=%dn",a,b); if(a>b) t=a; a=b; b=t;printf("运行结 果:a=%d,b=%dn",a,b);elseprintf(”运行结 果:a=%d,b=%dn",a,b);就按照以下提示该题属于双分支if-else语句”结构。能构成三角形的逻辑条件是:任意的两边之和均要大于第三边。 计算三角形面积的公式是:本题的变量定义可参考如下:int a, b, c; 其中dou

21、ble x, s;本题要用到求x开方值的数学库函数sqrt(x),需包含头文件 math.h从键盘输入三个正整数,判断否能构成三角形的三边?如果能的数学公式计算三角形的面积;如果不能,就输出“不能构成三角形”的提示信息。 提示:(1)(2)(3)(4)(5)#in clude<stdio.h>#in clude<math.h>void mai n(void)int a,b,c,m, n,t; double x,s;printf("请输入三角形的三边:”);scan f("%d %d %d",&a,&b,& c);m=

22、a+b; n=b+c; t=a+c;if(m>c&&n >a&&t>b)x=(a+b+c)/2; s=sqrt(x-a)*(x-b)*(x-c)*x);printf("构成的三角形面积是:%.2lfn",s);elseprintf("不能构成三角形n"); 从键盘输入一个合法的算术运算符(+、-、*、/)及两个实数,使用if语句编写 程序,根据输入的运算符判断对这两个实数进行何种运算,并打印运算结果(要求结果保留两位小数)。程序运行效果如下图所示: 提示:(1) 该题属于多分支if语句”结构。(2) 本题

23、的变量定义可参考如下:char fu; /fu变量用来存放运算符double x, y,乙/x、y变量用来存放输入的2个实数,z存放运算结果(3) 输入字符型数据的格式说明符是%c实型数据的格式说明符是lfswitch 语句编写该题程序。4)输出实数保留 2 位小数的格式说明符是 %.2lf。( 5)本题可参考教材 P61 例 3.7,但是不允许使用#include<stdio.h>void main()char fu; double x,y,z; int t,a;printf(" 请输入一个算数运算符和两个浮点数 scanf("%c %lf %lf"

24、,&fu,&x,&y); t=47-fu;if(t=4) z=x+y; printf("%.2lf %c else if(t=5) z=x*y; printf("%.2lf else if(t=2) z=x-y; printf("%.2lf else if(t=0) z=x/y; printf("%.2lf%.2lf%c%c%.2lf%.2lf%.2lfn",x, fu%c %.2lf%.2lfn",x,%.2lfn",x,");,yfufu%.2lfn",x,z);,y,yfu,

25、z);,z);,y,z);elseprintf(" 运算符非法,无法参与运算 n");从键盘输入一个年份和一个月份, 使用 switch 语句编程判断并打印该月的天数。 程序运行效果如下所示:提示:(1) 本题先使用if语句判断年份和月份是否有效。(2) 如果年份和月份有效,再嵌套switch语句判断每个月份的天数。(3) 对于2月份的处理需要判断闰年,闰年的判断方法请参考教材P62例3.8#include<stdio.h>void main()int year,month,day;printf(" 请输入一个年份和一个月份: ");scan

26、f("%d %d",&year,&month); if(month>0&&month<=12)switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("%d 月有 31 天 n",month); break;case 4:case 6:case 9:case 11:printf("%d 月有 30 天 n",month); break;default: if(year%4=0&&year%1

27、00!=0)|(year%400=0)printf("2 月有 29 天n");elseprintf("2 月有 28 天n");break;elseprintf(" 输入的月份值无效! ");从键盘输入1个整型的分数,使用switch语句编程,判断如果分数介于0 59分之间就打印“不及格;”如果介于 60 79 分之间就打印“及格;”如果介于 80 89之间就打印“良好;”如果介于 90 1 00之间就打印“优秀。”#include<stdio.h>case 8:void main()printf(" 良好 n

28、");break;int a,b;case 9:printf(" 请输入一个分数介于 <0 100>case 10:间:");printf(" 优秀 n");scanf("%d",&a);break;if(a>0&&a<=100)default:printf(" 不及格 n");b=a/10;break;switch(b)case 6:elsecase 7:printf(" 输入的分数份值无效! n");printf(" 及格

29、n");break;使用while语句编程求100以内能被5整除但不能同时被7整除的数,并统计找到的数的个数提示:(1)该题变量可定义为:int i=1, n=0; / i是循环变量,n是统计个数的变量(2) 整除问题应使用求余号“ %,而不能使用除号“/#in clude<stdio.h>void mai n()int i,n ,b,c;i=1;n=0;printf("100以内能被5整除但不能同时被7整除的数是:n");while(i<=100)b=i%5;c=i%7;if(b=0&&c!=0)prin tf("%d

30、”,i);n=n+1;i+;printf(”符合条件的数有%d个n",n);从键盘输入一个正整数, 使用while语句编程求该整数是一个几位数。程序运行效果如下所示:提示:(1)该题变量可定义为intx, n=0, m;其中,x保存输入的正整数,n统计位数,m暂存x的值。(2)每次循环将x的值缩小10倍,直到x缩小为0即结束循环,循环次数就是整数的位数。#in clude<stdio.h>void mai n()int x,n ,m,i;n=0;printf("请输入一个正整数:”); scan f("%d",& x);i=x;whi

31、le(m!=0)m=x/10;n+;x=m;printf("%d 是一个 %d 位数 n”,i,n);匸*C: test Debu£a-. . .|sum = 1.818182Press any key to continueTinnr上使用while语句编程求以下表达式的值,程序运行结果如图所示:提示:(1)该题变量可定义为:int i;double mu, t, sum;(2)本题的循环体里有3个通式:分母的通式、当前项的通式、求和的 通式、i自增的通式。printf(”表达式的值为: prin tf("sum= %fn ”,sum);n");I*C

32、: testDebuea| (Jk.如果从键盘输入 20赋sum = 5珂伽胭4Press any key to cantinuev1 1 r sum=1/mu+t; t=sum; i+; mu=mu+i;#in clude<stdio.h>void mai n()int i;double mu,t,sum;mu=1;t=0;i=1;while(i<=10)for语句编程练习1、使用for语句编程求以下表达式的值,值给变量n,则运行效果如图所示: 提示:(1)该题变量可定义为inti, n; double t, sum;(2)本题需用到求开方值的数学函数sqrt(),并包含头

33、文件 math.h#in clude<stdio.h>#in clude<math.h>void mai n()int i,n;double t,sum,b=0;printf("请输入整数值:”); scan f("%d",&n);sum=0;for(i=0;i<=20;i+)t=sqrt(i,2);b=b+t;sum=sum+b;prin tf("sum=%lfn",sum);使用for语句编程求以下表达式的值,程序运行结果如图所示:提示:(1)注意观察可知相邻两项中,后一项的分母是前一项的分母加(2)该

34、题变量可定义为:int i;double mu, t, sum;其中i是循环变量,mu保存每一次循环的当前项的分母,t保存每一次循 环的当前项,sum保存N项式的总和mu=mu+i;t=1/mu; sum=sum+t;printf(”表达式值为:n”); prin tf("sum = %lfn",sum);#in clude<stdio.h> void mai n()int i;double t=0,sum=0,mu=0; for(i=1;i<=10;i+) 循环的嵌套编程练习 使用for语句的嵌套结构编程打印九-九乘法表,程序运行效果如图所示:#in c

35、lude<stdio.h>void mai n()int i,m, n;for(i=1 ;i<10;i+)for(m=1;m<=i;m+)n=i*m;prin tf("%d*%d=%d ",m,i, n);prin tf("n");定义一个大小为10的整型一维数组,初始化所有数组元素,编程查找数组中的 所有奇数,并统计奇数的个数。运行效果如图所示: 提示:(1) 本题变量定义可参考如下int a10=2,4,5,6,9,11,13,16,17,19, i, sum=0;(2) 首先用一个for循环打印10个数组元素的初值。(1)源

36、程序粘贴在此处。#in clude<stdio.h>/#defi ne N 10void mai n()(3) 再用一个for循环嵌套if语句查找并打印数组中的奇数。int a10=2,4,5,6,9,11,13,16,17,19, i,n=0;printf("数组中的初始值是:”);for(i=0;i<10;i+) prin tf("%d ”,ai);prin tf("n ”);prin tf("n ”);printf(”数组中的奇数是:"); for(i=0;i<=10;i+)if(ai%2!=0) prin tf(

37、"%d ”,ai); n+;prin tf("n");prin tf("n");printf("奇数个数是:%dn",n);定义一个大小为10的整型一维数组,初始化其中的 9个元素,这9个元素已经 按照降序排列。从键盘再输入1个整数,将该整数插入到已有的元素中,需保证这10个数仍然按照降序排序。程序运行效果如下图所示: 提示:(1)本题变量定义可参考如下int a10= 20, 18, 15, 12, 10, 9, 7, 5, 2, i, j, t;(2) 本题使用冒泡法排序,先将键盘输入的1个整数放到数组元素a9中,然后使

38、用排序算法对这10个数进行降序排序。#in clude<stdio.h>prin tf("%d ",ai);#defi ne N 10void mai n()prin tf("n");prin tf("n");int a9= 20, 18, 15, 12, 10, 9, 7, 5, 2;for(i=0;i<10;i+)int i,j,t;printf(”数组中前面9个兀素是:n");for(j=0;j<9-i;j+)for(i=0;i<9;i+)if(aj<aj+1)prin tf(&qu

39、ot;%d ",ai);t=aj;prin tf("n ”);aj=aj+1;prin tf("n ”);aj+1=t;printf("请输入一个整数:”);scan f("%d",&a9);prin tf("n");printf("数组中的10个兀素是:n");printf("降序排序后的整数为for(i=0;i<10;i+)for(i=0;i<10;i+)prin tf("n");prin tf("%d ”,ai);利用指针编程,其

40、功能是求电阻的并联值和串联值。程序运行效果如图所示:要求:输入电阻值;计算并联串联值;打印结果都必须使用指针完成。 提示:(1)该题的变量可定义为int r1, r2, *p1, *p2; double rp, rs, *pp, *ps;其中指针pl、p2用来指向并操作变量r1、r2;指针pp、ps用来指向并操作变量rp、(2)在利用指针编程之前,应将指针指向对应的变量#in clude<stdio.h>void mai n()int r1, r2, *p1, *p2; double rp, rs, *pp, *ps;printf("请输入两个电阻值");sca

41、nf("%d %d",&r1,&r2);p仁&r1;p2=&r2;rp=(double)(*p1 * *p2) / (double)(*p1 + *p2);rs=*p1+*p2;pp=&rp;ps=&rs;printf(” 并联电阻组织=%lfn",*pp);printf("串联电阻组织=%lfn",*ps);利用指针编程,其功能是利用除号”和求'余号”将输入的两个两位的正整数组合成一个新的四 位的正整数。要求:输入整数值;计算;打印结果都必须使用指针完成 提示:该题的变量可定义为int

42、a, b, c, *pa, *pb, *pc;其中指针pa、pb、pc分别用来指向并操作变量a、b、c。变量a、b用来存放输入的两个两 位正整数,变量c用来存放组合后的四位的正整数方法一#in clude<stdio.h> void mai n()int a,b,c,*pa,*pb,*pc;printf(" 请输入两个两位数的正整数: ");scanf("%d %d",&a,&b);pa=&a;pb=&b; c=*pa/10*1000+*pb/10*100+*pa%10*10+*pb%10;pc=&c;

43、printf(" 组合成的四位正整数是: %dn",*pc);方法二#include<stdio.h>void main()int a,b,c,*pa,*pb,*pc;printf(" 请输入两个两位数的正整数: ");pa=&a;pb=&b;scanf("%d %d",pa,pb); c=*pa/10*1000+*pb/10*100+*pa%10*10+*pb%10;pc=&c;printf("%dn",*pc);/ Int 前不能空行,不然无法识别。定义一个大小为 10的整型

44、一维数组并初始化数组元素, 再定义一个指针变量让其指向该数组,利用指针编程查找数组中的所有 奇数。运行效果如图所示:提示:1) 该题变量可定义为int a10=2,4,5,6,9,11,13,16,17,19, *p, i;2)在使用指针编程之前,应先将指针 p 指向数组要求:使用下标法”编程,即使用p'i ” 方法一 #include<stdio.h>void main()int a10=2,4,5,6,9,11,13,16,17,19,*p,i,n=0;p=&ai; ( p=a;)printf(" 数组中的初始值是: "); for(p=a,

45、i=0;i<10;i+) (for(i=0;i<10;i+) printf("%d ",pi);printf("n");printf("n");printf(" 数组中的奇数是: ");for(p=a,i=0;i<=9;i+) (for(i=0;i<=9;i+) if(pi%2!=0)的形式引用数组元素。 printf("%d ",pi); n+;printf("n");printf("n");printf(" 奇数个数是

46、: %dn",n);方法二 #include<stdio.h>void main()inta10=2,4,5,6,9,11,13,16,17,19,*p,i,n=0; p=a;printf(" 数组中的初始值是: ");for(i=0;i<10;i+)prin tf("%d ”,pi);prin tf("n ”);prin tf("n ”);printf(”数组中的奇数是:"); for(i=0;i<=9;i+)if(pi%2!=0) prin tf("%d ”,pi); n+;prin t

47、f("n");prin tf("n");printf("奇数个数是:%dn",n);输入三角形的三条边长,定义一个子函数fun()求三角形的面积。运行结果如图"C:DoctriEins ahd s. |溝输入三角形的三边:三角形面积-6.000000 Press anjy key to continue所示:要求:(1) 数据输入和结果打印都必须在main()函数中完成。(2) fun()函数的功能是求三角形的面积。提示:(1)计算三角形面积的公式是:1 x=_(a + b+c)s x(x-a)(x-b)(x-c)其中 2计

48、算x的开方值的库函数是 sqrt(x);使用时需包含头文件 math.h(2)fun()函数的函数首部可参考如下double fun(int a, int b, int c) /该函数有3个形参,返回值类型为 double#in clude<stdio.h>#in clude<math.h>double fun (i nt a,i nt b,i nt c)double m;double d,s;d=(a+b+c)/2;s=sqrt(d-a)*(d-b)*(d-c)*d);return(s);void mai n()int a,b,c;double m;printf(&q

49、uot;请输入三角形的三边:”);scan f("%d %d %d",&a,&b,&c);m=fu n(a,b,c);printf("三角形面积=%lfn",m);定义一个子函数 fun( )打印菱形。运行结果如图所示: 要求:菱形的行数在 main( )函数中输入,根据输入的行数决定菱形打印几行 提示:( 1)fun( )函数的函数首部可参考如下 void fun(int x) / 该函数有 1 个形参, 无返 回值(2)在 fun( )函数内部,首先根据形参 x 的值计算出正三角和倒三角的行数,然后再执行循环的嵌套结构分别打印

50、正三角和倒三角。#include<stdio.h>void fun(int x)int i,j,k; for(i=1;i<=x/2+1;i+)for(k=1;k<=x/2+2-i;k+) printf(" ");for(j=1;j<=2*i-1;j+)printf("*");printf("n"); for(i=1;i<=x/2;i+)printf(" ");for(k=1;k<=i;k+)printf(" ");for(j=1;j<=x-2*i;

51、j+)printf("*");printf("n");void main()int a;printf(" 请输入菱形的行数(注意:行数 为奇数):");scanf("%d",&a);fun(a);定义一个子函数 fun( ),其功能是求 1累加到 100的和 要求:结果在子函数打印。提示:(1) fun()函数写在前,ma in ()函数写在后。(2) fun( )函数定义为 无参、无返回值 形式。 #include<stdio.h> void fun()int i,sum=0; for(i=1

52、;i<=100;i+) sum=sum+i;printf("1+2+3+.+100=%dn",sum); printf("n");void main()fun ();定义一个子函数fun(),求表达式Sn = 1 * % * %! * % * %! *+ Tn!的值。主函数定义如下所示,请完成fun()函数。#in clude<stdio.h>double fun (i nt n);void mai n()int n;double sum;printf(”请输入n的值:");scan f("%d",&

53、;n);sum=fun(n);prin tf("sum=%lfn",sum);double fun (i nt n)int i;double a=1,b,sum=1;for(i=1;i<=n ;i+)a=(double)a*i;b=(double)1/a;sum=sum+b;return(sum);2、定义一个子函数fun()求算术表达式的解。要求:运算符(+, -, *, /, %)和两个整数在主函数输入,结果也在主函数打印。提示:(1)主函数内先判断运算符的有效性,如果运算符有效,就调用 fun()函数。如果运算符非法,就打印错误提示信息,不调用 fun()函数。

54、(2)fun()函数的函数首部可以参考如下double fun( char fu, int a, int b)其中形参fu代表运算符,形参a、b代表参与运算的两个数,函数 返回类型为double,表示函数的运行结果是实数ca ' T:De sktop 1 lDebugT ewt.J 直二 2, 3L.200000Press any key to continuedouble fun( char fu, double x, double y ,int t)double ans;if(t=4)an s=x+y;else if(t=5)an s=x*y;else if(t=2)an s=x-

55、y;else if(t=0)an s=x/y;/* elseprintf("运算符非法,无法参与运算 n");*/ return (an s);#i nclude<stdio.h>void mai n()char fu;double x,y, z;int t;printf("请输入一个算数运算符和两个浮点数");sca nf("%c %lf %lf", &fu,&x,&y); t=47-fu;if(t=4|t=5|t=2|t=0)z=fu n(fu,x,y,t);printf("%.2lf

56、 %c %.2lf=%.2lfn",x ,fu ,y ,z);elseprintf("运算符非法,无法参与运算n");参数的“传值”方式与“传地址”方式编程 练习1、在主函数中输入2个电阻值,定义一个子函数求这2个电阻 的并联电阻值和串联电阻值,并在主函数中输出运算结果。程序运行效果 如图所示: 提示:(1) 主函数中的变量定义可参考如下double a, b, bing, chua n;(2) 子函数为有参、无返回值的形式。#i nclude<stdio.h>void fun( double a,double b)double bin g,chua

57、n;bin g=(a*b)/(a+b);chuan=a+b;printf(” 并联电阻阻值=%lfn",bing);printf(” 串联电阻阻值=%lfn",chuan); return;void mai n()double a,b,b in g,chua n;printf(”请输入两个电阻值:”);void fun (i nt a, int b,s *C:Docu>ents an, . . |int *he, int *eha, intjh.*ji, double *sha ng)初;3 +4=7p: 3 - 4 - -13 * 4 - 12*he=a+b;商:3

58、 z 4 = 0.75Press amy key to coniioue*eha=a-b;*ji=a*b;#in clude<stdio.h>ax2+bx+c=0的三个系数a、b、e,求方程的实fun 1()、fun2( )、fun3()分别处理方程有无实根、有两个相sea nf("%lf%lf", &a,&b);fun( a,b);2、定义一个fun()函数,其功能是: 求两个整数的和、差、积、商。程序 运行效果如图所示:要求:两个整数值在主函数中输入,运算结果在主函数中输出。子函数是进行运算。提示:(1) mai n()函数的变量定义为int a, b, he, eha, ji;double sha ng ;(2) 本题需使用参数的传地址方式,fun()函数有6个参数。fun()函数首部为:在主函数中

温馨提示

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

评论

0/150

提交评论