C语言实验报告答案.docx
《C语言实验报告答案.docx》由会员分享,可在线阅读,更多相关《C语言实验报告答案.docx(41页珍藏版)》请在冰豆网上搜索。
C语言实验报告答案
(此文档为word格式,下载后您可任意编辑修改!
)
《C程序设计》
实验报告
学期:
教师姓名:
教研室:
实验1熟悉C语言程序的运行环境,掌握数据描述
班级
学号
实验室
专业
姓名
成绩评定
所用软件
计算机号
教师签名
1.1实验目的
1.了解在开发环境中如何编辑、编译、连接和运行一个C语言程序。
2.通过运行简单的C语言程序,初步了解C语言程序的结构特点。
3.掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。
1.2实验预习
1.熟悉VisualC++的启动和退出及VisualC++中的编辑、编译、连接和运行命令。
2.了解下列命令及函数:
include3.熟悉VisualC++环境下每个菜单项的功能及相关命令对应的操作。
4.各种数据类型变量的定义形式及取值范围;熟悉下列标识符的含义。
int、short(int)、long(int)、unsigned(int)、float、double、char、void
5.各类运算符的优先级和结合规则。
6.常量与变量的区别和联系。
运行环境:
1.双击桌面VisualC++快捷方式进入VisualC++,或通过执行“开始——>程序——>
MicrosoftVisualStudio6.0——>MicrosoftVisualC++6.0”或执行文件"C:
\ProgramFiles\MicrosoftVisualStudio\COMMON\MSDev98\Bin\MSDEV.EXE"。
2.单击“文件”菜单的“新建”命令。
3.在打开的“新建”对话框中选择“文件”标签。
4.选择C++SourceFile,在目录输入栏选择文件保存位置,然后在文件输入栏中输入文件名,扩展名为.c(例如first.c),单击确定按钮。
如图所示:
5.在源窗口中输入源程序,如图所示。
6.编译程序:
按“Ctrl+F7”或通过“编译”菜单中的“编译”命令,或使用工具栏中的相应工具进行编译 编译 连接 运行
若程序有错则找到出错行修改程序。
7.连接:
若程序没有语法错误,则可按功能键F7或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。
8.运行程序:
按组合键“Ctrl+F5”,或通过“编译”菜单中的执行命令,或通过工具栏中的“!
”工具运行程序。
1.3实验任务
1.输入下面的程序,注意区分大小写。
#include{
printf(“Iamastudent!
”);
}
2.预测结果并上机验证
人工分析结果
实验运行结果
#include{
printf(“************\n”);
printf(“Iamastudent!
\n”);
printf(“************\n”);
}
************
Iamastudent!
************
3.预测结果并上机验证
人工分析结果
实验运行结果
#include{
inta,b,sum;
scanf(“%d,%d”,&a,&b);
sum=a+abs(b);
printf(“aaddbis%d”,sum);
}
若输入为2,8则输出为:
aandbis10
4.预测结果并上机验证
(1)main()
{
inta,b;
a=b=3;
printf(“a=%d,b=%d”,a,b);
}
(2)若将以上程序进行改写,编辑如下:
main()
{
inta,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.现有程序如下,分析填空:
人工分析结果
实验运行结果
1main()
2{
3inta=1,b=2;
4printf(“%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的值:
intc1=2,c2;
c2=1.0c1*c1;
人工分析结果
实验运行结果
1
若将程序段改为:
c2=1c1*c1;
人工分析结果
实验运行结果
0
分析c2所得结果,其中的关键在于除号两端如果都是整型数据,则所得结果截断取整
7.现有程序如下:
main()
{inta=7,b=10;
a=a+b;b=a-b;a=a-b;
printf(“%d,%d\n”,a,b);
}
程序运行的功能是:
交换a、b两数的值
注:
可修改a、b两数的值仔细观察。
8.现有程序如下,分析填空:
人工分析结果
实验运行结果
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);
}
16
9.现有程序如下,分析填空:
人工分析结果
实验运行结果
main()
{
inta=2,b=5;
intm=3,n;
doublec=2.1,d=4.5;
n=am+b*c-dm;
printf(“%d”,n);
}
9
10.现有程序如下,分析填空:
人工分析结果
实验运行结果
Main()
{intx=1,y=2;
printf(“%d%d\n”,++x,y++);
}
22
11.现有程序如下,分析填空:
人工分析结果
实验运行结果
main()
{intx,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=6
12.思考题:
改错题(以下程序有多处错误,上机调试。
将正确的程序记录在下方。
要求不能删减已有内容。
)
源程序
正确的程序应改为:
#include{inta,b=3;
A=3*PI*SIN(b);
STA=3*STA;
printf(“%d\n”,2a);
printf(“%d”,b);
}
#include{inta,b=3;
a=3*PI*sin(b);
b=3*STA;
printf(“%d\n”,2*a);
printf(“%d”,b);
}
实验2顺序结构程序设计与调试
班级
学号
实验室
专业
姓名
成绩评定
所用软件
计算机号
教师签名
2.1实验目的
1.熟悉C语言的表达式语句、空语句和复合语句。
2.熟悉函数调用语句,尤其是各输入输出函数的调用语句。
3.熟悉顺序结构程序中语句的执行过程。
4.熟悉程序的跟踪调试和变量值的监视。
5.能设计简单的顺序结构程序。
2.2实验预习
1.熟悉下列函数:
putchar、getchar、printf、scanf
2.了解顺序结构程序的执行过程。
3.了解程序的跟踪调试和变量值的监视并能够熟练操作。
单步跟踪调试(逐条语句跟踪调试):
(1)可按功能键F7进行,要监视某变量的值时,就按Ctrl+F7键,然后输入相应的
变量名,就可以在监视消息窗口中查看到该变量的值。
(2)也可逐段运行程序,即每次运行若干条语句。
首先利用Ctrl+F8键在各行光标
处设置若干断点,然后按Ctrl+F9键从程序的第一条语句运行到设置的第一个断
点,再按Ctrl+F9键从设置的第一个断点运行到设置的第二个断点。
4.了解顺序结构程序的一般构成。
2.3实验任务
1.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j=%d\n",i,j);
要求给i赋5,给j赋10,则应该从键盘输入i=5,j=10
2.华氏温度,要求输出摄氏温度,公式为:
C=。
要求输出结果保留到小数点后两位。
已知程序段中有三处错误,由注释语句**********found**********提示下一条语句有错误,请修改程序中的错误并记录程序运行结果。
错误原因是
正确语句是
#include{floatf,c;clrscr();
**********found
(1)**********
scanf("%d",f);
**********found
(2)**********
c=59(f-32);
**********found(3)**********
printf("f=%f,c=%f\n",c,f);
}
Scanf语句中是地址列表
scanf("%d",&f);
缺少运算符
c=59*(f-32);
输出表列用英文逗号分隔
printf("t=%.2f,f=%.2f\n",c,f);
3.已知程序功能是通过用户输入三角形三边,求取三角形面积。
填空,将程序补充完整。
求取公式为;S=(a+b+c)2area=sqrt(s*(s-a)*(s-b)*(s-c))
人工填空
上机填空
#include{floata,b,c,s,area;
clrscr();
scanf("%f,%f,%f",&a,&b,&c);
(2);
area=sqrt(3);
*库函数sqrt的含义是开平方*
printf("area=%f\n",area);}
#include
S=(a+b+c)2
(s*(s-a)*(s-b)*(s-c))
4.单步跟踪下面程序的执行,每执行一条语句就查看各变量的值。
运行时输入一个三位的整数。
单步跟踪程序时填写下表,同时分析程序的功能。
#include”stdio.()
{intn,x1,x2,x3,y;
printf(“pleaseinputnumbern”);
scanf(“%3d”,&n);
x1=n100;
x2=n10%10;
x3=n%10;
y=x3*100+x2*10+x1;
printf(“y=%3d”,y);}
n
X1
X2
X3
y
程序的功能是:
将输入的3位整数逆序排列
5.#include{charch;
ch=getchar();
putchar(ch);
}
运行时如果从键盘输入数据98,你预测的输出结果是
实际的输出结果为9
原因在于getchar()只能接收单个字符,数字也当字符处理
6.#include{inta,b,c;
scanf(“%d,%o”,&a,&b);
c=a*b;
printf(“%d,%o\n”,c,c);
}
运行时如果输入数据:
12,12
你预测的结果是,实际的输出结果是。
7.#include{intx,n1,n2,n3,y;
scanf("%3d",&x);
n1=x100;
n2=x10%10;
n3=x%10;
y=n3*100+n2*10+n1;
printf(“%d\n”,y);
}
上述程序在运行时如果从键盘输入数据8265,则x的值为_826_;输出的结果为628,在变量n1、n2、n3中,_n1_是x的百位数,_n2_是x的十位数,__n3_是x的个位数。
8.#include{inta=123,b=-45;
floatx=2.54729;
printf(“a=%d,%2d,%5d,%-5d,%+5d\n”,a,a,a,a,a);
printf(“b=%d,%2d,%5d,%-5d,%+5d\n”,b,b,b,b,b);
printf(“x=%f,%9f,%9.2f\n”,x,x,x);
printf(“x=%-7.3f,%2.2f,%.0f\n”,x,x,x);
}
在下面写出程序的运行结果,每个空格用一个|_|来表示
a=|_||_||_||_|,|_|+123
b=|_||_||_||_|,|_||_|-45
x=2.547290,|_|2.547290,|_||_||_||_||_|2.55
x=2.547|_||_|,2.55,3
9.编辑程序,输入学生语、数、英三门课程成绩(考虑数据类型,整型和实型),并输出其总分和平均分。
整型:
main()
{intc,m,e,sum;
floatave;
scanf("%d,%d,%d",&c,&m,&e);
sum=c+m+e;
ave=sum3.0;
printf(“sum=%d\nave=%f”,sum,ave);
}
实型:
main()
{floatc,m,e,sum,ave;
scanf("%f,%f,%f",&c,&m,&e);
sum=c+m+e;
ave=sum3;
printf(“sum=%f\nave=%f”,sum,ave);
}
实验3选择结构程序设计与调试
班级
学号
实验室
专业
姓名
成绩评定
所用软件
计算机号
教师签名
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.阅读程序,上机调试并记录程序结果。
人工分析结果
实验运行结果
#include{intx=0;
if(x==0)printf("x=%d\n",x);
elseprintf("x=%d\n,x+1);}
x=0
#include{intx=0;clrscr();
if(x=0)printf("x=%d\n",x);
elseprintf("x=%d\n,x+1);
}
x=1
以上两题告诉了你什么:
1)c中的赋值号与等于运算符应区分。
2)若判断表达式值为0,表示假,执行else分支
2.阅读程序,上机调试并记录程序结果。
人工分析结果
实验运行结果
实验告诉我们
main()
{
inta=4,b=3,c=5,t=0;
if(a
if(aprintf("%d%d%d\n",a,b,c);
}
503
分支语句只有1条内嵌语句,与书写方式无关
3.阅读程序,上机调试并记录程序结果。
人工分析结果
实验运行结果
实验告诉我们
main()
{
inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
0
关系运算符无论有多少,总是一个个运算得结果然后参与下一个运算的。
4.若从键盘输入58,判断以下程序输出的结果。
人工分析结果
实验运行结果
main()
{
inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
585858
5.阅读程序,上机调试并记录程序结果。
人工分析结果
实验运行结果
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;
} printf(“a=%d,b=%d\n”,a,b);}
a=2,b=1
6.阅读程序,上机调试并记录程序结果。
人工分析结果
实验运行结果
main()
{inta=13,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
}
printf(“m=%d\n”,m);}
m=3
7.阅读程序,上机调试并记录程序结果。
人工分析结果
实验运行结果
实验告诉我们
main()
{inti=1,j=1,k=2;
if((j++||k++)&&i++);
printf("%d,%d,%d\n",i,j,k);
}
2,2,2
逻辑运算符不是所有的符合都可以参与运算的
8.阅读程序,并回答问题
main()
{inta,b,max,min;
scanf("%d%d",&a,&b);
if(a>b)
max=a;
else
max=b;
printf("max=%d\n",max);
}
问题:
a、此程序的功能是输出两数中的最大数
b、请用条件表达式语句(?
:
)修改程序使之完成相同的功能,
其语句是printf(“max=%d\n”,a>b?
a:
b);
9.有一函数
x-1(x<1)
y=2(x-1)(1<=x<10)
3x-10(x>=10)
编程求当分别输入x的值为0.3,3.9,11时,y的值。
main()
{floatx,y;
scanf("%f",&x);
if(x<1)
y=x-1;
elseif(x<10)
y=2*(x-1);
else
y=3*x-10;
printf("x=%f,y=%f\n",x,y);
}
x=0.3时y=-0.7;x=3.9时y=5.8;x=11时y=23
10.编辑程序,输入一个不多于3位的正整数,要求:
a)求出它是几位数;分别打印出每一位数字;
b)按逆序打印出各位数字,例如原数为-321,应输出-123。
main()
{intx,a,b,c,e=0;
scanf("%d",&x);
a=x100;*a、b、c用于求取各个数位*
b=x%10010;
c=x%10;
e=c*100+b*10+a;*e存储x数值的逆序排列数*
if(a>0)*if分支用于判断x的大小,并根*
printf("x>100");*据位数决定逆序的最终值*
elseif(b>0)
{printf("10e=e10;}
else
{printf("x<10");
e=e100;}
printf("%d,%d,%d",a,b,c);
printf("%d",e);
}
11.随机输入3个整型数据作为学生的课程成绩,编程实现由小到大排序输出(对比第三章编程题,比较他们的优缺点)。
main()
{inta,b,c,e=0;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{e=a;a=b;b=e;}
if(a>c)
{e=a;a=c;c=e;}
if(b>c)
{e=b;b=c;c=e;}
printf("%d,%d,%d",a,b,c);}
3.4思考
请思考如何通过改变分支条件将多if嵌套变成无套形式,提高计算机的运算效率。
请上网搜索答案,体会程序优化的思路方式。
无具体答案。
实验4循环结构程序设计
班级
学号
实验室
专业
姓名
成绩评定
所用软件
计算机号
教师签名
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()
{
inti,n;
scanf("%d",&n);
i=1;
while(i<=n)
i++;
printf("i=%.d\n",i);
}
i=6
2.若输入的值是5,预测结果并上机验证,循环执行次数是__5____,考虑若x定义为整型,程序结果是否相同___不同_______,为什么_因为要考虑到c中除法的规则
人工分析结果
实验运行结果
main()
{
inti,n;doublex,s=0;
scanf("%d",&n);
i=1;x=1;
while(i<=n)
{i++;x=x+1;
s+=1x;
}
printf("s=%.2f\n",s);
}
s=1.45