[工学]C语言实验指导讲义2.doc

上传人:音乐台 文档编号:1976597 上传时间:2019-01-27 格式:DOC 页数:42 大小:206KB
返回 下载 相关 举报
[工学]C语言实验指导讲义2.doc_第1页
第1页 / 共42页
[工学]C语言实验指导讲义2.doc_第2页
第2页 / 共42页
[工学]C语言实验指导讲义2.doc_第3页
第3页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[工学]C语言实验指导讲义2.doc》由会员分享,可在线阅读,更多相关《[工学]C语言实验指导讲义2.doc(42页珍藏版)》请在三一文库上搜索。

1、 C语言实验指导讲义 石永华编滁州学院机械与电子工程学院二零一一年九月前 言 学习语言程序设计应当充分注意实践环节,要求学生多编程序,多上机调试程序。上机实验的目的决不仅是为了验证所编程序的正确性,其主要目的在于掌握上机操作要领和调试程序技术。不要满足于通过自己所编的程序,在调通一个程序后,可以自己改变程序中某些部分,观察和分析在不同情况下的编译和运行结果。 上机实验的步骤如下: 、按实验指示的要求,事先编好程序,准备好数据,经人工静态检查无误,并事先分析可能出现的问题,方可上机。 、上机输入和调试程序。 、整理上机实验结果,写出上机实验报告,报告应包括:(1)题目要求(2)算法说明(可以用流

2、程图来表示)(3)程序清单(4)运行结果 (5)分析与思考,如果程序未能通过,应在事后找出程序中的错误,分析其原因。第一章 工作平台一、目的和要求1、熟悉语言程序的支持运行环境,了解所用计算机系统的软、硬件配置和使用方法。 、初步了解运行一个语言程序的过程。二、实验环境 硬件环境:计算机(windows xp系统) 软件环境:Turbo C3.0或VC+6.0三、实验内容 、输入并运行下面程序。 实验程序:main( ) printf(I am a student in the department of physics。); printf(I will devote myself for m

3、y study。); 实验结果: 、输入并运行下面程序,并分析结果是正确。 实验程序: main ( ) int a,b,sum; a=200;b=345; sum=a+b; printf(Sum is %dn,Sum); 实验结果: 、编写一个求三个整数之和的程序。 参考程序: (1)只用main函数 main( ) int a,b,c,sum; a=100;b=200;c=300; sum=a+b+c; printf(sum= is %dn,sum); (2)用求两个整数之和的函数实现: main( ) int add(int x,int y);int a,b,c,sum; printf(

4、Enter two numbers a,b:); scanf(%d,%d,&a,&b); sum=add(a,b); printf(Enter one number c:); scanf(%d,&c); sum=add(sum,c); printf(sum=%dn,sum); int add(int x,int y) int z; z=x+y; return(z); 、编写一个求0100之间全部偶数之和的程序: 参考程序: main( ) int m,sum; sum=0; for(m=0;mb) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(ad) t=a;a=d;

5、d=t; if(ae) t=a;a=e;e=t; printf(min=%dn,a); 第二章 C语言基础一、目的和要求 1、进一步掌调试的方法 2、掌握数据的输入和输出方法 3、掌握有关运算符与表达式的运用二、实验内容和步骤 1、上机运行以下程序,并分析结果。 main( ) int x; x=-1+2*3-4; printf(%dn,x); x=1+2%3-4; printf(%dn,x); x=-1*2%-4/3; printf(%dn,x); x=(5+4)%3/2; printf(%dn,x); 2、调试下面程序,分析结果。 main( ) int x,y,z; x=y=z=0; +

6、x|+y&+z; printf(x=%dt y=%dt z=%dn,x,y,z); x=y=z=0; +x&+y|+z; printf(x=5dt y=%dt z=%dn,x,y,z); x=y=z=0; +x&+y&+z; printf(x=%dt y=%dt z=%dn,x,y,z); x=y=z=-1; +x&+y&+z; printf(x=%dt y=%dt z=%dn,x,y,z); x=y=z=-1; +x&+y|+z; printf(x=%dt y=%dt z=%dn,x,y,z); x=y=z=-1; +x|+y&+z; printf(x=%dt y=%dt z=%dn,x,y

7、,z); 3、输入并运行下列程序。 main( ) int i,j,m,n; i=8; j=10; m=+i; n=j+; printf(%d,%d,%d,%d,i,j,m,n); 分别以下改动并运行: (1)将第行改为:m=i+; n=+j; (2)程序改为: main( ) int i,j; i=8; j=10; printf(%d,%d,i+,j+); (3)在(2)的基础上,将printf语句改为: printf(%,%,+i,+j); (4)再将printf语句改为: printf(,”,i,j,i+,j+); (5)程序改为: main( ) int i,j,m=0,n=0; i=

8、8; j=10; m+=i+; n-j; printf(i=,); 、编制一个程序,要求:使用scanf( ) 函数输入字符串和十六进制数。读入后由printf( )函数分别打印输出。第一次由scanf(%s,a);读入字符串,第二次由scanf(%x,&b);读入十六进制数读入完毕后,由两个printf( )函数输出。 includestdio.h main( ) char a25; int b; scanf(%s,a); scanf%x, &b); printf(*string is:%s *n,a); printf(*value is:%x*n,b); 、输入并运行下面程序。 main(

9、 )int a,b; float c,d; long e,f; unsigned int u,v; char c1, c2; scanf(%d,%d,&a,&b); scanf(%f,%f,&c,&d); scanf(%ld,%ld,&e,&f); scanf(%o,%o,&u,&v); scanf(%c,%c,&c1,&c2); printf(n); printf(a=%7d,b=%7dn,a,b); printf(c=%10.2f,d=%10.2fn,c,d); printf(e=%17ld,f=%17ldn,e,f); printf(u=%o,v=%on,u,v); printf(c1=

10、%c,c2=%cn,c1,c2); 输入数据:a=123,b=456,c=17.6,d=71837.65,e=70000,f=2174506,u=62000,v=58765,c1=a,c2=b 分析运行结果,特别注意输出c1,c2的值是什么?什么原因? (1)在scanf(%c,%c,&c1,&c2);语句之前加一个语句:getchar( );再编译,分析编译信息,再在程序第一行加一个命令行:#includemath.h分析结果。 (2)将输入e和f的语句改为:scanf(%d,%d,&e,&f);运行并输入上述数据,并分析结果。 (3)将输入u,v的语句改为:scanf(%d,%d,&u,&

11、v);运行并分析结果。 (4)将输出e,f的语句改为:printf(e=%17d,f=17dn,e,f);运行并分析结果。 (5)将输出u,v的语句改为:printf(u=%u,v=%un,u,v);或printf(u=%d,v=%dn,u,v); 运行并分析结果。 6、思考题:编写一个程序,用getchar函数读入两个字符给c1,c2。然后分别用putchar函数和printf函数输出这两个字符。并思考以下问题:(1) 变量c1,c2应定义为字符型或整型?二者皆可?(2) 要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整型变量与字符变量是否在

12、任何情况下都可以互相代替?如:char c1,c2;与int c1,c2;是否无条件等价? 参考程序: #include stdio.h main( ) char c1,c2; printf(请输入两个字符C1,C2:n); scanf(%c,%c,&c1,&c2); printf(用putchar语句输出结果为:n); putchar(c1); putchar(c2); printf(n); printf(用printf语句输出结果为:n); printf(%c%cn,c1,c2); (1)用字符或整型定义皆可 (2)用printf函数 (3)字符变量在计算机内占一个字节,而整型变量占两个字

13、节因此整型变量在可输出字符范围内(微机上,ASCII码为0255的字符)是可以与字符数据互相转换的。 第三章 控制语句一、目的和要求 1、熟悉掌握if语句的使用 2、熟悉掌握三种循环语句的使用 3、掌握break和continue语句的使用二、实验内容和步骤 1、输入并运行下面的程序 #include stdio.h main( ) int x; scanf(please input an integer:%dn,&x); if(x=0) if(x=0) printf(x=0,second if executedn); else printf(x0,else executedn); 分别输入0

14、,小于0和大于0的数,结果是什么?else与哪个if匹配? 2、输入并运行下列程序 #includestdio.h main( ) int x; scanf(x=%dn,&x); switch(x) case(1):printf(h:n); case(2):printf(bye-byen); case(3):printfnown); default:printf(thenn); (1)分别给x赋值1,2,3,4,结果如何? (2)把default放于case(2)之前,重复(1); (3)在case(2)之前加上break语句,重复(1); (4)在前三种情形后都加上break语句,重复(1)

15、。 3、设计一个程序判断输入年份是否闰年的程序。 参考程序: main( ) char ch; int year; do printf(please enter yearn); scanf(%d,&year); if(year%4=0&year%100!=0|year%400=0) printf(%d is LEAP!n,year); else printf(%d is NOT leap!n,year); printf(if continued,press Y,otherwise press any key abortn); scanf(%ld,&ch); while(ch=Y|ch=y);

16、4、编写程序计算 e=1+1/1!+1/2!+1/3!+.+1/n!,使误差小于给定的E。设 E=0.00001。上机调试通过此程序。 参考程序: main( ) int i=1; double e=1.0,y,x,datax; printf(n please enter error:); scanf(%lf,&datax); x=1.0; y=1/x; while(y)=datax) x=x*i; y=1/x; e=e+y; +i; printf (%12.10lf,e); 5、编写程序求 参考程序: main( )int N1=100,N2=50,N3=10;float k; float

17、s1=0,s2=0,s3=0; for(k=1;k=N1;k+)s1=s1+k; for(k=1;k=N2;k+)s2=s2+k*k; for(k=1;k=N3;k+) s3=s3+1/k; printf(总和=%8.2fn,s1+s2+s3); 6、思考题:企业发放的奖金根据利润提成。利润(I)低于成或等于10 万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10 万元的部分按10%提成,高于10万元的部分。可提成7。5%;利润高于20万元,低于40万元时,高于20万元的部分按5%提成;40万元I=60万元时,按3% 提成(高于40万元的部分);60万元I100万元时,超过10

18、0万的部分按1%提成。 从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句 (2)用switch语句编写程序。 参考程序:(1)用if语句 main ( ) long i; float bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+200000*0.015; printf(请输入利润:); scanf(%ld,&i); if(i=1e5) bonws=i*0.1; els

19、e if(i=2e5) bonus=bon1+(i-100000)*0.075; else if(i=4e5) bonus=bon2+(i-200000)*0.05; else if(i=6e5) bonus=bon4+(i-400000)*0.03; else if(i10) branch=10; switch(branch) case 0:bonus=i*0.1;break; case 1:bonus=bon1+(i-100000)*0.075;break; case 2: case 3: bonus=bon2+(i-200000)*0.05;break; case 4: case 5:

20、bonus=bon4+(i-400000)*0.03;break; case 6: case 7: case 8: case 9: bonus=bon6+(i-600000)*0.015;break; case 10:bonus=bon10+(i-1000000)*0.01; printf(奖金是%10.2f,bonus); 第四章 函数与程序控制一、目的和要求 1、掌握函数的定义和调用方法 2、学会使用递归方法进行程序设计,掌握递归函数编写的规律 3、学会使用宏替换编写程序,弄清文件包含的作用二、实验内容与步骤 1、编写程序在屏幕上画一条正弦曲线参考程序:#include stdio.h m

21、ain( ) char p30; int ts; double rd,n,sin(),cos(); printf( -1 0 1n); /*空9格*/ printf( I I In); /*空10格*/ for(n=0;n=360;n=n+15) strcpy(p, I ); /*空10格*/ ts=(int)(10+10*sin(n*rd); pts=*。 printf(%5.0f %sn,n,p); 2、编写一个函数,求出一个正整数的所有因子,如。 参考程序:#include stdio.h viod facters(int number) int i,factor; for(i=z;i=

22、number;i+) if(number%i=0) factor=i; break; printf(%d*,factor); if(number!=i) number=number/i; factors(number); else for(i=0;iv)t=u;u=v;v=t; a=u;b=v; while(r=b%a)!=0) b=a;a=r; return(a); led(u,v,h) int u,v,h; return(u*v/h); main( ) int u,v,h,l; scanf(%d,%d,&u,&v); h=hef(u,v); printf(H.C.F=%dn,h); l=l

23、ed(u,v,h); printf(L.C.D=%dn,l); 、定义一个宏,交换两个参数的值。参考程序:交换两个参数的值的宏定义为:#define SWAP(a,b)(a)=(a)+(b);(b)=(a)- (b);(a)=(a)-(b); main( ) float x,y; int i,j; printf(nPlease enter 2 float number:); scanf(%f,%f,&x,&y); printf(x=%f,y=%fn,x,y); SWAP(x,y); printf(x=%f,y=%fn,x,y); printf(nplease enter 2 int numbe

24、rs:); scanf(%d%d,&i,&j); printf(i=%d,j=%dn,i,j); SWAP(i,j); printf(i=%d,j=%dn,i,j); 5、给出年、月、日,计算该日是该年的第几天? 参考程序:主函数接收从键盘输入的日期,并调用sum_day和leap函数计算天数,其中 sum_day计算输入日期的天数,leap函数返回是否是闰年的信息。 main( ) int year,moth,day; int days; printf(n请输入日期(年,月,日)n); scanf(%d,%d,%d,&year,&month,&day); printf(n%d,年%d月%d日

25、,year,month,day); days=sum_day(month,day); if(leap(year)&month=3) days=days+1; printf(是该年的%d天n,day);static int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31 int sum_day(month,day) int month;day; int i; for(i=1,i0) y1=y; x1=x; else x2=x; while (fabs(y)=0.0001; return(x); main( ) float x1,x2,f1,f2,x; do printf(input x1,x2n); scanf(%f,%f,&x1,&x2); f1=f(x1); f2=f(x2); while (f1*f2=0); x=root(x1,x2); printf(A root of equation is %8.4t,x); 第五章 数组一、 目的和要求。 、掌握数组的概念和使用。 、数组初始化的方法。 、字符数组和字符串的应用。 、用数组名作函数参数。二、实验内容与步骤 1、用选择法对10个整数排序。 参考程序:#define N 10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1