C语言程序设计实验与习题14.docx
- 文档编号:24022688
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:30
- 大小:220.46KB
C语言程序设计实验与习题14.docx
《C语言程序设计实验与习题14.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验与习题14.docx(30页珍藏版)》请在冰豆网上搜索。
C语言程序设计实验与习题14
实验一C程序运行环境及简单程序的运行
2.程序改错并调试改正后的程序
⑴下列程序的功能为:
计算x*y的值并将结果输出,程序中有8处错误,尝试改正并上机调试之(程序以文件名sy1_2.cpp存盘)。
#include
voidmain
{intx=2;y=3;a
A=x*y
print("a=%d",a);
printf(‘\n’);
}
⑵下列程序的功能为:
输入圆的半径,计算圆面积并将结果输出;程序中有9处错误,尝试改正并上机调试之(程序以文件名sy1_3.cpp存盘)。
#includestdio.h;
intmian();
floatr;area;
printf("inputr:
\n");
scanf("%f",r);
area=3.14159r*r;
printf("r=%f,area=%f\n",area);
3.编写程序并上机调试
⑴输入三个整数a、b、c,显示出其中的最大值。
4.分析与总结
⑴总结C程序的结构和书写规则。
⑵阅读:
附件1-C语言程序的跟踪调试。
特别提示:
当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。
习题一
一、选择题
参考答案:
1~5CBACD6~10CCACB
11~14AACB
二、综合题
绘制NS算法流程图。
(1)输入10个数,求其中的最大值。
(2)输入3个数,将它们升序排列输出。
(3)输入2个数,求它们的最大公约数。
(4)输入一元二次方程的系数a、b、c,判断其根。
实验二顺序结构程序设计
1.阅读程序,尝试写出程序的运行结果,然后输入并调试程序,对照其实际输出与分析的结果是否一致,若不一致,请找出原因。
⑴以下程序用于测试C中不同类型数据所占内存字节数,运行并体会sizeof运算符的使用方法。
//sizeof运算的结果为一个int型的整数,表示其求解对象的存储所占的内存字节数。
#include
voidmain()
{inta=1;
printf("Sizeofcharis%d\n",sizeof(char));
printf("Sizeofshortis%d\n",sizeof(short));
printf("Sizeofintis%d\n",sizeof(int));
printf("Sizeoflongis%d\n",sizeof(long));
printf("Sizeoffloatis%d\n",sizeof(float));
printf("Sizeofdoubleis%d\n",sizeof(double));
printf("Sizeofboolis%d\n",sizeof(bool));
printf("------------------------------\n");
printf("Sizeofais%d\n",sizeof(a));//变量的类型所占内存字节数
printf("Sizeof2.0*10is%d\n",sizeof(2.0*10));//表达式运算结果的类型所占字节数
printf("sizeofLiuDehuais%d\n",sizeof("LiuDehua"));//字符串所占内存字节数
}
⑵阅读并分析以下程序的输出结果,上机调试,对比实际的输出与分析的结果是否一致。
#definePI3.14159
#include
voidmain()
{
inta1=65,a2,a3;
charch1='A',ch2;
floatf1;
doubled1;
printf("\101\x42C\n");
printf("Isay:
\"Howareyou?
\"\n");
printf("\\*CProgram*\\\n");
printf("\t\\\\DisplayHello!
IamTom\b!
\n");
printf("-----------------------------------------\n");
printf("65/10=%d\n",a1/10);
printf("65%10=%d\n",a1%10);
printf("a1=%d,CharofASCII%dis\'%c\'\n",a1,a1,a1);
ch2=ch1+32;
printf("ch2=\'%c\',ASCIIof\'%c\'is%d\n",ch2,ch2,ch2);
printf("-----------------------------------------\n");
a1=65;
a2=(a1++)+(a1++);
printf("a1=%d,a2=%d\n",a1,a2);
a1=65;
a2=(a1++)+(++a1);
printf("a1=%d,a2=%d\n",a1,a2);
a1=65;
a2=(++a1)+(a1++);
printf("a1=%d,a2=%d\n",a1,a2);
a1=65;
a2=(++a1)+(++a1);
printf("a1=%d,a2=%d\n",a1,a2);
printf("-----------------------------------------\n");
a2=2,a3=(a1=3,a2+=a1,a1*a2);
printf("a1=%d,a2=%d,a3=%d\n",a1,a2,a3);
printf("-----------------------------------------\n");
a3=a2=a1=2;
printf("%d,%d,%d\n",(a1,a2+1),a3+2,a1+a2+a3);
printf("-----------------------------------------\n");
a1=12;
a1+=a1-=a1*a1;
printf("a1=%d\n",a1);
printf("-----------------------------------------\n");
ch1='0',a1=1,f1=2.f,d1=PI*(ch1/5+a1/f1);
printf("ch1=%d,a1=%d,f1=%f,d1=%lf\n",ch1,a1,f1,d1);
printf("-----------------------------------------\n");
a1=10;
a2=-a1--;
printf("a1=%d,a2=%d\n",a1,a2);
a3=-++a1;
printf("a1=%d,a3=%d\n",a1,a3);
printf("-----------------------------------------\n");
printf("%d,%d,%d\n",a1++,++a1,a1=2);
printf("a1=%d\n",a1);
printf("%d,%d,%d\n",a1=2,++a1,a1++);
printf("a1=%d\n",a1);
printf("%d,%d,%d\n",a1++,a1=2,++a1);
printf("a1=%d\n",a1);
}
⑶阅读并分析以下程序的输出结果,上机调试,对比实际的输出与分析的结果是否一致。
#include
voidmain()
{charch=65;
inta=1234;
longg=12345678;
floatf=123.456789;
doubled=9.87654321E5;
printf("%d,%c,%5d,%3c\n",ch,ch,ch,ch);
printf("%08d,%0+8d,%8d,%o,%7x,%10ld,%ld\n",a,a,a,a,g,g);
printf("%010.3f,%-10.3f,%10.3f,%f,%e,%g\n",f,f,f,f,f,f);
printf("%0+15.5lf,%-15.5lf,%15.5lf,%lf,%le\n",d,d,d,d,d);
printf("%10s\n%20s\n%-10.3s\n%s\n","Hello,world!
","Hello,world!
","Hello,world!
","Hello,world!
");
}
2.程序改错并调试改正后的程序
⑴下列程序的功能为:
输入一个华氏温度,要求输出摄氏温度。
公式为:
C=
,输出取2位小数。
请纠正程序中存在的错误(程序中有3处错误),使程序实现其功能。
#include
voidmain()
{floatc,f;
printf("请输入一个华氏温度:
\n");
scanf("%f",f);
c==(5/9)*(f-32);
printf("摄氏温度为:
%5.2f\n"c);
}
⑵下列程序的功能为:
按下列公式计算并输出x的值。
其中a和b的值由键盘输入。
x=2ab/(a+b)2
请纠正程序中存在的错误,使程序实现其功能。
#include
voidmain()
{inta,b;
floatx;
scanf("%d,%d",a,b);
x=2ab/(a+b)(a+b);
printf("x=%d\n",x);
}
3.编写与调试程序
⑴写一个程序测试一下把带小数的float和double型数据用printf函数输出时,小数部分是截断还是四舍五入?
四舍五入
习题二
参考答案:
1~5DDDAC6~10AADDD
11~15DAADD16~20ACBBA
21~25AACAC26~30BCBBA
31~35DDABB36~40CCABA
41~45BACCB46~50DABAC
51~55AAABD56~60ABBBC
61~65ADBAC66~67BD
实验三选择结构程序设计(上)
实验内容
1.体验数据的格式输入的效果。
分析以下程序,假设依据给定的内容输入,其输出会怎样?
实际运行并按照要求输入,比较其输出结果与分析的结果是否一致。
//程序⑴
#include"stdio.h"
voidmain()
{
inta,b,c,d;
scanf("%d,%x,%o,%c",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%c\n",a,b,c,d);
}
输入:
10,10,10,10输出:
a=10,b=16,c=8,d=1
输入:
10101010输出:
a=10,b=-858993460,c=-858993460,d=?
不正确
//程序⑵
#include"stdio.h"
voidmain()
{
inta,b,c,d;
scanf("%d%x%o%c",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%c\n",a,b,c,d);
}
输入:
10,10,10,10输出:
a=10,b=-858993460,c=-858993460,d=?
不正确
输入:
10101010输出:
a=10,b=16,c=8,d=
//程序⑶
#include"stdio.h"
voidmain()
{
inta,d;
floatb;
charc;
scanf("%2d%*2d%2f%2c%d",&a,&b,&c,&d);
printf("a=%d,b=%f,c=%c,d=%d\n",a,b,c,d);
}1,23,456,7890
Pressanykeytocontinue
输入:
12345678900输出:
a=12,b=56.000000,c=7,d=900
输入:
123456789m0输出:
a=12,b=56.000000,c=7,d=9
输入:
12345678900输出:
a=12,b=56.000000,c=,d=8900
输入:
1,23,456,7890输出:
a=1,b=-107374176.000000,c=?
d=-858993460不正确
//程序⑷
#include"stdio.h"
voidmain()
{
longa;
doubleb;
scanf("a=%ld%,b=%lf",&a,&b);/*思考:
如果去掉l,会有什么影响*/
printf("a=%ld,b=%lf\n",a,b);/*思考:
如果去掉l,会有什么影响*/
}
输入:
a=123456789,b=123456789.123456789输出:
输入:
123456789,123456789.123456789输出:
正确否
//程序⑸
#include
voidmain()
{charc1,c2;/*思考:
此处能否为int型*/
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
putchar('\n');
printf("c1=%d,c2=%d\n",c1,c2);
printf("c1=%c,c2=%c\n",c1,c2);
}
输入:
B1输出:
c1=66,c2=49输入:
B输出:
c1=66,c2=10
c1=B,c2=1c1=B,c2=
2.改错题(请纠正程序中存在错误,使程序实现其功能)
⑴下列程序的功能为:
输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母,例如:
输入g,则输出fgh;输入a,则输出zab;输入M,则输出LMN;输入Z,则输出YZA。
#include
voidmain()
{charch,c1,c2;
printf("Enteracharacter:
");
ch=getchar();
if((ch>='a')||(ch<='z'))
ch-=32;
c1=ch-1;
c2=ch+1;
if(ch='A')c1=ch+25;
elseif(ch='Z')c2=ch-25;
putchar(c1);
putchar(ch);
putchar(c2);
putchar('\n');
}
⑵下列程序的功能为:
输入3个整数后,输出其中最大值。
#include"stdio.h"
voidmain()
{inta,b,c,max;
printf("请输入3个整数:
\n");
scanf("%d%d%d",&a,&b,&c);
max=a;
if(c>b)
{if(b>a)max=c;}/*c>b>a*/
else/*b>c*/
{if(c>a)max=b;}/*b>c>a*/
printf("3个数中最大者为:
%d\n",max);
}
三个数中求最大值(最小值类似)另解
1)见实验一(题3)
2)#include"stdio.h"
voidmain()
{inta,b,c,max;
printf("请输入3个整数:
\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
if(a>c)max=a;
elsemax=c;
else
if(b>c)max=b
max=c;
printf("3个数中最大者为:
%d\n",max);
}
3.程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能)
⑴下列程序的功能为:
判断从键盘上输入的一个字符,并按下列要求输出。
若该字符是数字输出字符串"0-9"
若该字符是大写字母输出字符串"A-Z"
若该字符是小写字母输出字符串"a-z"
若该字符是其他字符输出字符串"!
,@,…"
#include
voidmain()
{charc;
scanf("%c",&c);
if('0'<=c&&c<='9')
_____printf("0-9\n");__
elseif(_'A'<=c&&c<='Z'_)
printf("A-Z\n");
__elseif('a'<=c&&c<='z')
printf("a-z\n");
_____else_______
printf("!
,@,…\n");
}
4.编程题(编写程序,并上机调试运行)
⑴输入三角形的三边长a、b、c,求其面积三角形的面积公式为:
Area=
,其中S=(a+b+c)/2。
(要求判断边长值的合法性与三角形的可构成性)。
#include"stdio.h"
#include"math.h"//数学函数库头文件
voidmain()
{
doublea,b,c,s,area;
printf("请输入三角形三边长:
\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
if(a<=0||b<=0||c<=0)//有任一边边长小于等于0
printf("边长必须为正!
\n");
else
if(a+b>c&&b+c>a&&a+c>b)//任意两边之和对于第三边
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));//doublesqrt(doublex):
求平方根值
printf("area=%lf\n",area);
}
else
printf("不能构成三角形!
\n");
}
⑵有一函数
:
x(x<1)求y值。
y=2x-1(1<=x<10)
3x-11(x>=10)
#include"stdio.h"
voidmain()
{
doublex,y;
printf("请输入x:
");
scanf("%lf",&x);
if(x<1)y=x;
elseif(x<10)y=2*x-1;
elsey=3*x-11;
printf("x=%lf,y=%lf\n",x,y);
}
⑶输入三个数a、b、c,将它们按照升序(由小到大)的顺序显示出来。
解法1:
第四章课件
解法2:
#include"stdio.h"
#include"math.h"//数学函数库头文件
voidmain()
{
inta,b,c,t;
printf("请输入三个整数\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
if(c>a)
printf("%d,%d,%d\n",b,a,c);
else
if(c
printf("%d,%d,%d\n",b,a,c);
else
printf("%d,%d,%d\n",b,c,a);
else
if(c>b)
printf("%d,%d,%d\n",a,b,c);
else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实验 习题 14