C语言实验报告书1.docx
《C语言实验报告书1.docx》由会员分享,可在线阅读,更多相关《C语言实验报告书1.docx(69页珍藏版)》请在冰豆网上搜索。
C语言实验报告书1
实验指导书
课程名称C语言程序设计
课程性质考查课
系(部)
指导教师
实验一熟悉C程序运行环境
一、实验目的
1.熟悉C语言的系统环境,掌握在集成环境中编辑、编译、连接和运行C语言程序的方法;
2.掌握C语言源程序的结构特点与书写规范。
二、实验学时数
2学时
三、实验步骤
(一)VC++6.0集成环境
(1)运行VC++6.0
a.双击桌面上的VC++6.0快捷方式,运行VC++6.0。
b.双击"C:
\MicrosoftVisualStudio\Common\MSDev98\Bin\MSDEV.EXE",运行VC++6.0。
(2)认识VC++6.0
菜单栏
标准按钮
执行
执行
组建
工作空间
编译
输出
图1.1VC++6.0窗口组成
(3)建立工程
在磁盘上新建一个文件夹,用于存放C语言程序,如D:
\柳稻香。
单击[文件]-[新建]新建一个工程,工程类型选择Win32ConsoleApplication,然后选择要存放的位置(刚才建立的文件夹D:
\柳稻香),填写工程名称例如hello,如图1.2所示,点确定按钮,在弹出的对话框中选择一个”hello,World!
”程序,如图1.3所示,点击完成,然后在点击确定。
(4)查看工程包含的文件
单击左侧工作空间右下角的FileView,然后在工作空间上,点击+,可以看到SourceFiles和HeaderFiles及ResourceFiles,在SourceFiles上继续点击+,可以看到SourceFiles下有两个文件,一个是hello.cpp,一个是StdAfx.cpp。
其中hello.cpp为主函数所在的文件,在以后的编写程序中,都是写到此文件中。
图1.2新建工程
图1.3步骤1
(5)选中StdAfx.cpp,点击[组建]-[编译],对StdAfx.cpp进行预编译。
名称的英文全称为:
StandardApplicationFrameworkExtensions。
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。
这样可以加快编译速度,节省时间。
(6)选中以文件hello.cpp,点击[组建]-[编译](此时,你可以在D:
\柳稻香\hello\Debug下可以找到生成的hello.obj文件),然后在点击[组建]-[组建](此时,你可以在D:
\柳稻香\hello\Debug下可以找到生成的hello.exe文件),然后点击[组建]-[执行](执行的实际是D:
\柳稻香\hello\Debug\hello.exe),如果弹出一个Console程序窗口,上面写着HelloWorld!
Pressanykeytocontinue。
到目前为止一个简单的C程序工程创建成功。
(二)阅读程序
要求:
编辑下面源程序,并且读懂与分析运行程序,上机运行程序,并与分析结果相对比。
学会使用TC运行程序的基本方法。
1.输入并运行以下程序,观察运行结果。
#include
intmain()
{printf("*********************\n\n");
printf("verygood!
\n\n");
printf("*********************\n");
return0;
}
运行结果
思考:
如何采用一个输出(printf)函数调用实现此输出结果。
printf("*********************\nverygood!
\n*********************\n");
2.输入并运行以下程序,观察运行结果。
#include
intmain()
{inta,b,sum,minus;
a=123;b=456;
sum=a+b;minus=a-b;
printf("a+b=%d\na-b=%d\n",sum,minus);
return0;
}
运行结果
printf语句中删除a+b=和a-b=
输出结果:
printf语句中删除第一个\n
输出结果:
(三)完成程序
要求:
依据题目要求,分析已给出的语句,填写空白。
但是不要增行或删行,改动程序的结构。
1.求(a+b)×c的值。
(设a=3,b=2,c=1)
#include
intmain()
{inta,b,c;
a=3;
c=1;
b=2;
printf("%d\n",(a+b)*c);
return0;
}
2.求圆的面积。
#include
#definePI3.14//定义符号常量
intmain()
{floatr,area;
printf("\nEnterrvalue:
");
scanf("%f",&r);
area=PI*r*r;
printf("\narea=%f\n",area);
return0;
}
(四)调试程序
要求:
调试运行下列程序是否正确,若有错,写出错在何处,并进行改正,填写改正后的运行结果。
行号
源程序
1
2
3
4
5
6
7
#include
intmain()
{intx;
x=5,y=8;
printf("\n%d,%d,%d\n",x,(x+5)*2,y);
return0;
}
错
错误在3行
应改为:
{intx,y;
调试正确后的运行结果
输出结果:
(五)编写程序
1.编写程序输出用6颗星构成的等边三角形。
*
**
***
2.编写一个C程序,输入a,b,c三个值,输出其中最大者。
1.
#include
intmain()
{printf("*\n");
printf("**\n");
printf("***\n");
return0;
}
2.
#include
intmain()
{intmax(intx,inty,intz);
inta,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",d);
return0;
}
intmax(intx,inty,intz)
{
intt;
if(x>y)t=x;
elset=y;
if(treturn(z);
}
实验二数据类型、运算符和表达式应用
一、实验目的
1.掌握C语言中的基本数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法;
2.掌握不同的类型数据之间赋值的规律;
3.灵活运用算术运算符、赋值运算符、复合赋值运算符及其表达式;
4.了解数据运算中类型的自动转换与强制类型转换;
5.进一步熟悉C程序的结构特点,学习简单程序的编写方法。
二、实验学时数
2学时
三、实验步骤
(一)阅读程序
1.输入并运行以下程序,观察运行结果。
#include
intmain()
{charc1,c2;
c1=97;c2=98;
printf("%c,%c\n",c1,c2);
return0;
}
(1)在第五行后面加入以下printf语句,并运行。
printf("%d,%d\n",c1,c2);
运行结果
(2)在
(1)的基础上,将第三行改为以下语句,并运行。
intc1,c2;
运行结果
2.分析并运行此程序,当输入的数据为10时,下面程序的运行结果。
#include
intmain()
{floatx,y;
scanf("%f",&x);
printf("\n2.4*x-1/2=%f",2.4*x-1.0/2);
printf("\nx%%2/5-x=%f",(int)(x)%2/5-x);
printf("\n(x-=x*10,x/=10)=%f\n",(x-=x*10,x/=10));
return0;
}
运行结果
3.分析以下程序运行的结果
#include
intmain()
{inti,j,m,n;
i=8;j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
return0;
}
(1) 源程序运行结果为:
运行结果
(2) 将第6、7行改为:
m=i++;
n=++j;
运行结果
(3)程序改为:
#include
intmain()
{inti,j,m=0,n=0;
i=8;j=10;
m+=i++;
n-=--j;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
return0;
}
运行结果
(二)完成程序
要求:
依据题目要求,分析已给出的语句,填写空白。
但是不要增行或删行,改动程序的结构。
1.求任意输入字符的ASCⅡ码。
#include
intmain()
{chara;intb;//变量的定义
printf("请输入一个字符:
");
scanf("%c",&a);
b=(int)a;
printf("\n\n%c的ASCⅡ码为%d\n",a,b);
return0;
}
2.输出任意一个十进制数对应的八进制,十六进制数。
#include
intmain()
{inta;
scanf(“%d”,&a);
printf(“\n%d(10),%o(8),%x(16)\n”,a,a,a);
return0;
}
(三)调试程序
要求:
调试运行下列程序是否正确,若有错,写出错在何处?
填写正确的运行结果。
1.以下程序实现的功能是对u,v进行初始化,并输出u,v的值
行号
源程序
1
2
3
4
5
6
#include
intmain()
{intu=v=89;
printf("u=%d,v=%d\n",u,v);
return0;
}
错
错误在3行
应改为:
{intu=89,v=89;
调试正确后的运行结果
输出结果:
2.下面的程序试图计算由键盘输入的任意两个整数的平均值:
行号
源程序
1
2
3
4
5
6
7
8
#include
intmain()
{intx,y,a;
scanf("%x,%y",&x,&y);
a=(x+y)/2;
printf("Theaverageis%d:
\n",a);
return0;
}
错
错误在4行
应改为:
scanf(“%d,%d”,&x,&y);
调试正确后的运行结果
输入数据
2,6
1,4
-1,-3
-2,4
2,0
输出结果:
(四)编写程序
1.编写程序,求
的和。
2.编写程序,输入圆的半径(值为5),输出圆的周长和面积。
#include
intmain()
{floatsum;
sum=1.0/2+1.0/3+1.0/4;
printf("sum=%f\n",sum);
return0;
}
#include
#definePI3.14
intmain()
{floatr,c,s;
scanf(“%f”,&r);
c=2*PI*r;
s=PI*r*r;
printf("圆的周长为:
%f,面积为:
%f.\n",c,s);
return0;
}
实验三顺序结构程序设计
一、实验目的
1.掌握格式输入函数scanf()和格式输出函数printf()的使用方法;
2.熟练掌握顺序结构的程序设计,能够编写简单的应用程序。
二、实验学时数
2学时
三、实验步骤
(一)阅读程序
1.输入并运行以下程序,观察运行结果。
#include
intmain()
{inta=17;
floatu=1234.567;
printf("%d,%7d,%-7d\n",a,a,a);
printf("%f,%7.2f\n",u,u);
return0;
}
运行结果
2.输入并运行以下程序,观察运行结果。
#include
intmain()
{inta,x,y;
x=(a=2,6*2);
y=a=2.6*a;
printf("x=%d,y=%d\n",x,y);
return0;
}
运行结果
3.阅读以下程序,若输入的数据形式为251310,输出结果为:
#include
intmain()
{intx,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
return0;
}
运行结果
思考:
若使输入的数据形式为x=25,y=13,z=10,则scanf语句应如何书写?
scanf("x=%d,y=%d,z=%d",&x,&y,&z);
(二)完成程序
要求:
按照给定题目要求,参照己给的语句,填写程序空白处。
1.键盘输入任意一个小写字母,将其转换成大写字母,然后输出。
#include
intmain()
{charc1,c2;
c1=getchar();
c2=c1-32;
putchar('\n');//输出换行
putchar('\'');//输出单引号
putchar(c2);//输出字符c2
putchar('\'');//输出单引号
return0;
}
2.求c=
的值。
(设a=25,b=5)
#include
intmain()
{floata=25,b=5;
floatc;
c=(a+b)*4.0/(a*b);
printf("c=%f\n",c);
return0;
}
(三)调试程序
要求:
分析下列程序是否正确,如有错误,指出错误所在,并改正;若正确,写出运行结果。
1.以下程序实现的功能是计算k的值,并将其输出。
行号
源程序
1
2
3
4
5
6
7
8
#include
intmain()
{inti,k;
i=8;
k=5*I*I;
printf("%d\n",k);
return0;
}
错
错误在5行
应改为:
k=5*i*i;
调试正确后的运行结果
输出结果:
2.以下程序实现的功能是输入一个三位数,然后进行个位和百位的置换,如234,转换成432
行号
源程序
1
2
3
4
5
6
7
8
9
10
11
#include
intmain()
{intn,a,b,c,m;
scanf("%d",n);
a=n%10;
b=(n/10)%10;
c=(n/100)%10;
m=100*a+10*b+c;
printf("%d=>%d\n",n,m);
return0;
}
错
错误在4行
应改为:
scanf(“%d”,&n);
调试正确后的运行结果
输出结果:
(三)编写程序
1.编写程序,输入某学生三门课程的成绩,计算并输出其总分及平均分。
输出时结果保留小数点后一位。
2.编写程序,从键盘输入两个整数分别给变量a和b,分别写出不借助于其他变量和借助于其他变量的条件下,将变量a和b的值实现交换。
1.计算三门课程的总分与平均分
#include
intmain()
{floatx,y,z,sum,aver;scanf("%f,%f,%f",&x,&y,&z);
sum=x+y+z;
aver=sum/3;
printf("总分为:
%f,平均分为:
%f.",sum,aver);
return0;
}
2.不借助其他变量实现a,b交换
#include
intmain()
{intx,y;
scanf("%d,%d",&x,&y);
x=x+y;y=x-y;x=x-y;
printf("%d,%d\n",x,y);
return0;
}
2.借助其他变量实现a,b交换
#include
intmain()
{intx,y,t;
scanf("%d,%d",&x,&y);
t=x;x=y;y=t;
printf("%d,%d\n",x,y);
return0;
}
实验四if选择结构程序设计
一、实验目的
1.掌握关系运算符和逻辑运算符的使用;
2.学会正确书写关系表达式和逻辑表达式;
3.熟练掌握三种if语句和if嵌套。
二、实验学时数
2学时
三、实验步骤
(一)阅读程序
1.输入并运行以下程序,观察运行结果。
#include
intmain()
{inta=3,b=4,c=5,x1,x2,x3;
x1=!
a;
x2=a+b=c;
x3=a-b||c%2;
printf("x1=%d",x1);
printf("x2=%d",x2);
printf("x3=%d",x3);
return0;
}
运行结果
2.输入并运行以下程序,观察运行结果。
#include
intmain()
{inta,b,c;
a=10;b=60;c=30;
if(a>b)a=b;
b=c;
c=a;
printf("a=%d,b=%d,c=%d\n",a,b,c);
return0;
}
运行结果
3.输入并运行以下程序,观察运行结果。
#include
intmain()
{intx=60,a=30,b=20;
intv1=3,v2=8;
if(a
if(b!
=15)
if(!
v1)x=1;
else
if(v2)x=10;
x=-2;
printf("%d\n",x);
return0;
}
运行结果
(二)完成程序
要求:
按照给定题目要求,参照出现的语句,填写程序空白处。
1.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。
请在_______上填写正确内容。
#include
intmain()
{charch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')ch=ch+32;
elseif(ch>='a'&&ch<='z')ch=ch-32;
printf("%c\n",ch);
return0;
}
2.以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型,请在_______上填写正确内容。
#include
#include
intmain()
{floata,b,c;
floats,area;
scanf(“%f,%f,%f”,&a,&b,&c);
if((a+b>c)&&(a+c>b)&&(b+c>a))
{s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“三角形的面积为:
%f\n”,area);
if((a==b)&&(b==c))
printf(“等边三角形\n”);
elseif((a==b)||(b==c))
printf(“等腰三角形\n”);
elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a))
printf(“直角三角形\n”);
elseprintf(“一般三角形\n”);
}
elseprintf(“不能组成三角形\n”);
return0;
}
(三)调试程序
要求:
分析下列程序是否正确,如有错误,指出错误所在,并改正;若正确,写出运行结果。
1.以下程序实现求分段函数。
-1x>9
y=x*(x+2)32*x-1x-1x<=-1
行号
源程序
1
2
3
4
5
6
7
8
9
10
11
#include
intmain()
{intx,y;
scanf("%d",&x);
if(3elseif(-1elseif(x<=-1)y=x-1;
elsey=-1;
printf("%d\n",y);
return0;
}
错
错误在5,6行
应改为:
if((x>3)&&(x<=9))y=x*(x+2);
elseif((x>-1)&&(x<=3))y=2*x;
调试正确后的运行结果
输入数据:
4
2
1
-3
10
输出结果:
24
4
2
-4
-1
2.有一函数关系如下:
x-3x<0
y=0x=0
x+3x>0
以下程序