c语言实验报告Word格式.docx
《c语言实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《c语言实验报告Word格式.docx(38页珍藏版)》请在冰点文库上搜索。
f4));
运行结果:
③#include<
{floatf=13.8;
intn;
n=(int)f%3;
printf(“n=%d\n”,n);
运行结果:
3.输入并运行以下程序:
#include<
voidmain()
{inti=8,j=10,m,n;
m=++i;
n=j++;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
}
分别作以下改动并运行:
①将程序改为:
{inti=8,j=10;
printf(“%d,%d\n”,i++,j++);
②在①的基础上,将printf语句改为:
printf(“%d,%d\n”,++i,++j);
③再将printf语句分别改为:
printf(“%d,%d,%d,%d\n”,i,j,i++,j++);
printf(“%d,%d,%d,%d\n”,++i,++j,i,j);
④程序改为:
main()
{inti=8,j=10,m=0,n=0;
m+=i++;
n-=--j;
printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);
4.请将下列给出的两个程序段分别输入计算机后,分析其运行结果:
①voidmain()
{intnum;
num=32767;
printf(“num=%d\n”,++num);
②voidmain()
{inta=-2;
printf(“%d,%d\n”,a,a--);
3、实验小结与体会
1.经过此次实验,基本掌握C语言数据类型以及变量的定义和赋值、掌握运算符的种类、运算优先级和结合性、掌握不同类型数据间的转换和运算及编辑、编译、连接和运行的过程。
2.在实验中常常因为符号的遗漏而导致程序执行不了,同时寻找错误也是一个极需耐心的过程。
3.制作C语言数据类型表,方便查询。
实验二、输入输出函数的使用
掌握数据的输入输出的方法,能正确使用各种格式转换符。
1.上机输入以下程序:
#include<
voidmain()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedintp,q;
a=61;
b=62;
c1='
a'
;
c2='
b'
d=3.56;
e=-6.87;
f=3157.890121;
g=0.123456789;
m=50000;
n=-60000;
p=32768;
q=40000;
printf("
a=%db=%d\nc1=%cc2=%c\nd=%6.2fe=%6.2f\n"
a,b,c1,c2,d,e);
f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%x\n"
f,g,m,n,p,q);
}
运行此程序并分析结果。
2.键盘输入与屏幕输出练习
问题1:
要使下面程序的输出语句在屏幕上显示1,2,34,则从键盘输入的数据格式应为以下备选答案中的哪一个?
main()
{
chara,b;
intc;
scanf("
%c%c%d"
&
a,&
b,&
c);
printf("
%c,%c,%d\n"
a,b,c);
A)1234B)1,2,34
C)’1’,’2’,34D)1234
答案:
选D
问题2:
与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1234,则应修改程序中的哪条语句?
怎样修改?
回答:
只需修改第7行的语句,修改后:
printf("
%c%c%d\n"
问题3:
要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?
回答:
只需修改第6行语句,修改后:
%c,%c,%d"
问题4:
要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为’1’,’2’,34,则应修改程序中的哪条语句?
回答:
修改第7行语句,修改后:
'
%c'
'
%d\n"
3.编程:
由键盘输入学生三门课(英语、数学和程序设计)成绩,计算并输出总成绩、平均成绩。
【编程解析】
(1)程序的输入与输出:
输入三门课的成绩English、math、program,输出总成绩sum及平均成绩average。
(2)数据结构:
intEnglish,math,program,sum;
floataverage;
(3)
解决问题的关键算法:
求总成绩:
三门课成绩相加;
求平均成绩:
总成绩除以3。
{
intenglish,math,program,sum;
floataverage;
Enterthescoreofenglish,mathandprogram:
\n"
);
%d%d%d"
english,&
math,&
program);
sum=english+math+program;
average=sum/3.0;
sum=%d\t"
sum);
average=%5.1f\n"
average);
三、实验小结与体会
1.初步掌握数据基本的输入输出方法,认识几种基本常用的格式转换符。
2.初步学会将程序图转化为c语言程序。
实验三:
选择结构程序设计
【实验目的】
1.了解C语句表示逻辑量的方法,0代表假和1代表真;
2.正确使用关系表达式和逻辑表达式表达条件。
3.熟练掌握if语句和switch语句。
1.有一个函数,定义如下。
用分支结构编写一程序,根据用户输入的自变量
的值,计算函数值。
【参考源程序】
#include"
stdio.h"
{floatx;
pintf(“inputx:
\n”);
scanf(“%f”,&
x);
if(x<
0.0)
printf(“y=0\n”);
elseif(x>
=0.0&
x<
=50.0)
printf(“y=%f\n”,x);
else
printf(“y=%f\n”,x*x);
2.编写一个程序,要求输入一个字符并判断它是字母字符、数字字符、还是其他字符。
程序要求输入一个字符ch。
程序要求输出字符的类型,即字母(alpha)、数字(numeric)或其他字符。
charch
(3)解决问题的关键算法:
判断字符的类别:
若字符在’a’到’z’之间或者在’A’到’Z’之间,则字符为字母字符;
若字符在'
0'
到'
9'
之间,则为数字字符;
否则,为其他字符。
【算法流程图】如图2-3所示。
charch;
Enterancharacter:
"
%c"
ch);
if(ch>
='
ch<
z'
||ch>
A'
Z'
)
%cisanalpha\n"
ch);
else
if(ch>
%cisanumeric\n"
%cisothercharacter\n"
程序运行结果如下:
或者
3.用switch语句编写程序:
某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lowerclass);
4岁孩子进中班(Middleclass);
5岁、6岁孩子进大班(Higherclass)。
编写程序(分别用switch语句和IF语句两种方式编程),输入孩子年龄,输出年龄及进入的班号。
如:
输入:
3,输出:
age:
3,enterLowerclass。
intage;
Entertheageofchild(2~6):
%d"
age);
switch(age)
case2:
case3:
printf(“age:
%d,enterlowerclass”,age);
break;
case4:
%d,entermiddleclass”,age);
case5:
case6:
printf(“age:
%d,enterhigherclass”,age);
default:
printf(“theageerror\n”);
4.设计作业
输入整数a和b,若a2+b2大于100,则输入a2+b2百位以上的数字,否则输出两数之和。
源代码如下:
inta,b;
%d%d"
b);
if(a*a+b*b>
100)
printf("
%d\n"
(a*a+b*b)/100);
elseprintf("
a+b=%d\n"
a+b);
或者:
1.基本掌握了关系表达式和逻辑表达式,。
2.掌握了if语句,学会使用if-else语句设计双分支和多分支结构程序;
掌握了switch语句的特点,学会使用switch语句设计多分支结构程序。
3.熟练掌握将流程图转化为C语言程序的思想,同时在写c语言的过程中犯错频率降低。
实验四 循环结构程序设计
1.学习循环语句for、while和do-while语句的使用方法;
2.学习用循环语句实现各种算法
3.进一步熟悉TC集成环境的使用方法。
【实验内容】
1.使用while循环求两个正整数的最小公倍数。
{intm,n,result;
printf(“inputtwointegers:
”);
scanf(“%d%d”,&
m,&
n);
result=m<
n?
n:
m;
while(!
(result%m==0&
result%n==0))
result++;
printf(“Theleastcommonmultipleofmandnis%d\n”,result);
2.打印500以内的“水仙花数”。
“水仙花数”是一个三位数,其各位数立方和等于该数本身。
inti,j,k,n;
for(n=100;
n<
=500;
n++)
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("
n);
3.编写一个程序,把用户输入的数据累加,直到输入零为止,输出累加的结果。
输入若干个数(正数或负数),以0结束输入。
输出输入数据的累加和。
floatsum,d。
(3)关键算法:
求累加和,先将sum初始化为0,每输入一个数d,判断它是否为0,若为0就跳出循环,否则将其累加到sum中。
【算法流程图】如图2-4所示。
floartsum=0,d;
Enteraserialofnumbersendedby0:
for(;
;
)
%f"
d);
if(d==0)break;
sum+=d;
sum=%g\n"
该程序实现了累加器的功能。
此思路可扩展到实现任意数的累加、连乘等功能。
4.编写一个程序,输入一个正整数n,求sum=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
输入一个正整数n,输出1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
inti,j,n,s1,sum
(3)解决问题关键算法:
求和。
采用两层循环求解,外层循环i从1到n,内层循环j从1到i。
【算法流程图】如图2-5所示。
inti,j,n,s,sum=0;
Enteraninteger:
for(i=1;
i<
=n;
i++)
s=0;
for(j=1;
j<
=i;
j++)
s+=j;
sum+=s;
print("
sum=%d\n"
【实验小结及体会】
1.基本掌握了循环语句for、while和do-while语句的使用方法,
2.能够使用循环语句进行各种算法。
3.常常遗漏表达式后面的分号,导致程序无法执行。
4.混淆continue和break语句。
实验五函数
1.学习C语言中函数的定义和调用方法。
2.掌握通过参数在函数间传递数据的方法。
3.学习递归程序设计,掌握递归函数的编写规律。
4.熟悉包含函数调用的程序的调试方法。
5.实验目的:
掌握宏定义、宏调用,以及宏展的处理过程,掌握文件包含的概念和使用。
程序示例:
功能:
fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数的个数以及它们的平均值。
math.h"
{inta=0,k;
/*a保存素数之和*/
floatav;
/*av保存1000以内素数的平均值*/
for(k=2;
k<
=1000;
k++)
if(fun(k))/*判断k是否为素数*/
a+=k;
av=a/1000;
av=%f\n"
av);
fun(intn)/*判断输入的整数是否为素数*/
{inti,y=0;
for(i=2;
n;
if(n%i==0)y=1;
elsey=0;
returny;
1.编制求两数相乘的函数。
floatmul(intx,inty)
floatz;
z=x*y;
returnz;
floata,b,c;
%f%f"
c=mul(a,b);
%.2f\n"
c);
2.写两个函数,分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。
两个正数由键盘输入。
inthcf(intu,intv)
inta,b,t,r;
if(u>
=v)
t=u;
u=v;
v=t;
a=u;
b=v;
while((r=b%a)!
=0)
b=a;
a=r;
returna;
intlcd(intu,intv,inth)
return(u*v/h);
intu,v,h,l;
u,&
v);
h=hcf(u,v);
hcf=%d\n"
h);
l=lcd(u,v,h);
lcd=%d\n"
l);
3.求x的n次方。
采用递归调用方法计算。
1当n=0时
xn=
x*xn-1当n>
0时
intpower(intx,intn)
if(n==0)
return
(1);
else
return(x*power(x,n-1));
intx,n;
x,&
%d**%d=%d\n"
x,n,power(x,n));
4.倒序输出26个英文大写字母。
printletter(charc)
if(c>
%c"
c--;
printletter(c);
charc='
printletter(c);
5.全局变量与局部变量,计算运行结果
inta,b=5;
inta=10,c;
c=a+b;
%d,%d,%d\n"
a,c,b);
6.定义一个带参数的宏,使两个参数的值互换。
设计主函数调用宏将a和b的值进行交换。
#defineexchange(a,b)t=a;
a=b;
b=t;
inta,b,t;
Inputtwonumbers:
exchange(a,b);
a=%d,b=%d\n"
a,b);
【实验小结和体会】
1.初步掌握C语言中函数的定义和调用方法。
2.初步掌握通过参数在函数间传递数据的方法与递归程序的设计方法,此外还学会了基本的宏定义以及其调用方法。
3.在犯被调函数处没有进行函数的原型声明、忽略参数的求值顺序等小错误后,体会到c语言的严谨,写程序时不能放松警惕。
实验六一维数组
1.掌握一维数组的定义、赋值和输入输出的方法;
2.掌握字符数组和字符串处理函数的使用;
3.学习用数组实现相关的算法(如排序、求最大和最小值、对有序数组的插入等);
1.调试程序实现功能:
青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。
inti,j,min,max;
floattemp,average=0;
floata[11];
for(i=1;
=10;
scanf("
a[i]);
=9;
min=i;
for(j=i+1;
if(a[min]>
a[j])
{
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
for(i=2;
average+=a[i];
%6.2f\n"
average/8);
2.输入一串字符,计算其中空格的个数。
string.h"
charc[30];
inti,sum=0;
gets(c);
for(i=0;
strlen(c);
if(c[i]=='
sum+=1;
3.有一递推数列,满足:
f(0)=0,f
(1)=1,f
(2)=1,f(n)=f(n-1)+f(n-2)
。
使用数组编写程序,顺序打印