C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
![C语言实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/10/f31207ae-75c1-411f-b690-90819426254a/f31207ae-75c1-411f-b690-90819426254a1.gif)
C语言实验报告
C语言本科实验报告
实验项目名称:
熟悉编辑环境
实验日期:
2015年9月9日评阅成绩:
实验目的及要求
1.熟悉计算机中的TurboC的DOS开发环境,掌握快捷键操作。
2.学会如何编辑、编译和运行一个完全的C语言程序,在用户屏幕上查看运行结果
3.初步掌握调试程序的方法和技巧。
实验内容
任务一
完成TC2.0的安装
1.获取TC2.0安装压缩包,并解压缩。
2.完成TC2.0的安装,将解压缩的目录直接复制到目的驱动器下例如:
D:
\TC20。
3.查看TC2.0目录,找到include,lib子目录。
4.运行TC2.0,修改option中include,lib子目录的路径。
设置输出中间文件(obj,exe)的路径。
5.运行例程hello.c验证IDE环境的设置。
(运行正确,找到输出的中间文件)。
任务二
在TC2.0下完成一个C程序的创建。
1.编辑
main()
{
printf(“helloCworld!
”);
}
2.保存
3.运行程序,观察输出结果。
4.使用changedir设置源程序自动保存路径,并验证。
任务三
改错题
1.题目要求
改正下列程序中的错误,在屏幕上显示短句“WelcometoYou!
”(源程序error01_1.cpp)
2.正确源程序
#include
intmain(void)
{
printf("Welcometoyou!
\n");
return0;
}
实验结果分析
1.任务一:
请分别记录在安装过程中的几个重要路径:
安装目录:
TC
中间文件输出目录:
C:
\TC
源文件自动保存目录:
C:
\TC
2.任务二:
记录以下操作热键
存盘:
F2
查看userscreen:
Alt+F5
编辑区与信息区切换:
F6
TC屏幕最大化切换:
Alt+Enter
块拷贝:
定义一个块Ctrl+KBCtrl+KK复制Ctrl+KC移动Ctrl+KV
3.请记录你在编译过程中出现的错误提示,分析错误的原因,并改正。
Undefinedsymbol’y’infunctionmain在开始加inty
Statementmissing;infunctionmain句末少加分号
Possibleuse‘x’beforedefinitioninfunctionmain在scanf语句中少加了&
Unabletoopenincludefile#include输写不正确
实验报告
(二)
实验项目名称:
简单C程序
实验日期:
2009年9月30日评阅成绩:
实验目的及要求
1.了解C程序的基本框架,能够编写简单C程序。
2.掌握算术表达式和赋值表达式的使用。
能够正确调用数学库函数。
3.掌握输入输出函数的使用。
4.掌握条件表达式的书写。
使用if语句计算分段函数。
5.使用for语句的使用。
6.理解程序调试的思想,能找出并改正C程序中语法错误,能掌握简单的单步调试逻辑错误的方法。
7.理解程序调试的思想,能掌握简单断点调试逻辑错误的方法。
实验内容
任务一
/*编程题*/
1.题目要求
编制要求:
(1)定义一个符号常量表示圆周率。
(2)在main函数中输入圆半径和圆柱高。
分别求圆周长、圆面积、圆球表面积,圆球体积、圆柱体积。
并输出计算结果。
/*源程序清单*/
#include
#definePI3.1415
intmain(void)
{
doubler,h,c,s1,s2,v1,v2;
printf("\nr=\n");
scanf("%lf",&r);
printf("h=\n");
scanf("%lf",&h);
c=2.0*PI*r;
s1=PI*r*r;
s2=4.0*PI*r*r;
v1=4.0*PI*r*r*r/3.0;
v2=PI*r*r*h;
printf("c=%f\ns1=%f\ns2=%f\nv1=%f\nv2=%f\n",c,s1,s2,v1,v2);
return0;
}
2.调试要求:
(1)单步执行程序
(2)添加watch监视变量,监视在子函数中的局部变量的实时数据。
任务二
/*编程题*/
1.题目要求
电费计算:
见习题2第2题
/*源程序清单*/
#include
intmain(void)
{
doublemoney,x;
printf("\nx=\n");
scanf("%lf",&x);
if(x<=50){
money=0.53*50;
}
else{
money=0.53*50+0.58*(x-50);
}
printf("%lf",money);
return0;
}
2.调试要求:
(1)单步执行程序添加watch监视变量
(2)监视在子函数中的局部变量的实时数据。
3.测试用例及运行结果
X=1526.500000
X=5026.500000
X=6032.300000
任务三
/*编程题*/
1.题目要求
查找最大值:
程序功能描述:
输入10个数,查找并打印出最大值。
提示:
在程序中应用用到以下三个变量:
(1)counter:
从1到10的计数器,用于记录已输入的数据个数。
(2)number:
当前输入的数据
(3)largest:
目前找到的最大值。
/*源程序清单*/
#include
intmain(void)
{
intcounter,largest,number;
printf("Enternumber:
");
scanf("%d",&largest);
for(counter=2;counter<=10;counter++)
{
printf("Enternumber:
");
scanf("%d",&number);
if(number>largest){
largest=number;
}
}
printf("largest=%d",largest);
return0;
}
2.调试要求:
(1)在循环体中设置断点
(2)添加watch监视变量,监视在子函数中的局部变量的实时数据。
实验结果分析
1.float型数据的有效数字有几位?
6位如何控制float型数据的输出位数%.af其中a为所要保留的位数
2.你如何考虑有分支语句的测试用例的设计?
3.思考题:
在你的所写任务三的程序执行时,输入下面第二行的10个整数数据,请问最大值是第几个。
第二个
1
2
3
4
5
6
7
8
9
10
29
67
12
42
67
51
34
67
63
23
如果要想使最大值为第8个数,应如何修改你的程序。
(请增加一个变量,记录最大值的序号)
#include
intmain()
{
intcounter,largest,number,index;
printf("number=");
scanf("%d",&largest);
index=1;
for(counter=2;counter<=10;counter++)
{
printf("number=");
scanf("%d",&number);
if(number>=largest)
largest=number;
index=counter;
}
printf("largest=%d,%d",largest,index);
return0;
}
实验报告(三)
实验项目名称:
函数结构
实验日期:
2009年10月14日评阅成绩:
实验目的
1.掌握库函数的使用。
2.了解函数的定义和调用。
3.了解C程序书写风格
实验内容
任务一
编写一个C程序,输入a,b,c3个值,输出其中最大者
1.题目要求
要求:
(1)编写调用子函数intmax(intx,inty),返回两个数中较大值,在main函数中调用max函数完成3个数的比较。
(2)程序运行有良好的用户提示,每次运行先清屏(clrscr())。
(3)运行结束后,按任意键返回(getch())。
(4)源程序的书写符合良好的编程风格
--必要的注释
--用空行区分各个功能区域
--用缩进体现层次
/*源程序清单*/
#include
intmax(intx,inty);
intmain()
{inta,b,c,m;
printf("\na=");
scanf("%d",&a);
printf("\nb=");
scanf("%d",&b);
printf("\nc=");
scanf("%d",&c);
m=max(a,b);
m=max(m,c);
printf("max=%d",m);
return0;
}
intmax(intx,inty)
{intm;
if(x>y)
m=x;
else
m=y;
returnm;
}_
2.测试用例及运行结果
a=5b=4c=6max=6
a=15b=20c=30max=30
a=50b=2c=32max=50
任务二
编写一个C程序,输入a,b,c3个值,输出其中最大者
1.题目要求
在任务一的基础上增加一个函数intgetMaxOfabc(intx,inty,intz),调用子函数intmax(intx,inty)完成3个数的比较。
在main函数中输入三个数,并调用getMaxOfabc函数求最大值输出。
/*源程序清单*/
#include
intmax(intx,inty);
intgetMaxOfabc(intx,inty,intz);
intmain()
{inta,b,c,m;
printf("\na=");
scanf("%d",&a);
printf("\nb=");
scanf("%d",&b);
printf("\nc=");
scanf("%d",&c);
m=getMaxOfabc(a,b,c);
printf("max=%d",m);
return0;
}
intgetMaxOfabc(intx,inty,intz)
{
intm;
m=max(x,y);
m=max(m,z);
returnm;
}
intmax(intx,inty)
{intm;
if(x>y)
m=x;
else
m=y;
returnm;
}_
任务三
/*编程题*/
1.题目要求
改写实验二的任务一
改编制要求:
(1)自定义求圆周长、圆面积、圆球表面积,圆球体积、圆柱体积的函数。
(2)在main函数中调用自定义函数分别求圆周长、圆面积、圆球表面积,圆球体积、圆柱体积
/*源程序清单*/
#include
#definePI3.1415
doublegets1(doubler);
doublegetPerimeter(doubler);
doublegets2(doubler);
doublegetv1(doubler);
doublegetv2(doubler,doubleh);
intmain()
{
doubler,h,perimeter,s1,s2,v1,v2;
printf("\nr=");
scanf("%lf",&r);
printf("\nh=");
scanf("%lf",&h);
perimeter=getPerimeter(r);
s1=gets1(r);
s2=gets2(r);
v1=getv1(r);
v2=getv2(r,h);
printf("\ns1=%f",s1);
printf("\ns2=%f",s2);
printf("\nv1=%f",v1);
printf("\nv2=%f",v2);
printf("\nperimeter=%f",perimeter);
return0;
}
doublegetPerimeter(doubler)
{
doubleperimeter;
perimeter=2.0*PI*r;
returnperimeter;
}
doublegets1(doubler)
{doubles1;
s1=PI*r*r;
returns1;
}
doublegets2(doubler)
{doubles2;
s2=4.0*PI*r*r;
returns2;
}
doublegetv1(doubler)
{doublev1;
v1=4.0*PI*r*r*r/3.0;
returnv1;
}
doublegetv2(doubler,doubleh)
{doublev2;
v2=PI*r*r*h;
returnv2;
}_
2.调试要求:
(1)单步执行程序
(2)添加watch监视变量,监视在子函数中的局部变量的实时数据。
实验结果分析
/*实验中遇到的问题和解决问题的方法*/
Undefinedsymbol’r’infunctionmain在开始加intr
Statementmissing;infunctionmain句末少加分号
Possibleuse‘r’beforedefinitioninfunctionmain在scanf语句中少加了&
实验报告(四)
实验项目名称:
控制结构
实验日期:
2009年月日评阅成绩:
实验目的及要求
1.熟练掌握嵌套的if语句和switch语句实现多分支结构
2.掌握switch中break的使用
3.掌握DOS菜单程序的编制
4.掌握while语句的句法
5.熟悉嵌套结构的构建
6.学习自顶向下,逐步细化的分析方法,学习模块化程序的构建
实验内容
任务一
1.题目要求
修改下面程序中的4个子函数中的代码 ,能按每一部分的要求得出相应的输出。
修改只限于增加圆括号,和代码的缩进方式。
当然代码的缩进方式对程序的执行没有影响,但可增加代码的可读性。
(也可能什么修改也不要做)。
#include
voidpaint_1(intx,inty);
voidpaint_2(intx,inty);
voidpaint_3(intx,inty);
voidpaint_4(intx,inty)
voidmain()
{
intx,y;
x=5,y=8;
paint_1(x,y);
paint_2(x,y);
paint_3(x,y);
y=7;
paint_4(x,y);
}
voidpaint_1(intx,inty)
{
printf("\nsection1:
\n");
if(y==8)
if(x==5)
printf("@@@@@\n");
else
printf("#####\n");
printf("$$$$$\n");
printf("&&&&&\n");
}
voidpaint_2(intx,inty)
{
printf("\nsection2:
\n");
if(y==8)
if(x==5)
printf("@@@@@\n");
else{
printf("#####\n");
printf("$$$$$\n");
printf("&&&&&\n");
}
}
voidpaint_3(intx,inty)
{
printf("\nsection3:
\n");
if(y==8)
if(x==5)
printf("@@@@@\n");
else{
printf("#####\n");
printf("$$$$$\n");
}
printf("&&&&&\n");
}
voidpaint_4(intx,inty)
{
printf("\nsection4:
\n");
if(y==8){
if(x==5)
printf("@@@@@\n");}
else
printf("#####\n");
printf("$$$$$\n");
printf("&&&&&\n");
}
Section1:
假定x=5,y=8,输出为:
Section2:
假定x=5,y=8,输出为:
Section3:
假定x=5,y=8,输出为:
Section4:
假定x=5,y=7,输出为:
任务二运行程序,了解程序功能
1.在cmd窗口运行程序ex4_1.exe,在菜单程序中分别输入1,2,3,4,5,6,观察程序的运行结果,输入0程序结束。
2.下图为ex4_1.cpp的程序模块图,打开ex6_1.cpp,文件给出了程序的框架结构,请根据程序的运行过程,确定每一个模块的功能。
任务三编写函数,完整程序
1.题目要求
Ex6_1.cpp中已给出了函数displayMenu和processChoice的代码。
请编写6个打印图案的程序,并在main函数中调用函数displayMenu和processChoice完成菜单程序,使程序的运行过程与所给的ex6_1.exe一致。
运行过程见下一组图
/*源程序清单*/
#include
#include
voidprocessChoice(intindex);
voiddisplayMenu();
voidprintStar_1();
voidprintStar_2();
voidprintStar_3();
voidprintStar_4();
voidprintStar_5();
voidprintStar_6();
voidmain()
{intchoice;
while
(1)
{
clrscr();
displayMenu();
scanf("%d",&choice);
if(!
choice)break;
else
processChoice(choice);
}
}
voiddisplayMenu()
{
clrscr();
printf("**************************\n");
printf("*1.patternone*\n");
printf("*2.patterntwo*\n");
printf("*3.patternthree*\n");
printf("*4.patternfour*\n");
printf("*5.patternfive*\n");
printf("*6.patternsix*\n");
printf("*0.exit*\n");
printf("**************************\n");
printf("pleasechoice(0,1,2,3,4,5,6):
");
}
voidprocessChoice(intindex)
{switch(index)
{case1:
printStar_1();break;
case2:
printStar_2();break;
case3:
printStar_3();break;
case4:
printStar_4();break;
case5:
printStar_5();break;
case6:
printStar_6();break;
}
}
voidprintStar_1()
{inti,j;
printf("patternone\n");
for(i=1;i<=10;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
getch();
}
voidprintStar_2()
{inti,j;
printf("patterntwo\n");
for(i=10;i>0;i--)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");}
getch();
}
voidprintStar_3()
{inti,j;
printf("patternthree\n");
for(i=1;i<=10;i++)
{for(j=1;j
printf("");
for(;j<=10;j++)
printf("*");
printf("\n");
}
getch();
}
voidprintStar_4()
{inti,j;
printf("patternfour\n");
for(i=10;i>0;i--)
{for(j=1;j
printf("");
for(;j<=10;j++)
printf("*");
printf("\n");
}
getch();
}
voidprintStar_5()
{inti,j;
printf("patternfive\n");
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
printf("*");
for(;j<=10;j++)
printf("");
printf("");
for(j=1;j<=10-i+1;j++)
printf("*");
for(;j<=10;j++)
printf("");
printf("");
for(j=1;j
printf("");
for(;j<=10;j++)
printf("*");
printf("");
for(j=1;j<=10-i;j++)
printf("");
for(;j<=10;j++)
printf("*");
printf("\n");
}
getch();
}
voidprintStar_6()
{inti,j;
printf("patternsix\n");
for(i=1;i<=5;i++)
{for(j=1;j<=5-i;j++)
printf("");
for(j=1;j<=2*i-1;j