C语言程序设计实验报告.doc

上传人:jian****018 文档编号:9115517 上传时间:2020-04-03 格式:DOC 页数:50 大小:232.50KB
返回 下载 相关 举报
C语言程序设计实验报告.doc_第1页
第1页 / 共50页
C语言程序设计实验报告.doc_第2页
第2页 / 共50页
C语言程序设计实验报告.doc_第3页
第3页 / 共50页
点击查看更多>>
资源描述
C语言程序设计实验简介课程名称:C语言程序设计课程性质:专业必修课课程属性:专业必修课课程学时学分:学时78 实验学时32 学分6面向专业:软件技术、网络系统管理、计算机应用技术、楼宇智能化工程技术、现代教育技术一、课程的任务和基本要求C语言程序设计实验是面向计算机相关专业学生开设的C语言程序设计实验课,是配合C语言程序设计课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。二、实验项目【实验一】最简单的C程序-顺序程序设计【实验二】逻辑运算和判断选取控制【实验三】循环结构程序设计(一)【实验四】循环结构程序设计(二)【实验五】函数【实验六】数组(一)【实验七】数组(二)【实验八】指针【实验九】结构体、共用体和文件【实验十】C程序综合性实验三、有关说明1、与其它课程和教学环节的联系:先修课程:计算机导论后续课程:面向对象程序设计、Java程序设计、php、数据结构、软件工程2、教材和主要参考书目:(1)教材: C程序设计题解与上机指导(第三版),谭浩强 编著,北京:清华大学出版社,2005年。(2)主要参考书目: C语言程序设计(第三版) 谭浩强 著,清华大学出版社,2005年。三、实验内容实验一 最简单的C程序-顺序程序设计(验证性实验 2学时)实验时间: 2012, 10,16 实验地点: 公共机房 3 实验成绩: (一)、实验目的1熟悉win-tc程序运行环境2掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法3掌握C语言中使用最多的一种语句赋值语句4掌握数据的输入输出方法,能正确使用各种格式控制符(二)、实验内容1写出下列程序的运行结果(1)#include void main()printf(“*n”);printf(“This is a c program. n”);printf(“*n”);运行结果为: * This is a c program. * 分析: printf函数表示输入字符,n表示换行 将程序中的n去掉后,运行结果及分析: 运行结果为:* This is a c program. * 分析: 无 “n”不能自动换行 (2)#include void main() int a=100,b=20,sum,sb;sum=a+b;sb=a/b; printf(sum=%d,sb=%d,sum,sb); 运行结果为: sum=120 sb=5 分析: sum=100+20=120,sb=100/20=5 输出时一一对应 (3)#include void main( ) char c1,c2; c1=97;c2=98;printf(%c ,%cn,c1,c2);printf(%d,%dn,c1,c2);printf(%c %cn,c1+1,c2+2);运行结果为: a,b 97,98 b,d 分析: 定义字符c1,c2。第一行以字符型输出(a,b),换行, 第二行将字符型以十进制输出得(97,98),换行,第三行以字符型输出 (c1+1,c2+2)得(b,d) (4)#include void main () int i=8,j=10,m,n;m=+i;n=j+; printf(%d,%d,%d,%d,i,j,m,n);运行结果为: 9, 11, 9 10 分析: “+” 在前先i自身加再赋值给m,”+”在后面j先赋值给n再自身加 再将本程序的第3行改为m=i+;n=+j;运行结果及分析: 运行结果为: 8,11,8,11 分析: 2程序填空任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用b5,b4,b3,b2,b1表示),请将程序补充完整。#include main() int b1,b2,b3,b4,b5; printf(“b1,b2,b3,b4,b5:” x;Scanf( “ %ld ”,&x);b5= (x/10000)%10 ;b4=(x/1000)%10;b3= (x/100)%10 ;b2=(x/10)%10;b1= x%10 ; printf(“the number is %d n”,x); printf(“its bit is:%d,%d,%d,%d,%dn”,b5,b4,b3,b2,b1); 程序分析: long int x/10000 (x/100)%10 x%10 %1d 3程序改错(注意:题中的编号为行序号,并非程序本身)计算任意一个半径为r的圆的面积和周长(结果保留两位小数)(1)#include (2)main()(3)float r; p=3.14,c,area;(4) printf(“input r:”);(5) scanf(“%f ”, r);(6) c=2p*r;(7) area=p*r*r(8) printf(“c=%-7.2f,area=%-7.2f”,c,area);(9)错误语句的行号: (3) 改正后的语句全行:float r,p=3.14,c,area; 错误语句的行号: (5) 改正后的语句全行: scanf(“%f”,r) 错误语句的行号: 6 改正后的语句全行: c=2*p*r 错误语句的行号: (7) 改正后的语句全行: area=p*r*r 教师评语:实验二 逻辑运算和判断选取控制实验时间: 2012 10,25 实验地点:公共机房3 实验成绩: (验证性实验 2学时)(一)、实验目的1了解逻辑量在C语言中的表示方法2学会使用逻辑运算符和逻辑表达式3熟练掌握if语句和switch语句(二)、实验内容1写出下列程序的运行结果(1)#include void main( ) int a,b,x=10,y=9;a=(-x = y+)? -x : +y;b= y;printf(“%d,%dn”,a,b);运行结果为: 8,11 分析: -x先自减x=9=y,所以计算结果为1,故取值x=8,y只进行了一次自增,所以y=9. (2)#include void main()int a=2,b=-1,c=2;If(ab)if(b0)c=0;else c+=1;printf(“%dn”,c);运行结果为: 3 分析: (3)#include void main( )int a=0,b=0,c=0;if(+a 0 | +b 0) +c;printf(“na=%d,b=%d,c=%d”,a,b,c);运行结果为: a=1,b=0,c=1 分析: 先判断+a0,故+b不再运算,条件成立,计算+c,故a=1,b=0,c=1. (4)#include void main() int x=-1;switch (x)default: printf(“a”); case 1: printf(“b”); case 2: printf(“c”);运行结果为: abc 分析:由于x=-1,所以运行default后面的句子,由于没有break语句,所以继续运行,所以三个语句都运行了。 在case 1:printf(“b”);后加上break;语句,结果如何?修改程序并上机调试。运行结果为: ab 分析: 2程序填空输入两个整数,从用户处获取这两个整数,显示其中较大的数,在其后跟随“is larger”。如果这两个数相等,显示“These numbers are equal.”。请在_内填入正确内容。#include void main( )int a,b;printf(“please input two numbers, a, b! “);scanf(“%d%d”,&a,&b);if( ab ) printf(“%d is larger”, a );else if(_) printf(“These numbers are equal”);else _ _; 填空: ab 填空: a=b 填空: printf(“%d is larger”,b) 结果分析: 显示较大数字 3编写程序(1)编写一个程序,读入5个整数,然后确定并显示这组数中的最大整数和最小整数。 程序清单:#include viod main()Int a,b,c,d,e,max1,min1;Scanf(“%d%d%d%d%d”&a, &b, &c, &d, &e);max1=max(a,b,c);max1=max(max1,d,e);min1=min(a,b,c);min1=min(min1,d,e);printf(“max=%d min=%d”,max1,min1);getch();程序编写注意事项:(2)编写程序,读取一个整数,判断并显示出这个整数是奇数还是偶数。(提示:使用求模运算符。偶数是2的倍数。任何2的倍数除以2时,余数均为零。)程序清单:#include Viod main()long int a;Printf(“Enter a num:n”);Scanf(“%1d”,&n);If(a%2=0)Printf(“An”);elseprintf(“Bn”);getch(); 程序编写注意事项:(3)编写一个程序,从键盘中输入3个不同的整数,然后显示这3个整数的和、平均数、积、最小数和最大数。(用if语句)屏幕中的对话内容如下所示:Input three different integers: 13 27 14Sum is 54Average is 18Product is 4914Smallest is 13Largest is 27程序清单:#include viod main()int a,b,c,max1,min1;long int sum,product;float average;printf(“Enter three different integer:”);scanf(“%d%d%d”,&a,&b,&c);sum=a+b+c;average=sum/3;product=a*b*c;max1=max(a,b,c);min1=min(a,b,c);printf(“sum is %1dn average is %fn product is %1dn smallest is %dn largest is %dn”,sum,average,pro,minl,max1);getch();程序编写注意事项:教师评语:实验三 循环结构程序设计(一)实验时间: 2012, 11,01 实验地点: 公共机房 3 实验成绩: (验证性实验 2学时)(一)、实验目的1熟悉用while语句、do-wile语句和for语句实现循环的方法2掌握在程序设计中用循环方法实现的算法(二)、实验内容1写出下列程序的运行结果(1)#include void main()int count=1;while(count=10)count+;printf(“%sn”,count%2? “*”: “+”);运行结果为:+*+*+*+*+* 分析:count%2?整除 奇数时显示+,偶数时显示* (2)#include void main() int row=10,Column; while(row=1) Column=1;while(Column =10)printf(“%s”,row%2 ? “”); Column+; row-; printf(“n”);运行结果为: 偶数时显示, Column =10 循环十次 (3)#include void main() int y=9;for( ; y0 ; y-) if(y%3=0) printf(%dn , -y);运行结果为:852 分析: y能被三整除时,显示-y 2编写程序(1)利用循环语句来显示如下所示的数值表:程序清单如下:#include viod main()int n,n1,n2,n3;frintf(“NttN*10ttN*100ttN*1000n”);for (n=1;n11;n+)printf(“%-16d%-16d%-16d%-16d%n”,n,n*10,n*100,n*1000);getch();程序编写注意事项:(2)编写一程序,能够输入一组10个数字,判断并显示出这些数字中的最大数。提示:程序中应该使用如下的3个变量: Counter:能够记数到10的记数器。 Number:当前输入到程序中的数字。 Largest:迄今为止所发现的最大数字。程序清单:#include viod main()long int num,l=0;int i;for(i=1;il) l=num;,largest); Printf(“the largest num is %1d”getch(); 程序编写注意事项:(3)请开发一个程序来输入每油箱的行程里程和所用的汽油。能够计算并显示出对于每个油箱每加仑汽油的行驶里程。处理输入信息后,计算并显示所有油箱每加仑汽油的行驶里程。以下是一个事例的输入/输出:程序清单:#include viod main()float gallons=0,miles,average100,sum=0,average;int i=0;while(gallons!=-1)printf(“Enter the gallons used:”);scanf(“%f”,&gallons);if(gallons=-1)break;printf(“Enter the miles driver:”);scanf(“%f”,&miles);averrgei=miles/gallons;Sum+=averagei;printf(“The MilesGallon for this tank was %fnn”,averagei);i+;average=sum/i;printf(“the overall average miles/gallon was %f”,aveerrage);getch();程序编写注意事项:(4)编写一个程序读入一个5位数,并判断该整数是否是回文。(回文指顺读和倒读都一样的数字和文字语句,例:12321,55555。)提示:使用除法运算符和求模运算符把该数分解成单位个数。程序清单:#include viod main()long int a,b,a1,a2,a3,a4,a5;printf(“Enter a num:”);scanf(“%1d”,&a);a5=a/10000;a4=(a/1000)%10;a3=(a/100)%10;a2=(a/10)%10;a1=a%10;b=a1*10000+a2*1000+a3*100+a4*10+a5;if(a=b)printf(“n%1d is A”,a);elseprintf(“n%1d is notA”,a);getch();程序编写注意事项:教师评语:实验四 循环结构程序设计(二)实验时间: 2012, 11.18 实验地点: 公共机房 3 实验成绩: (验证性实验 2学时)(一)、实验目的1熟练掌握循环语句。2较灵活地运用三种不同循环语句实现循环程序设计。3熟练掌握break语句、continue语句及循环的嵌套使用。(二)、实验内容1 写出下列程序的运行结果(1)#include void main() int i,j,k,x=0;for(i=0;i2;i+) x+;for(j=0;j3;j+) if(j%2) continue; x+;x+;k=i+j;printf(k=%d,x=%dn , k , x);运行结果为: K=5,x=8 分析: 循环结束时i=2,j=3,故k=i+j; (2)#include void main() int x,y;for(y=1,x=1;y=10) break;if(x%2=1) x+=5; continue;x-=3; printf(“x=%d,y=%dn”,x,y); 运行结果为: X=10,y=6 分析:X的变化过程为:6,3,8,5,10,循环执行了五次,故y=6 (3)#include void main() inti, j , sum; for(i=1;i6;i+) sum=0;for(j=1;j=4;j+)sum+=j; printf(“sum=%dn”, sum); 运行结果为: Sum=10 分析:在j的循环后,sum=10,由于每次i的循环时都使sum=0,故循环6次后的10 (4) #include void main ( ) int k = 0 , m = 0 , i , j; for( i = 0 ; i 2 ; i+) for ( j = 0 ; j 3 ; j+) k+; k -= j; m = i + j; printf(k=%d,m=%dn,k,m);运行结果为: K=0,m=5 分析:j的循环中,K的变化值为1,1,2,1,2,0.循环两次结果不变,循环结束,i=2,j =3,故m=5. 2 程序填空(1)下面程序的功能是:输出100以内同时能被3和7整除的所有整数,请填空。#include void main() int i, j; for ( i=1;_; i+ ) if (_) continue;printf ( %dt,i );填空: i=100 填空: (i%3=0)&(i%7=0) 程序分析:这个数要同时被3和7整除,并且continue语句要执行 ,同时满足 (2)判断m是否素数#include void main() int m,i,k; scanf(“%d”,&m); for(i=2;i=m)printf(“%d是一个素数n”,m); else printf(“%d不是一个素数n”,m);运行结果为: 分析: 3 编写程序(1)编写一个程序,能够找出几个整数中最小的整数。假定程序读取的第一个值是余下数值的数目。程序清单:#include viod main()long int a100,min;int i,n;printf(“Enter a num:”);scanf(“%d”,&n);for(i=0;i=n-1;i+)scanf(“%1d”,&ni);if(aimin)min=ai;printf(“The smallest number is %d”,min);getch();程序编写注意事项:(2)编写一个程序显示出如下菱形图案。可以使用printf语句来显示一个(*)和一个空格,尽量多使用循环语句(嵌套的for语句),尽量少用printf语句。程序清单:#include stdio.h#include conio.hmain() int i,j,k;for(i=1;i=5;i+)for(j=1;j=5-i;j+)printf( );for(k=1;k=2*i-1;k+)printf(*);printf(n); for(i=1;i=4;i+) for(j=1;j=i;j+) printf( ); for(k=1;k=9-2*i;k+) printf(*); printf(n); getch();程序编写注意事项:(3)输入从19941999这个范围内的年份,并使用for循环语句来生成一个简洁的日历。注意闰年的情形。程序清单:#include viod main()程序编写注意事项:教师评语:实验五 函数实验时间: 实验地点: 实验成绩: (验证性实验、综合性实验 2学时)(一)、实验目的1掌握定义函数的方法2学会利用函数的相关概念解决问题3学会使用函数的方法设计程序(二)、实验内容1写出下列程序的运行结果(1)#include “stdio.h”f(int x, int y);void main() int a=1,b=2;f(a,b);printf(“%d,%dn”,a,b);f(int x,int y)x=x+1;y=y+1;运行结果为: 分析: (2) #include fun(int a);void main() int a=3; fun(a); printf(%dn,a);fun(int a) a=a+3; printf(%d,a);运行结果为: 分析: (3)#include int fun(int x) static int a=3; a=a+x; return a; void main() int k=2,m=1,n; n=fun(k); n=fun(m); printf(“%dn”,n); 运行结果为: 分析: (4) #include float fac(int n) float f; if(n0)printf(“error!”); else if(n=0|n=1) f=1; else f=fac(n-1)*n; return(f); void main() int n=4; float y; y=fac(n); printf(“%d!=%fn”,n,y); 运行结果为: 分析: 2. 程序填空(1) 通过调用函数求a+b的和。 #include float add(float x,float y);void main() float add(float x,float y); float a,b,c; scanf(“%f,%f”,&a,&b); c=_; printf(“%f”,c);float add(float x,float y) float z; z=x+y; return z;填空并运行分析: (2)从键盘输入任意一个数,用函数计算它的阶乘#include long int f(int a)long int i,t=1; for(i=1;i=a;i+) t=t*i;return ;void main() long int x;scanf(“%ld”,&x);printf(“%ld”,f(x);填空并运行分析: 3编写程序(1) 编写函数floor,把值四舍五入为最近的整数。语句:y = floor + ( x + .5) ;将把x 四舍五入为最近的整数,并存如 y 。要求读取几个整数,并使用前面的语句把每个数字四舍五入为最近的整数。对于程序中处理的每个整数,显示出原始数字和四舍五入后的数字。程序清单:程序编写注意事项:(2) 实现下列每个整型函数。a)函数 Celsius 返回与华氏温度等价的摄氏温度。 b)函数 Fahrenheit 返回与摄氏温度等价的华氏温度。 c)使用这两个函数编写程序,使其显示一些图表,图表中显示从0度 100度之间的所有摄氏温度的华氏温度等价值,以及从32度 212 度之间的所有华氏温度的摄氏温度等价值。按照见解的表格形式来显示输出结果,在保留可读性的同时使输出的行数最小。程序清单:程序编写注意事项:教师评语:实验六 数组(一)实验时间: 实验地点: 实验成绩: (验证性实验 2学时)(一)、实验目的1掌握一维数组的定义,赋值和输入输出的方法。2掌握二维数组有关的定义,赋值和输入输出的方法。3掌握与数组有关的非数值计算方法。(二)、实验内容1.写出下列程序的运行结果。(1) #include void main()int a3=1,2;int i,j;for(i=0;i3;i+)for(j=0;j3;j+)ai=aj+1;printf(n%d,ai);运行结果: 分析:初始化:a0= ,a1= ,a2= ;第一次i循环:i= ,a0= ;a0= ;a0= ;第二次i循环:i= ,a1= ;a1= ;a1= ;第三次i循环:i= ,a2= ;a2= ;a2= .(2)#include #define N 20fun(int a,int n,int m)int i,j;for(i=m;i=n;i-)ai+1=ai;void main()int i,aN=1,2,3,4,5,6,7,8,9,10;fun(a,2,9);for(i=0;i5;i+)printf(%d,,ai);运行结果: 分析:在进入函数之前:a0= ,a1= ,a2= ,a3= ,a4= ;进入函数后:a4= ,a3= ,a3= ,a2= ,其余不变。(3)#include void swap1(int c)int t;t=c0;c0=c1;c1=t;void swap2(int c0,int c1)int t;t=c0;c0=c1;c1=t;void main( ) int a2=3,5,b2=3,5;swap1(a) ;swap2(b0,b1);printf(%5d %5d %5d %5d ,a0,a1,b0,b1);运行结果为: 分析:两个函数的作用, 。2.程序填空(1)将Fibonacci数列前15项放入一个一维数组中(fib0=1,fib1=1),并计算其中奇数之和。#include void main() int fib15,i,s=0;fib0=1;fib1=1;for(i=2;i15;i+) ;for(i=0;i15;i+)if( )s=s+fibi;printf(%dn,s);填空: 填空: 程序分析: (2)给出以下形式数据,计算各行之和,并存入一个一维数组中。#include void main()int a33=1,2,4,6,1,5,8,0,0,b3=0;int i,j;for(i=0;i3;i+)for(j=0;j3;j+) ;for(i=0;i3;i+)printf(%6d, );填空: 填空: 程序分析: 3. 编写程序(1)已知数组a10=3,7,6,5,4,1,2,9,9,7,计算数组下标为奇数的元素之和。程序清单:程序编写注意事项: (2)使用数组解决下列问题。公司在对销售人员支付佣金。销售人员每个星期收到$200,以及那个星期他们总销售额的9%。例如,在某个星期中销售额为$3000的销售人员收到$200以及$3000的9%,也就是$470。编写一个程序(使用计数器数组),确定销售人员在下列范围内可以赚取的收入(假定每个销售人员的工资将截断为整数):a) $200 -$299b) $300 -$399c) $400 -$499d) $500 -$599e) $600 -$699f) $700 -$799g) $800 -$899h) $900 -$999i) $1000 以及$1000以上程序清单:程序编写注意事项: (3)使用二维数组来解决下列问题。公司与4个销售人员(1 4),他们销售5种不同的产品 (1 5)。每天,每个销售人员为销售的每种不同产品上交报告。每份报告包括:a) 销售人员编号。b) 产品编号。c) 当天每种产品的总销售额。因此,每个销售人员每天上交05份销售报告。假设已经知道上个月所有报告的信息。编写一个程
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!