实验报告(答案)_第1页
实验报告(答案)_第2页
实验报告(答案)_第3页
实验报告(答案)_第4页
实验报告(答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计实验报告学 期: 教师姓名: 教研室: 实验1 熟悉C语言程序的运行环境,掌握数据描述班 级学 号实 验 室专 业姓 名成绩评定所用软件计算机号教师签名1.1 实验目的1了解在开发环境中如何编辑、编译、连接和运行一个C语言程序。2通过运行简单的C语言程序,初步了解C语言程序的结构特点。3掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。1.2 实验预习1熟悉Visual C+的启动和退出及Visual C+中的编辑、编译、连接和运行命令。2了解下列命令及函数:include、main、printf、scanf。3熟悉Visual C+环境下每个菜单项的功能及相关命令对应

2、的操作。4各种数据类型变量的定义形式及取值范围;熟悉下列标识符的含义。int、short (int)、long (int)、unsigned (int)、float、double、char、void5各类运算符的优先级和结合规则。6常量与变量的区别和联系。运行环境:1双击桌面Visual C+快捷方式进入Visual C+,或通过执行“开始程序Microsoft Visual Studio 6.0 Microsoft Visual C+6.0”或执行文件C:Program FilesMicrosoft Visual StudioCOMMONMSDev98BinMSDEV.EXE。2单击“文件”

3、菜单的“新建”命令。3在打开的“新建”对话框中选择“文件”标签。4选择C+ Source File,在目录输入栏选择文件保存位置,然后在文件输入栏中输入文件名,扩展名为.c (例如first.c) ,单击确定按钮。如图所示:5在源窗口中输入源程序,如图所示。6编译程序:按“Ctrl+F7”或通过“编译”菜单中的“编译”命令,或使用工具栏中的相应工具进行编译编译连接运行若程序有错则找到出错行修改程序。7连接:若程序没有语法错误,则可按功能键或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。8运行程序:按组合键“Ctrl+F5”,或通过“编译”

4、菜单中的执行命令,或通过工具栏中的“!”工具运行程序。1.3 实验任务1输入下面的程序,注意区分大小写。#include main()printf(“I am a student!”);2. 预测结果并上机验证人工分析结果实验运行结果#include main()printf(“*n”);printf(“I am a student!n”);printf(“*n”);*I am a student!*3预测结果并上机验证人工分析结果实验运行结果#include#includemain()int a,b,sum; scanf(“%d,%d”,&a,&b); sum=a+abs(b); print

5、f(“a add b is %d”,sum);若输入为2,8 则输出为:a and b is 104预测结果并上机验证(1) main() int a,b; a=b=3; printf(“a=%d,b=%d”,a,b);(2)若将以上程序进行改写,编辑如下:main() int a,b; a=3; b=3.1; printf(“a=%d,b=%d”,a,b);题号人工分析结果实验运行结果(1)a=3,b=3(2)a=3,b=3由此知,若赋值号左右数据类型不一致时,c语言将按赋值号左边变量类型为准。 5现有程序如下,分析填空:人工分析结果实验运行结果1 main() 2 3 int a=1,b=

6、2; 4 printf(“%d”,(a=a+b,b=b+a); 5 5若将以上程序第4行进行改写,编辑如下: printf(“%d”,a=a+b,b=b+a);人工分析结果实验运行结果4对比以上两程序,结果不同的原因在于输出列表原程序为逗号表达式,所以输出b=b+a的值,而修改后的仅有一个格式控制符,只能对应输出第一个表达式a=a+b。 6若有以下程序段,分析c2的值: int c1=2,c2; c2=1.0/c1*c1;人工分析结果实验运行结果1 若将程序段改为:c2=1/c1*c1;人工分析结果实验运行结果0分析c2所得结果,其中的关键在于除号两端如果都是整型数据,则所得结果截断取整 7现

7、有程序如下:main() int a=7, b=10; a=a+b; b=a-b; a=a-b; printf(“%d,%dn”, a, b ); 程序运行的功能是:交换a、b两数的值 注:可修改a、b两数的值仔细观察。8. 现有程序如下,分析填空:人工分析结果实验运行结果main() int a=0; a+=(a=8); printf(%dn,a);169. 现有程序如下,分析填空:人工分析结果实验运行结果main() int a=2,b=5; int m=3,n; double c=2.1,d=4.5; n=a/m+b*c-d/m; printf(“%d”,n);910.现有程序如下,分析

8、填空:人工分析结果实验运行结果Main() int x=1,y=2; printf(“%d %dn”,+x,y+);2 211.现有程序如下,分析填空:人工分析结果实验运行结果main() int x,y,z=0;x=y=1;z+=x+=y;x=z+;y=+x;z=x+y; printf(“x=%d,y=%d,z=%d”,x,y,z);x=4,y=3,z=612.思考题:改错题(以下程序有多处错误,上机调试。将正确的程序记录在下方。要求不能删减已有内容。)源程序正确的程序应改为:#include #define STA 30main()int a,b=3; A=3*PI*SIN(b); STA

9、=3*STA; printf(“%dn”,2a); printf(“%d”,b);#include #define STA 30#define PI 3.14main()int a,b=3; a=3*PI*sin(b); b=3*STA; printf(“%dn”,2*a); printf(“%d”,b);实验2 顺序结构程序设计与调试班 级学 号实 验 室专 业姓 名成绩评定所用软件计算机号教师签名2.1 实验目的1熟悉C语言的表达式语句、空语句和复合语句。2熟悉函数调用语句,尤其是各输入输出函数的调用语句。3熟悉顺序结构程序中语句的执行过程。4熟悉程序的跟踪调试和变量值的监视。5能设计简单

10、的顺序结构程序。2.2 实验预习1熟悉下列函数:putchar、getchar、printf、scanf2了解顺序结构程序的执行过程。3了解程序的跟踪调试和变量值的监视并能够熟练操作。单步跟踪调试(逐条语句跟踪调试):(1)可按功能键F7进行,要监视某变量的值时,就按CtrlF7键,然后输入相应的变量名,就可以在监视消息窗口中查看到该变量的值。(2)也可逐段运行程序,即每次运行若干条语句。首先利用CtrlF8键在各行光标处设置若干断点,然后按CtrlF9键从程序的第一条语句运行到设置的第一个断点,再按CtrlF9键从设置的第一个断点运行到设置的第二个断点。4了解顺序结构程序的一般构成。2.3

11、实验任务1若有程序main() int i,j; scanf(i=%d,j=%d,&i,&j); printf(i=%d,j=%dn ,i,j); 要求给i赋5,给j赋10,则应该从键盘输入 i=5,j=10 2华氏温度,要求输出摄氏温度,公式为:C=。要求输出结果保留到小数点后两位。已知程序段中有三处错误,由注释语句/*found*/提示下一条语句有错误,请修改程序中的错误并记录程序运行结果。错误原因是正确语句是#include main() float f,c; clrscr(); /*found(1)*/scanf(%d,f);/*found(2)*/c=5/9(f-32);/*foun

12、d(3)*/printf(f=%f,c=%fn,c,f);Scanf语句中是地址列表scanf(%d,&f);缺少运算符c=5/9*(f-32);输出表列用英文逗号分隔printf(t=%.2f,f=%.2fn,c,f);3. 已知程序功能是通过用户输入三角形三边,求取三角形面积。填空,将程序补充完整。求取公式为;S=(a+b+c)/2 area=sqrt(s*(s-a)*(s-b) *(s-c) 人工填空上机填空#include (1)/*需要添加头文件*/main() float a,b,c,s,area;clrscr();scanf(%f,%f,%f,&a,&b,&c); (2);are

13、a=sqrt(3);/*库函数sqrt的含义是开平方*/ printf(area=%fn,area);#include S=(a+b+c)/2(s*(s-a)*(s-b) *(s-c)4.单步跟踪下面程序的执行,每执行一条语句就查看各变量的值。运行时输入一个三位的整数。单步跟踪程序时填写下表,同时分析程序的功能。#include”stdio.h”void main()int n,x1,x2,x3,y;printf(“please input number n”);scanf(“%3d”,&n);x1=n/100;x2=n/10%10;x3=n%10;y=x3*100+x2*10+x1;prin

14、tf(“y=%3d”,y);nX1X2X3y程序的功能是: 将输入的3位整数逆序排列 5. # include void main( ) char ch; ch=getchar(); putchar(ch); 运行时如果从键盘输入数据98,你预测的输出结果是 实际的输出结果为 9 原因在于getchar()只能接收单个字符,数字也当字符处理6. # include void main( ) int a,b,c; scanf(“%d,%o”,&a,&b); c=a*b; printf(“%d,%on”,c,c);运行时如果输入数据:12,12你预测的结果是 ,实际的输出结果是 120,170 。

15、7. # include void main( ) int x,n1,n2,n3,y; scanf(%3d, &x); n1=x/100; n2=x/10%10; n3=x%10; y=n3*100+n2*10+n1; printf(“%dn”,y);上述程序在运行时如果从键盘输入数据8265,则x的值为_ 826 _;输出的结果为 628 , 在变量n1、n2、n3中,_n1_是x的百位数,_n2_是x的十位数,_n3_是x的个位数。8. #include void main( ) int a=123, b=-45; float x=2.54729; printf(“a=%d,%2d,%5d

16、,%-5d,%+5dn”, a,a,a,a,a); printf(“b=%d,%2d,%5d,%-5d,%+5dn”, b,b,b,b,b); printf(“x=%f,%9f,%9.2fn”, x,x,x); printf(“x=%-7.3f,%2.2f,%.0fn”, x,x,x);在下面写出程序的运行结果,每个空格用一个|_| 来表示a=123,123,|_|_| 123,123|_|_| ,|_| +123b=-45,-45,|_|_| -45,-45|_|_| ,|_|_|-45x=2. ,|_| 2. ,|_|_|_|_|_|2.55x=2.547|_|_|,2 .55,39. 编

17、辑程序,输入学生语、数、英三门课程成绩(考虑数据类型,整型和实型),并输出其总分和平均分。整型:main() int c,m,e,sum;float ave; scanf(%d,%d,%d,&c,&m,&e); sum=c+m+e; ave=sum/3.0; printf(“sum=%dn ave=%f”,sum,ave);实型:main() float c,m,e,sum,ave; scanf(%f,%f,%f,&c,&m,&e); sum=c+m+e; ave=sum/3; printf(“sum=%fn ave=%f”,sum,ave);实验3 选择结构程序设计与调试班 级学 号实 验

18、室专 业姓 名成绩评定所用软件计算机号教师签名3.1 实验目的1理解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。2学会正确使用逻辑运算符和逻辑表达式、关系运算符和关系表达式。3学会运用逻辑表达式或关系表达式等表达条件。4熟练掌握if语句和switch语句。5学习跟踪调试程序,针对具体程序组织输入测试数据,观察程序运行能否得到预期的输出结果。6熟悉选择结构程序段中语句的执行过程。3.2 实验预习1熟悉逻辑运算符和逻辑表达式、关系运算符和关系表达式。2熟悉下列语句:if、if-else、switch、break。3.3 实验任务1阅读程序,上机调试并记录程序结果。人工分析结果实验运

19、行结果#include main( ) int x=0; if(x=0) printf(x=%dn,x); else printf(x=%dn,x+1); x=0#include main( ) int x=0; clrscr(); if(x=0) printf(x=%dn,x); else printf(x=%dn,x+1); x=1以上两题告诉了你什么:1) c中的赋值号与等于运算符应区分。 2) 若判断表达式值为0,表示假,执行else分支 2阅读程序,上机调试并记录程序结果。人工分析结果实验运行结果实验告诉我们main()int a=4,b=3,c=5,t=0; if(ab)t=a;a

20、=b;b=t; if(abc); printf(%dn,d); 0关系运算符无论有多少,总是一个个运算得结果然后参与下一个运算的。4.若从键盘输入58,判断以下程序输出的结果。人工分析结果实验运行结果main() int a; scanf(%d,&a); if(a50) printf(%d,a); if(a40) printf(%d ,a); if(a30) printf(%d ,a); 5. 阅读程序,上机调试并记录程序结果。人工分析结果实验运行结果main() int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+;

21、 printf(“a=%d,b=%dn ”,a,b); a=2,b=16. 阅读程序,上机调试并记录程序结果。人工分析结果实验运行结果main() int a=13,b=21,m=0;switch(a%3) case 0:m+;break;case 1:m+;switch(b%2) default:m+;case 0:m+;break;printf(“m=%dn”,m);m=37. 阅读程序,上机调试并记录程序结果。人工分析结果实验运行结果实验告诉我们main() int i=1,j=1,k=2; if(j+|k+)&i+); printf(%d,%d,%dn,i,j,k);2,2,2逻辑运算

22、符不是所有的符合都可以参与运算的8. 阅读程序,并回答问题main( ) int a,b,max,min; scanf(%d%d,&a,&b); if(ab) max=a; else max=b; printf(max=%dn,max);问题:a、此程序的功能是 输出两数中的最大数 b、请用条件表达式语句(?:)修改程序使之完成相同的功能,其语句是 printf(“max=%dn”,ab?a:b); 9. 有一函数 x-1 (x1) y = 2(x-1) (1=x=10)编程求当分别输入x的值为0.3,3.9,11时,y的值。main() float x,y; scanf(%f,&x); if

23、 (x1) y=x-1; else if(x0) /*if分支用于判断x的大小,并根*/ printf(x100); /*据位数决定逆序的最终值*/ else if(b0) printf(10x100); e=e/10; else printf(xb) e=a;a=b;b=e; if(ac) e=a;a=c;c=e; if(bc) e=b;b=c;c=e; printf(%d,%d,%d,a,b,c);3.4思考请思考如何通过改变分支条件将多if嵌套变成无套形式,提高计算机的运算效率。请上网搜索答案,体会程序优化的思路方式。无具体答案。实验4 循环结构程序设计班 级学 号实 验 室专 业姓 名

24、成绩评定所用软件计算机号教师签名4.1 实验目的1掌握用while语句、do-while语句和for语句实现循环的方法。2理解循环结构程序段中语句的执行过程,进一步练习程序的跟踪调试技术。3. 掌握在程序设计中用循环的方法实现各种算法(如穷举法、迭代等)。4. 理解break语句和continue语句的功能和执行过程。4.2 实验预习1熟悉语句:while、do-while、for 、break、continue。2熟悉三种循环语句之间的关系和区别。4.3 实验任务 (一)while循环1若输入的值是5,预测结果并上机验证人工分析结果实验运行结果main() int i,n; scanf(%d

25、,&n); i =1;while(i=n) i+; printf(i=%.dn,i);i=6 2若输入的值是5,预测结果并上机验证,循环执行次数是_5_,考虑若x定义为整型,程序结果是否相同_不同_ ,为什么_因为要考虑到c中除法的规则 人工分析结果实验运行结果main() int i,n; double x,s=0; scanf(%d,&n); i=1;x=1;while(i=n) i+;x=x+1; s+=1/x; printf(s=%.2fn,s);s=1.453. 阅读程序,完成下表,程序实现:1+2+100 main() int n,s;n=_1_; s=_2_; while(_3_

26、)s+=_4_;n+;printf(“1+2+%d=%dn”,100,_5_); 填空位置人工填空语句实验填空语句(1)1(2)0(3)n=100(4)n(5)s4. 预测结果并上机验证人工分析结果实验运行结果main() int k,num,sum;sum=num=0; k=3; while (k0 & +x=a&ch=A&ch=Z) upper+; printf(“大写字母个数=%d,小写字母个数=%d”,upper,lower); (三)for语句1. 预测结果并上机验证人工分析结果实验运行结果main() char a,b;for(a=0,b=4;ab;a+,b- -) printf(

27、“%c,%cn”,a,b); 0,41,32. 预测结果并上机验证人工分析结果实验运行结果main() int i=1,num=0;for(;i=5;i+) if (i%2=0) i+;num+; printf(“num=%d”,num); num=3(四)break和continue语句1. 预测结果并上机验证人工分析结果实验运行结果#include main() int x=14;while(x10&x50) x+;if(x/3)x+;break;else continue;printf(“%dn”,x); 172. 预测结果并上机验证人工分析结果实验运行结果#include main()

28、 int i=0,a=0; while(i10) _1_; x+; if(x%2) _2_;printf(“%d”,x); (五)循环嵌套 1. 预测结果并上机验证人工分析结果实验运行结果main() int i,j,m=0; for(i=2;i=10;i+=4)for(j=3;j=15;j+=4)m+;printf(“%dn”,m);122. 预测结果并上机验证人工分析结果实验运行结果main()int i,j;for(i=1;i4;i+) for(j=i;j4;j+)printf(“%d*%d=%d”,i,j,i*j);printf(“n”); 1*1=1 1*2=2 1*3=32*2=4

29、 2*3=63*3=9(六)常见题型1.两段程序均完成求和运算: s=1-1/3+1/5-1/7+.+1/99,阅读程序,完成填空main()int flag; float i,s; for(i=1,s=0,flag=1;i=99;i+=2) s=s+_1_; flag=-flag; printf(%f,s); main() float n,s; for(s=0,n=1;n=50;n+)s=s+_2_; printf(%f,s); 填空位置人工填空语句实验填空语句(1)1/i(2)pow(n+1)*1/(2*n-1)2.完成计算。数列表达式s=1+,当n=10时,求s的近似值。已知程序段中有两

30、处错误,由注释语句/*found*/提示下一条语句有错误,请修改程序中的错误并记录程序运行结果。#include main( )float s=0; int n;/*found*/ for(n=1,n=10,n+) /*found*/ s=s+1/n; printf(s=%fn,s);修改程序中的错误并记录程序运行结果。错误位置正确语句形式实验运行结果(1)for(n=1;n=10;n+)(2)s=s+1.0/n3. 求3150之间的所有素数。#include #include main()int s=0,i,n,flag; for(i=3;i=150;i+) flag=0; /*语句功能:(

31、1)*/ for(n=2;(2);(3)) /*表达式功能:判断某个数是否是素数,给出判断区间*/ if(i%n=0) flag=1; break; if(flag=0) s=s+i; printf(s=%dn,s);填空位置人工填空语句实验填空语句实验运行结果1设置标识量,判断被测试数是否为素数2n=sqrt(i)3n+4.以下程序的功能是输出100以内能被3整除且个位数为6的所有整数,请填空补充完整。main()int i,j; for(i=0;_;i+) j=i*10+6;if(_) continue;printf(“%d”,j);填空位置人工填空语句实验填空语句实验运行结果1i10或i

32、=92i%35. 编程实现九九乘法表。main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(“%d*%d=%d”,j,i,i*j); printf(“n”); 实验5 函数定义、调用与编译预处理班 级学 号实 验 室专 业姓 名成绩评定所用软件计算机号教师签名5.1 实验目的1掌握定义函数的方法。2掌握函数实参与形参的对应关系,以及“值传递”的方式。3了解函数的嵌套调用。4掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。5理解宏的概念,掌握宏定义。6了解文件包含的概念。5.2 实验预习1函数的概念、定义格式、声明格式、调用规则

33、及调用过程中数据传递方法过程,函数的嵌套调用和递归调用。2宏定义和文件包含等编译预处理指令。5.3 实验任务1. 预测结果并上机验证人工分析结果实验运行结果#include fun(int x, int y, int z) z=x*x+y*y; main() int a=31; fun(5,2,a); printf(“%d”,a); 312.预测结果并上机验证人工分析结果实验运行结果#include int a, b; void fun() a=100; b=200; main( ) int a=5, b=7; fun(); printf(“%d %d n”, a,b); 5 73.预测结果并

34、上机验证人工分析结果实验运行结果#include int f(int n) if(n=1) return 1;else return f(n-1)+1;main() int i,j=0;for(i=1;i3;i+) j+=f(i);printf(“%dn”,j); 34.预测结果并上机验证人工分析结果实验运行结果#include int ff(int n) static int f=l; f=f*n; return f; main() int i; for(i=1;i=5;i+ )printf(“%dn”,ff(i); 126241205.预测结果并上机验证人工分析结果实验运行结果#inclu

35、de #define N 10#define s(x) x*x#define f(x) (x*x)main() int i1,i2;i1=1000/s(N);i2=1000/f(N);printf(“%d %dn”,i1,i2); 1000 106.程序填空定义两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。#include int f1(int m,int n) /*填空位置(1),函数功能:_。*/int z; for(z=m;z=m*n;z+) if(z%m=0)&(z%n=0) return z; main()int m,n,t

36、,s,q; _; /*填空位置(2)*/ scanf(m=%d,n=%d,&m,&n); if(mn) t=m; m=n; n=t; s=f1(m,n); printf(min=%dn,s); q=f2(m,n); printf(max=%dn,q);_ f2(int m,int n) /*填空位置(3)*/int z; _; /*填空位置(4),求出m和n的最大公约数并将其作为返回值*/ 填空位置人工填空语句实验填空语句实验运行结果1求m,n的最小公倍数2int f1(int m,int n)3int 4return f1(m,n)/m7. 编程实现:编辑函数求水仙花数。要求通过main函数

37、控制数值范围(即求出某范围内的水仙花数)。 shui(int n,int m) int i,a,b,c; for(i=n;i=m;i+) a=i%10; b=i/10%10; c=i/100; if(i=a*a*a+b*b*b+c*c*c) printf(%d,i); 8. 编程实现:编辑函数求1!+2!+n!(由键盘输入范围)。#include long int f(int i)long int s,a;for(a=1,s=1;a=i;a+)s=s*a;return s;main()long int a,s,n;scanf(%d,&n);for(a=1,s=0;a=n;a+)s=s+f(a)

38、;printf(%d,s);实验6 数组定义与使用班 级学 号实 验 室专 业姓 名成绩评定所用软件计算机号教师签名6.1 实验目的1掌握一维数组和二维数组的定义、数组元素的引用形式和数组的输入输出方法。2了解与数组有关的非数值计算方法,如排序法。3了解与数组有关的数值计算方法,如矩阵运算、线性方程求解等。4掌握字符数组和字符串函数的使用。5掌握函数调用时,数组元素作为函数参数的传递。6.2 实验预习1熟悉循环语句与数组处理语句结合的方法。2复习一维数组、二维数组、字符数组的定义、初始化和数组元素的引用。3复习数组的应用:批量处理数据排序和矩阵的处理。4复习字符串的含义、存储和字符串函数的功能。6.3 实验任务1.预测结果并上机验证人工分析结果实验运行结果#include main()

温馨提示

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

评论

0/150

提交评论