C语言程序设计实验报告.doc_第1页
C语言程序设计实验报告.doc_第2页
C语言程序设计实验报告.doc_第3页
C语言程序设计实验报告.doc_第4页
C语言程序设计实验报告.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

阿坝师专计科系C语言程序设计实验报告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);运行结果: 分析:在进入函数之

温馨提示

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

评论

0/150

提交评论