高级语言程序设计C实验与练习册答案文档格式.docx
《高级语言程序设计C实验与练习册答案文档格式.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计C实验与练习册答案文档格式.docx(32页珍藏版)》请在冰点文库上搜索。
print('
a=%d"
a);
//改为printf('
\n"
);
改正后源程序:
{intx=2,y=3,a;
a=x*y;
(2)下列程序的功能为:
计算圆面积并将结果输出;
请纠正程序中存在错误(程序中有8处错误),使程序实现其功能,程序以文件名sy1_3.c存盘。
#includestdio.h;
main();
floatr;
area;
r=5.0;
area=3.14159r*r;
area=%d\n"
area)
改正后源程序:
main()
{floatr,area;
area=3.14159*r*r;
printf("
area=%f\n"
area);
(3)下列程序的功能为:
正确使用控制字符(水平制表符);
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy1_4.c存盘。
#include"
stdio.h"
charx,y,z;
x=”a”;
y='
/t'
;
z=”b”;
第1行为:
%c%c%c\n"
x,y,z);
第2行为:
%c%c%c%c\n"
x,y,y,z);
x='
a'
\t'
z='
b'
实验一
(2)数据类型、运算符和表达式
P26
1.若有定义“intx,a,b,c;
”,写出顺序执行下列表达式后x的值,然后通过程序(程序以文件名sy1_5.c存盘)验证。
要求:
先利用操作系统自带的计算器按表达式的运算次序计算下列表达式的结果,然后利用验证程序计算表达式的结果。
①x=a=b=10
②x=25%(c=3)
③x*=x+=x-=x
④x=(a=4%3,a=1)
验证程序:
#include<
intx,a,b,c;
x=a=b=10;
x=%d\n"
x);
x=25%(c=3);
x*=x+=x-=x;
x=(a=4%3,a=1);
2.改错题
已知圆锥半径r和高h,计算圆锥体积v。
请纠正程序中存在错误(程序中有7处错误),使程序实现其功能,程序以文件名sy1_6.c存盘。
#includestdio.h
{floatr=10,h=5;
v=1/3*3.14159*r^2*h;
v=%d\n"
v)
{floatr=10,h=5,v;
v=1.0/3*3.14159*r*r*h;
v=%f\n"
v);
通过键盘输入两个整数分别存放在变量x、y中,不借用第3个变量实现变量x、y互换值。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy1_7.c存盘。
intx,y;
请输入两个整数\n"
scanf("
x,y);
初始状态下的x:
%dy:
%d\n"
x=x+y
y=x-y;
x=x-y;
最终状态下的x:
%d/n"
x,y);
x,&
y);
x=x+y;
3.程序填空
(1)下列程序的功能为:
输出小写字母a,b,请填写适当的符号,使程序实现其功能,程序以文件名sy1_8.c存盘。
main()
charc1,c2;
c1=97;
c2=98;
%c,%c"
c1,c2);
(2)下列程序的功能为:
从键盘输入3个整数分别存入变量a、b、c,然后,将变量a的值存入变量b,将变量b的值存入变量c,将变量c的值存入变量a,输出经过转存后变量a、b、c的值。
(提示:
使用中间变量)。
请填写适当的符号或语句,使程序实现其功能,程序以文件名sy1_9.c存盘。
inta,b,c,m;
Pleaseinputa,b,c:
"
%d%d%d"
&
b,&
c);
m=a;
a=c;
c=b;
b=m;
a=%db=%dc=%d\n"
a,b,c);
4.编程题
(1)编写一个程序实现如下功能:
从键盘输入三个大写英文字母,把它们转换成小写字母后输出(程序以文件名sy1_10.c存盘)。
参考程序:
(注意输入必须是大写字母)
charc1,c2,c3;
%c,%c,%c"
c1,&
c2,&
c3);
c1=c1+32;
c2=c2+32;
c3=c3+32;
%c,%c,%c\n"
c1,c2,c3);
(2)编写一个程序实现如下功能:
从键盘输入两个整数a、b,求a2+b2的值并输出(程序以文件名sy1_11.c存盘)。
inta,b,c;
c=a*a+b*b;
c=%d\n"
c);
实验二设计并运行简单的C程序
1.改错题
输入一个华氏温度,要求输出摄氏温度。
公式为:
C=
,输出取2位小数。
请纠正程序中存在的错误(程序中有3处错误),使程序实现其功能,程序以文件名sy2_1.c存盘。
{floatc,f;
请输入一个华氏温度:
%f"
f);
c==(5/9)*(f-32);
摄氏温度为:
%5.2f\n"
c);
改正后的程序:
floatc,f;
f);
c=(5.0/9)*(f-32);
按下列公式计算并输出x的值。
其中a和b的值由键盘输入。
x=2ab/(a+b)2
请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy2_2.c存盘。
main()
{inta,b;
floatx;
%d,%d"
a,b);
x=2ab/(a+b)(a+b);
x=%d\n"
}
{inta,b;
x=2.0*a*b/((a+b)*(a+b));
x=%f\n"
}
从键盘输入一个大写字母,要求改用小写字母输出。
请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy2_3.c存盘。
charc1,c2;
c1=getchar;
/*输入大写字符*/
%c,%d\n"
c1,c1);
c2=c1-26;
/*转变为小写*/
c2,c2);
/*输出*/
c1=getchar();
c2=c1+32;
2.程序填空
给定格式输入数据,按输出要求输出结果,请填写适当的符号或语句,使程序实现其功能,程序以文件名sy2_4.c存盘。
输入形式enterx,y:
23.4
输出形式x+y=5.4
intx;
floaty;
printf("
enterx,y:
scanf("
%d%f"
printf("
x+y=%.1f\n"
x+y);
设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
(周长l=2
,圆面积s=
,圆球表面积sq=
,圆球体积vq=
;
圆柱体积vz=
)
请填写适当的符号或语句,使程序实现其功能,程序以文件名sy2_5.c存盘。
{
floatpi,h,r,l,s,sq,vq,vz;
pi=3.1415926;
请输入圆半径r,圆柱高h:
scanf("
%f%f"
r,&
h);
;
l=2*pi*r;
s=pi*r*r;
sq=4*pi*r*r;
vq=3.0/4*pi*r*r*r;
vz=pi*h*r*r;
圆周长为:
%.2f\n"
l);
圆面积为:
s);
圆球表面积为:
sq);
圆球体积为:
vq);
圆柱体积为:
vz);
(3)下列程序的功能为:
通过键盘输入两个整数,分别存入变量x,y中,当x小于y时,通过中间变量t互换x,y之值,并输出之。
请填写适当的符号或语句,使程序实现其功能,程序以文件名sy2_6.c存盘。
{
intx,y,t;
请输入x,y:
y);
if(x<
y)
{t=x;
x=y;
y=t;
}//x与y交换
交换后的x:
%dy:
%d\n"
,x,y);
3.编程题
(1)编写一个程序实现如下功能:
输入一元二次方程的系数a,b,c,求方程的根。
运行该程序时,输入a,b,c的值,分别使b2-4ac的值大于、等于和小于零,观察运行时的报错信息(程序以文件名sy2_7.c存盘)。
math.h>
voidmain()
{floata,b,c,disc,x1,x2,p,q;
a=%f,b=%f,c=%f"
c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
x1=%5.2f\nx2=%5.2f\n"
x1,x2);
(2)编写一个程序实现如下功能:
在屏幕显示提示信息(“输入一个字符串”),用户输入完成后在屏幕上再现该字符串(程序以文件名sy2_8.c存盘)。
{charc1,c2,c3;
输入一个字符串\n"
c2=getchar();
c3=getchar();
putchar(c1);
putchar(c2);
putchar(c3);
putchar('
\n'
(3)编写一个程序实现如下功能:
利用sizeof(),求得所有基本数据类型的长度(程序以文件名sy2_9.c存盘)。
{inti,j;
longs;
floata,b;
doublef1,f2;
charch;
%d,%d,%d\n"
sizeof(int),sizeof(i),sizeof(10));
%d,%d,%d,%d\n"
sizeof(long),sizeof(s),sizeof(50000),sizeof(10L));
sizeof(float),sizeof(b),sizeof(9.8F));
sizeof(double),sizeof(f1),sizeof(9.8));
sizeof(char),sizeof(ch),sizeof('
),sizeof('
\101'
));
}实验四循环结构程序设计(解答)
求1~100之和(和值为5050)并输出。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。
inti,sum=0;
i=1;
while(i<
100)
sum=sum+i;
i++;
printf(“Thesumfrom1to100is%d\n”,sum);
=100)
{
}
Thesumfrom1to100is%d\n"
sum);
倒序打印26个英文字母。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_2.c存盘。
charx;
z'
while(x!
='
%3d"
x++;
-1)
%3c"
x--;
输出如下的图形,要求顶端的*定位在第21字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_3.c存盘。
*
***
*****
*******
voidmain()
{inti,j;
for(i=0;
i<
4;
i++)
{for(j=0;
j<
=20;
j++)
printf("
for(j=0;
2*i+1;
j++)
*"
{inti,j;
{for(j=0;
=20-i;
}
用辗转相除法求两个正整数的最大公约数;
请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_4.c存盘。
提示:
“辗转相除法”求两个正整数的最大公约数的算法如下:
1将两数中大的那个数放在m中,小的放在n中。
2求出m被n除后的余数r。
3若余数为0则执行步骤(7);
否则执行步骤(4)。
4把除数作为新的被除数;
把余数作为新的除数。
5求出新的余数r。
6重复步骤(3)到(5)。
7输出n,n即为最大公约数。
main()
intr,m,n,t;
scanf("
m,&
n);
if(m<
n)
{t=m;
m=n;
n=t;
r=m%n;
while(r)
{m=n;
n=r;
r=m%n;
printf("
%d\n"
n);
计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个);
请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_5.c存盘。
intday,x1,x2;
day=0;
x1=1020;
while(x1>
0)
x2=x1/2-2;
x1=x2;
day++;
printf(“day=%d\n”,day);
输出100以内能被3整除且个位数为6的所有整数;
请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c存盘。
for(i=0;
i<
10;
i++)
{j=i*10+6;
if(i%3!
=0)continue;
%d"
j);
计算1~100之间所有含8的数之和(程序以文件名sy4_7.c存盘)。
inti,sum=0;
for(i=1;
i<
=100;
i++)
if(i%10==8||i/10==8)
sum+=i;
sum=%d\n"
用下列近似公式计算e值,误差应小于10-5(程序以文件名sy4_8.c存盘)。
…
inti=0;
longn=1;
floate=0,t=1;
while(t>
1e-5)
{
e+=t;
n*=i;
t=1.0/n;
e=%f\n"
e);
验证下列结论:
任何一个自然数n的立方都等于n个连续奇数之和。
例如:
13=1;
23=3+5;
33=7+9+11。
程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止(程序以文件名sy4_9.c存盘)。
intnum,a,i;
while
(1)
输入一个自然数(输入0则结束程序):
"
num);
if(!
num)
break;
a=num*num-num+1;
//a为第一个奇数
%d*%d*%d="
num,num,num);
=num-1;
%d+"
a);
a+=2;
}
(4)编写一个程序实现如下功能:
求该校的学生总人数