C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(49页珍藏版)》请在冰豆网上搜索。
C语言实验报告
实验一熟悉C开发环境和C程序的上机步骤
实验二基本数据类型及数据的输入输出
实验三运算符及表达式
实验四顺序结构程序设计
实验五选择结构程序设计
实验六循环结构程序设计
实验七数组及其应用
实验八函数及其应用
实验九指针及其应用
实验
(一)熟悉C开发环境和C程序的上机步骤
实验时间:
2012.4.2 同组人员:
实验目的:
1.了解TurboC++3.0编译系统,熟悉各菜单的功能,掌握在该系统上的编辑,编译,连接和运行一个C程序的方法。
2.通过调试,运行简单的C程序,初步了解C语言源程序的特点。
实验内容
1.编写一个C程序,求一个圆的面积。
2.编写程序求任意三个数中的最大值。
实验步骤
实验1:
1.首先,求一个圆的面积,必须有一个常量3.14和一个变量半径r。
2.其次,要对定义的变量及常量一个数据类型int。
3.再利用公式s=3.14*r*r就可以求出所要求的圆的面积s。
#include
voidmain()
{
intr,s;
scanf("%d",&r);
s=3.14*r*r;
printf("%d\n",s);
}
实验2:
1.首先确定要输入的数的数据类型int。
2.其次,要针对不同的数作具体分析,要考虑到每一种情况,利用与的逻辑运算符对不同的情况作分析,例如当x>y&&Y>z时与x>z&&Z>y时的比较,此时最大的值都是x。
3.最后可以根据比较的过程输出需要的结果。
4.在输入的时候,只需输入三个符合规定的字符。
然后enter就可以比较出结果了。
#include
voidmain()
{
intx,y,z,c;
scanf("%d,%d,%d",&x,&y,&z);
if(x>y&&y>z)
c=x;
if(y>x&&x>z)
c=y;
if(z>x&&x>y)
c=z;
if(x>z&&z>y)
c=x;
if(y>z&&z>x)
c=y;
if(z>y&&y>x)
c=z;
printf("%d\n",c);
}
实验结果分析
实验1:
求圆的面积分析:
1.在数据类型上的选择问题要注意,若定义的是整型int,则输出的时候格式符也必须是%d。
2.输入时的变量一定要取整,否则输出的结果会出现无法运行的状况。
3.对于常量的使用,可以先定义#define,也可以直接用。
对于结果是一样的,只是若需要重复多次的用到常量,那么较好的办法还是先定义再使用。
实验2:
输出最大数分析:
在比较三个数的大小,找出最大的值中,运用到的是if语句和逻辑表达式,在判断if表达式内的逻辑表达式,如果是真,就执行语句将比较的最大值赋值给t,如果是假的,就不需要执行,接着判断下一个表达式。
指导教师评阅
1、实验态度:
不认真( ),较认真( ),认真( )
2、实验目的:
不明确( ),较明确( ),明确( )
3、实验内容:
不完整( ),较完整( ),完整( )
4、实验步骤:
混乱( ),较清晰( ),清晰( )
5、实验结果:
错误( ),基本正确( ),正确( )
6、实验结果分析:
无( ),不充分( ),较充分( ),充分( )
7、其它补充:
总评成绩:
评阅教师(签字):
评阅时间:
实验
(二)基本数据类型及数据的输入输出
实验时间:
2012.4.9同组人员:
实验目的
1.了解C语言的数据类型,掌握整型,字符型,字符变量定义的方法,赋值的方法。
2.掌握常用的输入输出函数的使用方法,掌握各种格式说明符的功能并能熟练使用。
3.进一步熟悉C程序的编辑,编译和运行的过程。
实验内容
1.调试运行教材例3.1~3.7,深入理解C语言的数据类型。
2.编程实现课本第67页习题3.7和3.8.
实验步骤
实验1:
1.对于课本上的教材案例,了解对符号常量的运用,调试运行程序例3.1
#definePRICF30
#include
voidmain()
{
intnum,total;
num=10;
total=num*PRICF;
printf("total=%d\n",total);
}
2.通过对整型变量的定义与使用的了解,调试运行例3.2
#include
voidmain()
{
inta,b,c,d;
unsignedu;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);
}
3.对整形数据的溢出的理解,调试运行例3.3
#include
voidmain()
{
inta,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
}
4.浮点型数据的舍入误差,例3.4
#include
voidmain()
{
floata,b;
a=123456.789e5;
b=a+20;
printf("%f\n",b);
}
5.通过对转义字符的使用,调试程序例3.5
#include
voidmain()
{
printf("abc\tde\rf\tg\n");
printf("h\ti\b\bjk\n");
}
6.将字符类型进行更改,实现对字符变量赋予整数,调试例3.6
#include
voidmain()
{
charc1,c2;
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
7.例3.7通过对小写字符型数据的加减运算,实现大小写字母的转换。
#include
voidmain()
{
charc1,c2;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
printf("%c%c",c1,c2);
}
实验2:
3.7
1.首先,需要将China的每一个字符c1,c2,c3,c4,c5的字符定义好。
2.然后再分别对每一个字符进行复合的赋值运算,对每一个字符进行+=4的操作。
3.再依次输出赋值运算后的字符。
#include
voidmain()
{
charc1='c',c2='h',c3='i',c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
3.8:
将字符型换为整型,输入程序,输出结果。
#include
voidmain()
{
intc1,c2;
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
实验结果分析
实验1:
例3.1分析:
字符常量PRICF先定义为30,在total=num*PRICF中调用PRICF的值30即可,运算结果没有问题。
例3.2分析:
负数的输入要确保它是有符号整型的输入,因此定义为int型,而进行加减时可以直接用到字符常量,运算结果是正确的。
例3.3分析:
一个整型变量只能容纳-32768~32767范围内的数,若大于32767,系统不会报错,达到最大值后又从最小值开始,因此运行结果为-32768.
例3.4分析:
在这个运算中,浮点型数据的运算,将一个很大的数与一个很小的数直接相加或相减,这样结果就丢失了小的数。
例3.5分析:
转义字符的运用,可以灵活的更改位置,达到我们所需要的效果。
例3.6分析:
这个程序是可以直接把97,98两个整数存放在c1,c2的内存单元中,而c1='a',c2='b',则是将‘a’‘b’转换成ASCII码97,98,然后存放到内存单元中。
当用格式符%c时,输出的就是就直接是字符。
例3.7分析:
每一个小写字母都比它相应的大写字母的ASCII值大32,因此在这里只需要将小写字母减去32就可以得到值。
实验2:
3.8分析:
查看相应的ASCII码可以知道,变化之前的字符的ASCII值与变化后的字符的ASCII小4,因此要得到结果,就是将原来的字符进行复合的赋值运算加4就可以得到正确的值。
3.9分析:
将数据类型字符型改为整型后,运算结果没有问题,说明在输出范围内,用整型和字符型作用是一样的。
指导教师评阅
1、实验态度:
不认真( ),较认真( ),认真( )
2、实验目的:
不明确( ),较明确( ),明确( )
3、实验内容:
不完整( ),较完整( ),完整( )
4、实验步骤:
混乱( ),较清晰( ),清晰( )
5、实验结果:
错误( ),基本正确( ),正确( )
6、实验结果分析:
无( ),不充分( ),较充分( ),充分( )
7、其它补充:
总评成绩:
评阅教师(签字):
评阅时间:
实验(三) 运算符及表达式
实验时间:
2012.4.16同组人员:
实验目的
1.掌握算数运算符,自增自减运算符,赋值运算符,关系运算符,逻辑运算符,条件运算符,逗号运算符,位运算符的功能及对运算对象的要求。
2.掌握各运算符的优先级和结合性。
3.熟悉自动类型转换的规则和强制类型转换。
实验内容
1.调试运行例3.8
2.若有定义intx,y,a,b,c;写出顺序执行下列表达式后x的值,然后通过程序验证。
要求:
先写出运算结果,然后利用程序验证。
3.若有定义inta=2,b=-3,c=4,x=2,y=3;计算下列各表达式的值,然后通过程序验证。
4.完成教材P67页3.9~3.12并上机验证其正确性。
5.完成教材P111页5.3并上机验证其正确性。
实验步骤
实验1:
1.首先定义数据x的数据类型为浮点型float,然后定义i的数据类型为整型。
2.通过强制类型转换把x的数据类型改为整型,然后对i求余。
3.最后通过运算,通过对i的数据类型查看就可以知道强制类型转换是否成功。
#include
voidmain()
{
floatx;
inti;
x=32767.0;
i=(int)x%3;
printf("x=%f,i=%d\n",x,i);
}
实验2:
1.先根据已知条件写出运算结果。
2.在第一个赋值表达式中,只需要将最开始的值赋10值于x就可以了。
3.另外的表达式,有多个不同的运算符类型,针对不同的算术表达式,要根据不同的优先级进行运算,才可以得到正确的值。
#include
voidmain()
{
intx,y,a,b,c;
x=a=b=10;
printf("x=%d\n",x);
y=x=25%(c=3);
printf("x=%d,y=%d\n",x,y);
y+=2+3;
printf("y=%d\n",y);
x/=(x+(y%=2),(a&&5+3));
printf("x=%d\n",x);
x*=x+=x-=x;
printf("x=%d\n",x);
x=((a=4%3,a!
=1),++y>10);
printf("x=%d\n",x);
}
实验3:
1.先根据已知条件写出运算结果。
2.根据提供的程序上机操作验证结果是否正确。
#include
voidmain()
{
inta,b,c,x=2,y=3;
a=2;b=-3;c=4;
printf("a>b&&b>c=%d\n",a>b&&b>c);
a=2;b=-3;c=4;
printf("!
(b>c)+(b!
=x)||(a+b)=%b\n",!
(b>c)+(b!
=x)||(a+b));
a=2;b=-3;c=4;
printf("a++-c+y=%d\n",a++-c+y);
a=2;b=-3;c=4;
printf("++a-c+++b=%d\n",++a-c+++b);
a=2;b=-3;c=4;
printf("b%%=c+a-c/7=%d\n",b%=c+a-c/7);
a=2;b=-3;c=4;
printf("(float)(a+b)/2+y=%f\n",(float)(a+b)/2+y);
a+2;b=-3;c=4;
printf("!
(a==b+c)%%(x-a)=%d\n",!
(a==b+c)&&(x-a));
a=2;b=-3;c=4;
printf("!
c+1+c&&b+c/2=%d\n",!
c+1+c&&b+c/2);
}
实验4:
3.9:
先根据已经条件求出运算结果,在这个3.9算术表达式中,首先应该计算的是强制类型转换,按照题目转换成整型或浮点型,然后再按照计算先乘除后加减的顺序,求出最后的结果。
(1):
#include
voidmain()
{
floatx=2.5,y=4.7;
inta=7,sum;
sum=x+a%3*(int)(x+y)%2/4;
printf("sum=%d\n",sum);
}
(2):
include
voidmain()
{
floatx=3.5,y=2.5,sum;
inta=2,b=3;
sum=(float)(a+b)/2+(int)x%(int)y%y;
printf("sum=%f\n",sum);
}
3.10:
算术表达式中,进行自增自减运算,求出结果。
#include
voidmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
3.11:
首先定义输入的数据的类型,然后根据需要输出不同的数据类型字符型,无符号型还有长整型。
#include
voidmain()
{
inta,b,c,d,e,f,g;
scanf("%d,%d,%d,%d,%d,%d,%d",&a,&b,&c,&d,&e,&f,&g);
printf("%c%u%ld\n",a,a,a);
printf("%c%u%ld\n",b,b,b);
printf("%c%u%ld\n",c,c,c);
printf("%c%u%ld\n",d,d,d);
printf("%c%u%ld\n",e,e,e);
printf("%c%u%ld\n",f,f,f);
printf("%c%u%ld\n",g,g,g);
}
3.12:
在3.12的这几个算术表达式中,都是复合的赋值运算表达式,只需要在每个表达式之前定义a的值为12就可以了。
#include
voidmain()
{
inta=12,n=5;
printf("a+=a=%d\n",a+=a);
a=12;
printf("a-=2=%d\n",a-=2);
a=12;
printf("a*=2+3=%d\n",a*=2+3);
a=12;
printf("a/=a+a=%d\n",a/=a+a);
a=12,n=5;
printf("a%=(n%=2)=%d\n",a%=(n%=2));
a=12;
printf("a+=a-=a*=a=%d\n",a+=a-=a*=a);
}
实验5:
1.在这个逻辑表达式中,需要根据不同的运算符的优先级情况计算结果,不同的优先级情况是!
>算术运算符>关系运算符>&&,||>赋值运算符。
2.再上机验证其结果的正确性。
#include
voidmain()
{
inta,b,c,x,y;
a=3,b=4,c=5;
printf("a+b>c&&b==c%d\n",a+b>c&&b==c);
printf("a||b+c&&b-c%d\n",a||b+c&&b-c);
printf("!
(a>b)&&!
c||1%d\n",!
(a>b)&&!
c||1);
printf("!
(x=a)&&(y=b)&&0%d\n",!
(x=a)&&(y=b)&&0);
printf("!
(a+b)+c-1&&b+c/2%d\n",!
(a+b)+c-1&&b+c/2);
}
实验结果分析
实验1:
例3.8分析:
强制类型转换符的优先级是高于%的,所以先执行转换。
实验2:
调试1分析:
实验结果与完成计算成果一致,在计算过程中注意了不用的运算符的优先级,因此计算运算表达式时应时刻牢记各运算符的优先级先后顺序。
实验3:
调试2分析:
该题与上一题类似,都是需要牢记各运算符的优先级先后顺序!
>算术运算符>关系运算符>&&,||>赋值运算符,以确保结果正确。
实验4
P673.9
(1)分析:
强制类型转换较%,优先级在前,应该先执行,这样的结果运行正确。
也可以将强制类型转换先作为一个运算执行,再加入到运算表达式中运算,结果也正确,
P673.9
(2)分析:
强制类型转换较%和/,优先级在前,应该先执行。
在这个结果中可以看到,浮点型数据与整型数据相加结果应该为浮点型,在格式符的选择上应该注意。
P673.10分析:
从实验结果可以看出:
j的初始值为10,然后进行自增运算后,j的值为11,而n的值10,说明j++是j的值先赋值给n,再进行加1.而++i却不一样,它是先自己加1再赋值给m。
P683.12分析:
根据复合的赋值运算符的算法,就可以求出答案,应该注意的是每个式子都要先定义a的值,否则系统会将上一题的运算结果的a值作为下一题的a起始值带进去运算。
实验5:
分析:
计算逻辑表达式的值,应该要注意逻辑运算符的优先级。
指导教师评阅
1、实验态度:
不认真( ),较认真( ),认真( )
2、实验目的:
不明确( ),较明确( ),明确( )
3、实验内容:
不完整( ),较完整( ),完整( )
4、实验步骤:
混乱( ),较清晰( ),清晰( )
5、实验结果:
错误( ),基本正确( ),正确( )
6、实验结果分析:
无( ),不充分( ),较充分( ),充分( )
7、其它补充:
总评成绩:
评阅教师(签字):
评阅时间:
实验(四) 顺序结构程序设计
实验时间:
2012.4.23 同组人员:
实验目的
1.掌握顺序结构程序的设计思想,领会顺序结构的程序执行时顺序执行时的特点。
2.掌握赋值语句的特点,功能。
实验内容
1.已知三角形的底和高,求三角形的面积。
2.若已知某银行一年定期的存款年利率,输入存款额,计算三年后本利之和并输出。
3.写出下列程序的输出结果。
#include
voidmain()
{
inta=65,b=67,c=67;
floatx=67.8564,y=-789.124;
charC='A';
longn=1234567;
unsignedu=65535;
putchar(c);
putchar('\t');
putchar(c+32);
putchar(a);
putchar('\n');
printf("%d%d\n",a,b);
printf("%c%c\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%lx\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
}
4.写出下列程序的输出结果。
#include
voidmain()
{
chara,*p1=&a;
intb,*p2=&b;
floatc,*p3=&c;
a=getchar();
putchar(*p1);
putchar('\t');
putchar(a>='a'&&a<='z'?
a-32:
a);
putchar('\n');
getchar();
scanf("%c%d%f",&a,&b,&c);
printf("a=%cb=%dc=%2f\n",a,b,c);
getchar();
scanf("a=%cb=%dc=%f",p1,p2,p3);
printf("a=%db=%cc=%2f\n",a,b,c);
}
实验步骤
实验1:
1.首先,求一个三角形的面积,必须有底a和高b这两个变量。
2.其次,要对定义的变量一个字符类型int。
3.再利用公式s=1.0/2*(a*b)就可以求出所要求的三角形的面积s.
#include
voidmain()
{
inta,b,s;
scanf("%d,%d",&a,&b);
s=1.0/2*(a*b);
printf("s=%d\n",s);
}
实验2:
1.首先,求一个存款三年的本息之和sum,必须先确定好输入的本金的数据类型int。
2.通过已知的年利率0.3,利用公式sum=a*(1+0.3)*(1+0.3)+(1+0.3)即可求出三年的本息之和sum。
#include
voidmain()
{
inta,sum;
scanf("%d",&a);
sum=a*(1+0.3)*(1+0.3)*(1+0.3);
printf("%d",sum);
}
实验3:
1.首先程序存在以下几个错误:
大写字母的定义与后来用到的小写字母没有联系,需要将大写字母改写成小写字母。
2.还有c的常量定义是没有任何用处的,因此没有必要对c进行定义。
#include