上机实验手册.docx
- 文档编号:30485811
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:25
- 大小:32.43KB
上机实验手册.docx
《上机实验手册.docx》由会员分享,可在线阅读,更多相关《上机实验手册.docx(25页珍藏版)》请在冰豆网上搜索。
上机实验手册
实验一熟悉C语言
实验要求:
1、能够熟练使用VC6.0开发环境;
2、理解C语言顺序结构;熟练掌握printf函数和scanf函数的使用方法。
特别要求:
在实验中遇到困难时,切忌不要动不动就问老师,而是应该先思考。
如果确实不能解决困难,先与坐在旁边的同学讨论,而无论这个同学在以前是否认识。
如果有同学问你问题,无论你是否能解决这个问题,都应该和他讨论。
如果讨论了仍然不能解决问题,就一起问老师。
实验内容:
一、熟悉VC开发环境,详见教材第3页,认真完成上面的求两数之和的练习。
二、理解顺序结构
前面通过最简单的例子熟悉了VC的开发环境,接下来的任务是熟练掌握printf函数和scanf函数。
1、练习printf函数
(1)练习printf中的格式控制字符串。
新建一个文件,在VC中输入下面的程序代码:
#include
main()
{inti=2000;
floatj=2.71828;
printf("i=%d,j=%f,j*10=%f\n",i,j,j*10);
}
查看程序的运行结果,将其记录下来:
①
我们将程序中printf函数那一行改为:
printf("j*10=%d,i=%f,j=%f\n",i,j,j*10);
运行程序,记录下运行结果:
②
再将其改为:
printf("iis%d,jis%f,j*10is%f\n",i,j,j*10);
运行程序,记录下运行结果
③
最后将其改为
printf("%d,%f,%f\n",i,j,j*10);
运行程序,记录下运行结果
④
看看这四个结果有什么相同点和不同点,想想在printf函数的格式控制字符串(即双引号引起来的部分)中的i和j有什么作用。
结论:
在格式控制字符串中出现的变量名,仅仅起一个提示的作用,它将被原样输出到屏幕上。
其有无以及正确与否,均不影响后面值的输出。
(2)练习整数的不同格式控制符。
新建一个文件,在VC中输入下面的程序代码:
main()
{inta=32767;
printf("%d\n",a);
printf("%o\n",a);
printf("%x\n",a);
}
运行程序,看看相同的变量,在不同格式控制符的控制下,向屏幕输出不同的结果。
(3)练习printf函数对整型数据输出宽度的控制。
新建一个文件,在VC中输入下面的程序代码:
main()
{inta=5732;
printf("%d\n",a);
printf("%6d\n",a);
printf("%3d\n",a);
}
看看程序的运行结果,记住printf函数对整型数据输出宽度的控制规律。
(3)练习printf函数对实型数据输出宽度的控制。
新建一个文件,在VC中输入下面的程序代码:
main()
{floata=3.14159;
printf("p=%10f\n",a);
printf("p=%4f\n",a);
printf("p=%.2f\n",a);
printf("p=%.4f\n",a);
printf("p=%2.4f\n",a);
printf("p=%10.4f\n",a);
}
根据本实验记住printf函数对实型数据输出宽度的控制规律,注意对小数位数的舍弃情况。
(4)验证整型数据的存储结构。
新建一个文件,在VC中输入下面的程序代码:
main()
{inta=-1;
printf("%d\n",a);
printf("%u\n",a);
}
用笔把-1在两个字节中的补码计算出来,在与程序第二个输出结果进行比较,想想为什么。
2、练习scanf函数
(1)练习使用scanf函数从键盘输入整型数据。
新建一个文件,在VC中输入下面的程序代码:
main()
{inta;
scanf("%d",&a);
printf("%d\n",a*10);
}
运行程序,此时程序将停止在scanf函数中,等待用户的数据输入。
因此,用户看到的是一个黑色的屏幕,光标在上面一闪一闪。
如果不输入数据,则无论敲多少个回车键,程序均不能结束,也就是不能回到VC的界面。
在屏幕上输入45,再回车。
程序运行结束,按Alt+F5查看运行结果。
这是会发现在屏幕上输出了数字450,这就是我们要求程序输入的东西。
多运行几次程序,每次输入不同的数字,看看运行结果。
想想用scanf函数给变量赋值和直接给变量赋值有什么不同。
(2)练习使用scanf函数获取长整型数据。
将上一个例子改为如下:
#include
main()
{longa;
scanf("%ld",&a);
printf("%d\n",a*10);
}
注意,%ld中的l是字母l,不是数字1。
运行程序,输入数据,看看程序的运行结果,然后将scanf函数中的格式控制符%1d改为%d,即将scanf函数改为:
scanf("%d",&a);
运行程序,看看结果,想想为什么。
结论:
使用scanf函数输入长整型数据时,必须使用%ld,不得省略字母l。
(3)练习使用scanf函数获取单精度实型数据。
新建一个文件,在VC中输入下面的程序代码:
main()
{floata;
scanf("%f",&a);
printf("%f\n",a*10);}运行程序,输入数据,查看程序运行结果。
(4)练习使用scanf函数获取双精度实型数据。
将上一个例子改为如下:
main()
{doublea;
scanf("%lf",&a);
printf("%f\n",a*10);}
运行程序,输入数据。
然后去掉%lf中的字母l,再运行程序,输入相同数据,查看程序运行结果。
比较两次结果,想想为什么。
结论:
使用scanf函数输入双精度实型数据时,必须使用%lf,不得省略字母l。
(5)练习printf和scanf配合使用。
新建一个文件,在VC中输入下面的程序代码:
#include
main()
{inta;
printf("Inputanumber:
\n");
scanf("%d",&a);
printf("%d\n",a);}
运行程序,输入数据,看看程序的运行结果。
将程序第三行“printf("Inputanumber:
\n");”删除,再运行程序,输入相同数据,再看看程序的运行结果,想想为什么。
结论:
scanf函数前面的printf函数仅仅起到提示作用,其有无或具体是什么内容,均不影响后面的scanf函数。
(6)同时输入多个数据。
新建一个文件,在VC中输入下面的程序代码:
#include
main()
{inta;
floatb,c;
scanf("%d%f%f",&a,&b,&c);
printf("a=%d,b=%f,c=%f\n",a,b,c);}
注意在scanf函数中%d和两个%f之间均无其它符号。
运行程序,输入3个数据。
注意这3个数据之间只能以空格、制表符号或回车符隔开,不能以逗号或其它符号隔开。
实验二选择结构循环结构
实验要求:
1、熟悉选择结构的语法;
2、熟悉循环结构的语法,能编写简单的程序;
3、学习单步调试程序。
实验内容:
一、选择结构
(1)新建一个文件,输入以下程序代码:
#include
main()
{inta;
scanf("%d",&a);
if(a>=60)
printf("Pass!
\n");
else
printf("Fail!
\n");
}
将程序多运行几遍,每次输入0~100之间不同的数据,看看程序的运行结果。
(2)新建一个文件,输入以下程序代码:
#include
main()
{inta;
scanf("%d",&a);
if(a>=90)
printf("A\n");
elseif(a>=80)
printf("B\n");
elseif(a>=70)
printf("C\n");
elseif(a>=60)
printf("D\n");
else
printf("E\n");
}
将程序多运行几遍,每次输入0~100之间不同的数据,看看程序的运行结果。
(3)新建一个文件,输入以下程序代码:
#include
main()
{inta=4,b=3,c=5,t;
if(a
if(a printf("%d%d%d\n",a,b,c); } 运行程序,看看程序的运行结果。 再将上面的程序改为: #include main() {inta=4,b=3,c=5,t; if(a if(a printf("%d%d%d\n",a,b,c); } 注意两个程序的区别,运行程序,看看程序的运行结果,比较一下两次结果的不同之处,分析一下原因。 二、循环结构 在编写循环结构程序的时候,往往由于忘记了对循环变量的值进行改变,从而变成了死循环。 其症状是屏幕一直停留在DOS界面,不能做任何响应,这时候就需要强制将程序结束。 按组合键Ctrl+C可以强制结束程序。 (1)求出1~100之间的和。 新建一个文件,输入以下程序代码: #include main() {inti=0,s=0; while(i<=100) {s+=i; i++; } printf("%d\n",s); } 运行程序,查看程序的运行结果。 将循环判断条件改为i<100,再运行程序,看看程序的运行结果,分析一下原因。 试着将上面的程序改为do-while循环结构和for循环结构,分别运行程序,查看程序运行结果。 (2)新建一个文件,输入以下程序代码: #include main() {inti=1,sum=1; while(i<=5) {sum=sum*i; i++; } printf("%d",sum); } 运行程序,查看程序的运行结果,分析程序实现的功能。 再将上面的程序改为do-while循环和for循环。 (3)新建一个文件,输入以下程序代码: #include main() {inta; do {scanf("%d",&a); if(a>=60) printf("Pass! \n"); else printf("Fail! \n"); }while(a! =0); } 运行程序,输入数据,看看程序的运行结果。 当输入数据0时,结束程序的运行。 (4)利用公式π/4=1-1/3+1/5-1/7+1/9-……求π的近似值,直到最后一项的绝对值小于10-4为止。 新建一个文件,输入以下程序代码: #include #include"math.h" main() {inti=1,a=1; floatpi=0,s=a*1.0/i; while(fabs(s)>=1e-4) {pi+=s; a=-a; i+=2; s=a*1.0/i; } pi*=4; printf("%f\n",pi); } 说明: fabs是求绝对值的函数,调用fabs函数必须包含头文件math.h。 运行上面的程序,查看运行结果,思考并验证下面的几个问题: 1、变量a起什么作用; 2、如果将表达式s=a*1.0/i写为s=a/i,结果会怎样;还可以写出那些与这个表达式等价的表达式; 3、如果要提高π值的精度,应如何修改程序。 4、试着编写程序,求e的值。 e≈1+ + + + +…+ 课后练习题: 1、编写程序,任意输入一个正整数,然后把它转换为小时,分钟,秒表示。 如3700,则为1小时1分40秒. 2、编写程序,读入3个整数给a,b,c,然后把它们的值交换,把a的值给b,把b的值给c,把c的值给a。 3、(提高题)编写程序,输入你的生日,然后再输入当前的日期,程序将输出你的年龄,并输出你在这个世界上存在了多少天。 4、写一个程序计算1到100的和,并改进可以计算任意2个整数之间的和。 实验三函数 实验要求: 1、熟悉字符型数据的输入输出函数; 2、理解函数,能编写简单的函数;复习前面学习过的内容; 3、熟悉全国计算机等级考试上机考试题型。 实验内容: 一、字符型数据 (1)新建一个文件,输入以下程序代码: #include main() {chara; scanf("%c",&a); printf("%c%d\n",a,a); } 运行程序,输入一个字符,看看运行结果。 然后将程序改成使用geVChar()函数和puVChar()函数进行输入和输出: #include main() {chara; a=getchar(); putchar(a); } (2)编写程序,输出小写字母的ASCII码表。 新建一个文件,输入以下程序代码: #include main() {inti; chara; for(i=0;i<26;i++) {a='a'+i; printf("%c%d",a,a); if((i+1)%5==0) printf("\n"); } } 运行程序,查看程序的运行结果。 如果删除程序的第七行和第八行,即: #include main() {inti; chara; for(i=0;i<26;i++) {a='a'+i; printf("%c%d",a,a); } } 再运行程序,看看程序的运行结果,比较两次结果的不同点。 二、函数 (1)新建一个文件,输入以下程序代码: #include voidswap(intx,inty) {intt; t=x;x=y;y=t; printf("%d%d",x,y); } main() {inta=3,b=4; swap(a,b); printf("%d%d\n",a,b); } 运行程序,看看程序的运行结果,理解函数参数的单向传递。 从第二个实验开始均为全国计算机等级考试上机考题,每题均为40分,请认真练习并熟练掌握。 (2)新建一个文件,输入以下程序代码: #include floatfun(floath) { /*这里是要考生独立完成程序编写*/ } main() {floata; printf("Entera: "); scanf("%f",&a); printf("Theoriginaldatais: %f\n\n",a); printf("Theresult: %f\n",fun(a)); } 输入完毕后按F9键编译程序。 如果程序没有错误,独立完成fun函数的内容,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。 例如: 实型数为1234.567,则函数返回1234.57;实型数为1234.564,则函数返回1234.56。 完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。 以下程序仅供参考: floatfun(floath) {longa; a=h*1000; a=(a+5)/10; returna/100.0; } (3)新建一个文件,输入以下程序代码: #include #include doublefun(intn) { /*这里是要考生独立完成程序编写*/ } main() {printf("s=%f\n",fun(1000)); } 输入代码无勿后独立完成fun函数的内容,函数的功能是: 求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。 完成编程后运行程序,看看程序是否能得出正确的结果。 以下程序仅供参考: doublefun(intn) {inti; doubles=0; for(i=1;i if(i%3==0&&i%7==0) s+=i; returnsqrt(s); } 注意记住求平方根的函数sqrt的用法。 (4)新建一个文件,输入以下程序代码: #include doublefun(intn) { /*这里是要考生独立完成程序编写*/ } main() {printf("%f\n",fun(10)); } 输入代码无勿后独立完成fun函数的内容,函数的功能是: 计算并输出下列级数和: 111 S=──+──+…+─── 1×22×3n(n+1) 例如,当n=10时,函数值为: 0.909091。 完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。 以下程序仅供参考: doublefun(intn) {inti; doubles=0; for(i=1;i<=n;i++) s+=1.0/(i*(i+1)); returns; } (5)新建一个文件,输入以下程序代码: #include #include doublefun(doubleeps) { /*这里是要考生独立完成程序编写*/ } main() {doublex; printf("Inputeps: "); scanf("%lf",&x); printf("\neps=%lf,PI=%lf\n",x,fun(x)); } 输入代码无勿后独立完成fun函数的内容,函数的功能是: 根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代): π11×21×2×31×2×3×41×2×…×n ─=1+─+─—+────+──────+……+──────── 233×53×5×73×5×7×93×5×…×(2n+1) 程序运行后,如果输入精度0.0005,则程序输出为3.14…。 完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。 以下程序仅供参考: doublefun(doubleeps) {inti=0; doublepi=0,a=1; while(a>=eps) {pi+=a; i++; a=a*i/(2*i+1); } returnpi*2; } (6)新建一个文件,输入以下程序代码: #include #include doublefun(doublex,intn) { /*这里是要考生独立完成程序编写*/ } main() {printf("%f\n",fun(0.3,10)); } 输入代码无勿后独立完成fun函数的内容,函数的功能是计算下列级数和,和值由函数值返回。 例如,当n=10,x=0.3时,函数值为1.349859。 完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。 以下程序仅供参考: doublefun(doublex,intn) {inti; doubles=1,a=1; for(i=1;i<=n;i++) {a=a*x/i; s+=a; } returns; } (7)新建一个文件,输入以下程序代码: #include floatfun(intm,intn) { /*这里是要考生独立完成程序编写*/ } main() {printf("P=%f\n",fun(12,8));} 输入代码无勿后独立完成fun函数的内容,函数的功能是: 根据以下公式求P的值,结果由函数值带回。 m与n为两个正整数且要求m>n。 m! P=───── n! (m-n)! 例如: m=12,n=8时,运行结果为495.000000。 完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。 以下程序仅供参考: floatfun(intm,intn) {inti; floats,p; s=1; for(i=1;i<=m;i++)s*=i; p=s; s=1; for(i=1;i<=n;i++)s*=i; p=p/s; s=1; for(i=1;i<=m-n;i++)s*=i; p=p/s; returnp; } 实验四指针数组 实验要求: 1、熟悉对指针的操作; 2、熟悉对数组的操作; 3、熟悉全国计算机等级考试上机考试题型。 实验内容: 一、指针 (1)新建一个文件,输入以下程序代码: #include main() {inta=7,b=8,*p,*q,*r; p=&a;q=&b; r=p;p=q;q=r; printf("%d,%d,%d,%d\n",*p,*q,a,b); } 运行程序,查看程序运行结果。 (2)新建一个文件,输入以下程序代码: #include intf(int*a,int*b) {ints; s=*a+*b; returns; } main() {intx=2,y=4,s; s=f(&x,&y); printf("%d\n",s); } 运行程序,查看程序运行结果。 (3)新建一个文件,输入以下程序代码: #include voidswap(int*a,int*b) {intt; t=*a;*a=*b;*b=t; } main() {intx=10,y=20; printf(" (1)x=%dy=%d\n",x,y); swap(&x,&y); printf(" (2)x=%dy=%d\n",x,y); } 运行程序,查看程序运行结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 实验 手册