C语言实验报告.docx
- 文档编号:8841889
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:26
- 大小:24.28KB
C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
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;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告