C语言实验报告.docx

上传人:b****7 文档编号:8841889 上传时间:2023-02-02 格式:DOCX 页数:26 大小:24.28KB
下载 相关 举报
C语言实验报告.docx_第1页
第1页 / 共26页
C语言实验报告.docx_第2页
第2页 / 共26页
C语言实验报告.docx_第3页
第3页 / 共26页
C语言实验报告.docx_第4页
第4页 / 共26页
C语言实验报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言实验报告.docx

《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(26页珍藏版)》请在冰豆网上搜索。

C语言实验报告.docx

C语言实验报告

实验一C程序的运行环境和运行C程序的办法

1.实验目的

(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。

(2)了解在该系统上如何编辑、编译、连接和运行一个C程序。

(3)通过运行简单的C程序,初步了解C源程序的特点。

2.实验内

(1)检查所用计算机系统是否已安装了C编译系统并确定它所在的子目录。

(2)进入所用的集成环境。

(3)熟悉集成环境的界面和有关菜单的使用方法。

(4)输入并运行一个简单的、正确的程序。

①根据本书介绍的方法对源程序进行编译,观察屏幕上显示的编译信息。

若出错则返回修改,无错则连接。

2编译连接无错,运行程序,观察分析运行结果。

(5)输入并编译一个有错误的C程序。

(6)输入并运行一个需要在运行时输入数据的程序。

(7)运行一个自己编写的程序

心得体会:

了解了C程序的运行环境和运行C程序的办法。

在学校机房选用的是TurboC。

实验二数据类型、运算符和表达式

1.实验目的

(1)掌握C语言数据类型、熟悉如何定义一个整型、字符型和实型的变量,以及对他们的赋值方法。

(2)掌握不同数据类型之间的赋值规律。

(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

(4)进一步熟悉C程序的编辑、编译、连接和运行的过程。

2.实验内容和步骤

(1)输入并运行下面程序:

#include

voidmain()

{charc1,c2;

c1='a';

c2='b';

printf("%c%c\n",c1,c2);

}

①运行此程序,结果为:

ab

②在上面printf语句下面再增加一个printf语句:

printf("%d%d\n",c1,c2);

再运行,并分析结果,结果为9798

③将第三行改为

intc1,c2;

再使之运行,并观察结果,结果为9798

④再将第4、5行改为;

c1=a;

c2=b;

再使之运行,并观察结果,结果为运行出错。

⑤再将第4、5行改为:

c1=”a”;

c2=”b”;

再使之运行,并观察结果,结果为404406

⑥再将第4、5行改为:

c1=300;

c2=400;

再使之运行,并观察结果,结果为300400;

心得体会:

在编写C程序时,有些细小的错误会影响结果的正确性。

所以编写的时候要仔细小心。

初步编写完成要回过头来再检查一遍

实验三最简单的C程序设计

1.实验目的

(1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。

(2)掌握各种类型数据的输入输出方法,能正确使用各种格式转换符。

2.实验内容和步骤

(1)通过下面的程序掌握各种格式转换符的正确使用方法。

①输入以下程序

#include

voidmain()

{int‘a’,’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.123456789000

m=50000,n=-60000

p=32768,q=40000

printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);

printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);

getch();

}

②运行此程序并分析结果

a=61,b=62

c1=a,c2=b

d=3.56,e=-6.87

f=3157.890121,g=0.123456789000

m=50000,n=-60000

p=32768,q=40000

③在此结果上,将程序9~14行改为:

a=61,b=62

c1=a,c2=b

d=3.56,e=-6.87

f=3157.890121,g=0.123456789000

m=50000,n=-60000

p=32768,q=40000

运行程序,分析结果a=-15536,b=5536

c1==,c2=>

d=3157.89,e=0.12

f=3157.890121,g=0.123456789000

m=50000,n=-60000

p=50000,q=5536

④改用scanf函数输入程序而不用赋值语句,scanf函数如下

scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q)

输入的数据如下:

61,62,a,b,3.56,-6.87,3157,89.121,0.123456789,50000,-60000,37678,40000

运行结果如下:

61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50000,-60000,37678,40000

a=61,b=62

c1=a,c2=b

d=3.56,e=-6.87

f=3157.890121,g=0.123456789000

m=50000,n=-60000

p=37678,q=40000

⑤在④的基础上将printf改为:

printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);

printf("f=%f,g=%f\nm=%d,n=%d\np=%d,q=%\n",f,g,m,n,p,q);

a=61,b=62

c1=a,c2=b

d=3.560000,e=-6.869999885559

f=3157.890121,g=0.123457

m=-15536,n=0

p=5536,q=-1

⑥将p,q改用%o格式符输出a=61,b=62

c1=a,c2=b

d=3.560000,e=-6.869999885559

f=3157.890121,g=0.123457

m=-15536,n=0

p=12640,q=177777

 

⑦将scanf函数中的%lf和%ld改为%f和%d,运行程序分析结果:

c1=a,c2=b

d=3.560000,e=-6.869999885559

f=0.000000,g=0.000000

m=-15536,n=1824

p=5536,q=1983

(2)按习题4.8要求编写程序,并上机运行。

题目为:

设半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输入数据,输出结果。

输出时要有文字说明,取小数点后两位数字。

#include

main()

{

floatr,h,L,S,S1,V,V1,pi=3.1415926;

printf("r=");

scanf("%f",&r);

printf("h=");

scanf("%f",&h);

L=2*pi*r;

S=pi*r*r;

S1=4*pi*r*r;

V=4/3*(pi*r*r*r);

V1=S*h;

printf("L=%6.2f\nS=%6.2f\nS1=%6.2f\nV=%6.2f\nV1=%6.2f\n",L,S,S1,V,V1);

printf("*********\n");

printf("copyright\n");

printf("*********\n");

getch();

结果:

L=9.42S=7.07S1=28.26V=14.13V1=21.20

(3)编程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符。

上机运行程序,比较用printf和putchar函数输出字符的特点。

代码:

#include

voidmain()

{charc1,c2;

c1=getchar();

c2=getchar();

putchar(c1);

putchar(c2);

printf("%c,%c",c1,c2);

getch();

}

结果:

ab

aba,b

比较,一个putchar函数只可以输出一个字符,而一个print函数可以输出多个字符,并可以用符号连接。

心得体会:

如何在代码中使用不同的函数从而简化代码,优化代码需要我们多加练习,多加体会。

实验四逻辑结构程序设计

1.实验目的

(1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。

(2)学会正确使用逻辑运算符和逻辑表达式。

(3)熟练掌握if语句和switch语句。

(4)结合程序掌握一些简单的算法。

(5)学习调试程序。

2.实验内容

(1)习题5.5。

有一函数:

y=x(x<1)

y=2x-1(1≦x<10)

y=3x-11(x≥10)

用scanf函数输入x的值,求y的值。

运行程序,输入的x(分别为x<1,1~10,x≥10这3中情况),检查输出值的准确性。

#include

voidmain()

{intx,y;

printf("x:

");

scanf("%d",&x);

if(x<1)

{y=x;

printf("x=%3d,y=x=%d\n",x,y);

}

elseif(x<10)

{y=2*x-1;

printf("x=%3d,y=2*x-1=%d\n",x,y);

}

else

{y=3*x-11;

printf("x=%3d,y=3*x-11=%d\n",x,y);

}

}

运行结果:

x:

⑵给出一个百分制绩,要求输入成绩ABCDE。

90分以上的为A,81~89分为B,70~79分为C,60~69分为D,60分以下的为E。

1实现编号程序,要求分别用IF和switch语句来实现。

运行结果,并检查结果。

2在运行一次,输入值为负值,这显然时输入错误,修改程序,是只能正确处理结果,当输入数据>100或<0是,通知用户输入错误,程序结束。

#include

voidmain()

{floatscore;

chargrade;

printf("inputstudent'sscore:

");

scanf("%f",&score);

switch((int)(score))

{case100:

case90:

grade='A';break;

case80:

grade='B';break;

case70:

grade='C';break;

case60:

grade='D';break;

case50:

case40:

case30:

case20:

case10:

case00:

grade='E';break;

}

printf("scoreis%5.1fthegradeis%c\n",score,grade);

getch();

}

(3)给一个不多于5为的正整数,要求1:

起哦出他是几位数,2:

粉笔输出每一位数字3;按逆顺序输出各个数字,例如原数321,应输出123,

·要处理的数为1位正整数;

·要处理的数为2位正整数;

·要处理的数为3位正整数;

·要处理的数为4位正整数;

·要处理的数为5位正整数。

除此之外,程序还应当对不合法的输入作必要的处理,例如:

·输入负数;

·输入的数超过5位(如123456)

代码:

#include

voidmain()

{longx;inta,b,c,d,e;

scanf("%ld",&x);

if(x>=100000||x<0)

{printf("输入错误");}

elseif(x>=0&&x<10)

{printf("它是一位数,数字为:

%d",x);}

elseif(x>=10&&x<100)

{a=x%10;b=x/10;

printf("它是二位数,数字为:

%d,%d",a,b);}

elseif(x>=100&&x<1000)

{a=x%10;b=x/10%10;c=x/100;

printf("它是三位数,数字为:

%d,%d,%d",a,b,c);}

elseif(x>=1000&&x<10000)

{a=x%10;b=x/10%10;c=x/100%10;d=x/1000;

printf("它是四位数,数字为:

%d,%d,%d,%d",a,b,c,d);}

elseif(x>=10000&&x<100000)

{a=x%10;b=x/10%10;c=x/100%10;d=x/1000%10;e=x/10000;

printf("它是五位数,数字为:

%d,%d,%d,%d,%d",a,b,c,d,e);}

getch();

}

结果:

与预期相符。

(4)输入4个整数,要求按由小到大顺序输出。

在得到正确结果后,修改程序使之按由大到小顺序输出。

代码1:

#include

voidmain()

{inta,b,c,d,t;

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(a>d)

{t=a;a=d;d=t;}

if(b>c)

{t=b;b=c;c=t;}

if(b>d)

{t=b;b=d;d=t;}

if(c>d)

{t=c;c=d;d=t;}

printf("%d,%d,%d,%d",a,b,c,d);

getch();

}

代码2:

#include

voidmain()

{inta,b,c,d,t;

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

if(a

{t=a;a=b;b=t;}

if(a

{t=a;a=c;c=t;}

if(a

{t=a;a=d;d=t;}

if(b

{t=b;b=c;c=t;}

if(b

{t=b;b=d;d=t;}

if(c

{t=c;c=d;d=t;}

printf("%d,%d,%d,%d",a,b,c,d);

getch();

心得体会:

循环语句比较复杂,我还要多加练习。

实验五循环控制

1.实验目的

(1)熟悉掌握用while语句、do-while语句和for语句实现循环的方法。

(2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。

(3)进一步学习调试程序。

2.实验内容

编程序并上机调试运行。

(1)输入两个正整数m和n,求他们的最大公约数和最小公倍数

在运行时,输入的值m>n,观察结果是否正确。

再输入时,使m

修改程序,不论m和n为何值,都能得到正确结果。

代码:

#include

#include

voidmain()

{intm,n,i;

scanf("%d,%d",&m,&n);

for(i=fabs(n);i>=1;i--)

{if(n%i==0&&m%i==0)

break;}

printf("%d\n",i);

for(i=1;i<=fabs(m*n);i++)

{if(i%n==0&&i%m==0)

break;}

if(m*n<0)

printf("%d\n",-i);

elseprintf("%d",i);

getch();

}

结果:

与预期结果相符。

(2)输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。

代码:

#include

voidmain()

{chars;

inta,b,c,d,e;

a=0;b=0;c=0;d=0;e=0;

while((s=getchar())!

='\n')

{if(s>='A'&&s<='Z')

a++;

elseif(s>='0'&&s<='9')

b++;

elseif(s=='')

c++;

elseif(s>='a'&&s<='z')

e++;

else

d++;

}

printf("%d,%d,%d,%d,%d",a,b,c,d,e);

getch();

}

结果:

与预期结果相符

(3)用牛顿迭代法求方程2x3-4x2+3x=6在1.5附近的根。

在得到正确结果后。

请修改程序使所设的x初始值由1.5改变为100、1000、10000,在运行,观察结果,分析不同的x处置对结果有没有影响,为什么?

修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。

代码:

#include

#include

voidmain()

{floatx1,x0,f,f1;

scanf("%f",&x1);

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

}

while(fabs(x1-x0)>=1e-5);

printf("%5.2f\n",x1);

getch();

}

结果:

与预期结果相符,x的初始值对于迭代没有影响。

(4)猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。

以后每天早上都吃了前天剩下的一半零一个。

到第10天早上再想吃时,见只剩一个桃子了。

求第一天共摘了多少桃子。

在得到正确结果后,修改题目,改为猴子每天吃了前一天的一半后,再吃两个。

请修改程序并运行,检查结果是否正确。

代码:

#include

voidmain()

{ints,i;

s=1;

for(i=1;i<10;i++)

s=2*(s+1);

printf("%d",s);

getch();

}

结果1534

代码:

#include

voidmain()

{ints,i;

s=1;

for(i=1;i<10;i++)

s=2*(s+2);

printf("%d",s);

getch();

}

结果2556

心得体会:

循环控制也很难,还要多加练习。

实验六数组

1.实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;

(2)掌握字符数组和字符串函数的使用;

(3)掌握与数组有关的算法(特别是排序算法)。

2.实验内容

编程序并上机调试运行

(1)用选择法对10个整数排序。

10个整数用scanf函数输入

代码:

#include

voidmain()

{inta[11],i,j,min,t;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<10;i++)

printf("%d",a[i]);

for(i=0;i<9;i++)

{min=i;

for(j=i+1;j<10;j++)

if(a[j]

min=j;

t=a[i];

a[i]=a[min];

a[min]=t;}

for(i=0;i<10;i++)

printf("%3d",a[i]);

getch();

}

结果:

与预期结果相符

(1)有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数组是数组中第几个元素的值。

如果该数不在数组中,则输出“无此数”。

以15个数用赋初值的方法在程序中给出。

要找的数用scanf函数输入。

代码:

#include

voidmain()

{inta[15],i,x,min,max,sign,loca,mid;

for(i=0;i<15;i++)

scanf("%d",&a[i]);

for(i=0;i<15;i++)

printf("%3d",a[i]);

scanf("%d",&x);

max=14;

min=0;

sign=0;

if(xa[14])

loca=-1;

while((!

sign)&&(min<=max))

{mid=(max+min)/2;

if(x==a[mid])

{loca=mid;

printf("%d",loca+1);

sign=1;}

elseif(x

max=mid-1;

else

min=mid+1;}

if(!

sign||loca==-1)

printf("error");

getch();

}

结果:

与预期结果相符。

(2)将两个字符串连接起来,不要用strcat函数。

代码:

#include

voidmain()

{charstr1[40],str2[40];

inti,j;

i=0;

j=0;

scanf("%s",str1);

scanf("%s",str2);

while(str1[i]!

='\0')

i++;

while(str2[j]!

='\0')

str1[i++]=str2[j++];

str1[i]='\0';

printf("%s",str1);

getch();

}

结果:

与预期结果相符。

(2)找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。

也可能没有鞍点。

应至少准备两组测试数据:

1二维数组有鞍点,例如:

2二维数组没有鞍点,例如:

用scanf函数从键盘输入数组各元素的值,检查结果是否正确。

题目并未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。

因此,从理论上来说,应当准备许多不同行数和列数的数组数据,但这样的工作量太大,一般来说不需要这样做,只需准备典型的数据即可。

如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。

代码:

#include

voidmain()

{inta[4][5],i,j,k,max,maxj,flag;

for(i=0;i<4;i++)

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

for(i=0;i<4;i++)

{max=a[i][0];

maxj=0;

for(j=0;j<5;j++)

if(a[i][j]>max)

{max=a[i][j];

maxj=j;}

flag=1;

for(k=0;k<4;k++)

if(max>a[k][maxj])

{flag=0;continue;}

if(flag)

{printf("%d",max);

break;}}

if(!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1