上机实验手册.docx

上传人:b****8 文档编号:30574866 上传时间:2023-08-16 格式:DOCX 页数:26 大小:33.46KB
下载 相关 举报
上机实验手册.docx_第1页
第1页 / 共26页
上机实验手册.docx_第2页
第2页 / 共26页
上机实验手册.docx_第3页
第3页 / 共26页
上机实验手册.docx_第4页
第4页 / 共26页
上机实验手册.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

上机实验手册.docx

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

上机实验手册.docx

上机实验手册

实验一熟悉C语言

实验要求:

1、能够熟练使用VC6.0开发环境;

2、理解C语言顺序结构;熟练掌握printf函数和scanf函数的使用方法。

特别要求:

在实验中遇到困难时,切忌不要动不动就问老师,而是应该先思考。

如果确实不能解决困难,先与坐在旁边的同学讨论,而无论这个同学在以前是否认识。

如果有同学问你问题,无论你是否能解决这个问题,都应该和他讨论。

如果讨论了仍然不能解决问题,就一起问老师。

讨论问题的好处在于能够深刻的理解问题,记住问题。

实验内容:

一、熟悉VC开发环境,详见教材第3页,认真完成上面的求2数之和的练习。

掌握软件的基本操作、程序开发流程。

开发流程:

编辑—》编译—》链接—》执行

二、理解顺序结构

前面通过最简单的例子熟悉了VC的开发环境,接下来的任务是熟练掌握printf函数和scanf函数。

1、练习printf函数

(1)练习printf中的格式控制字符串。

新建一个文件,在VC中输入下面的程序代码:

main()

{inti=2000;

floatj=2.718;

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);

}

运行程序,看看相同的变量,在不同格式控制符的控制下,向屏幕输出不同的结果。

(2)练习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函数从键盘输入整型数据。

新建一个文件,在TC中输入下面的程序代码:

main()

{inta;

scanf("%d",&a);

printf("%d\n",a*10);

}

运行程序,此时程序将停止在scanf函数中,等待用户的数据输入。

因此,用户看到的是一个黑色的屏幕,光标在上面一闪一闪。

如果不输入数据,则无论敲多少个回车键,程序均不能结束,也就是不能回到TC的界面。

在屏幕上输入45,再回车。

程序运行结束,按Alt+F5查看运行结果。

这是会发现在屏幕上输出了数字450,这就是我们要求程序输入的东西。

多运行几次程序,每次输入不同的数字,看看运行结果。

想想用scanf函数给变量赋值和直接给变量赋值有什么不同。

(2)练习使用scanf函数获取长整型数据。

将上一个例子改为如下:

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配合使用。

新建一个文件,在TC中输入下面的程序代码:

main()

{inta;

printf("Inputanumber:

\n");

scanf("%d",&a);

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

}

运行程序,输入数据,看看程序的运行结果。

将程序第三行“printf("Inputanumber:

\n");”删除,再运行程序,输入相同数据,再看看程序的运行结果,想想为什么。

结论:

scanf函数前面的printf函数仅仅起到提示作用,其有无或具体是什么内容,均不影响后面的scanf函数。

(6)同时输入多个数据。

新建一个文件,在VC中输入下面的程序代码:

main()

{inta,b;

floatc,d;

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

printf("a=%d,b=%d,c=%f,d=%6.1f\n",a,b,c,d);

}

运行程序,按照以下格式输入数据:

12345<空格>89.75<回车>

观察结果并思考为什么?

实验二选择结构循环结构

实验要求:

1、熟悉选择结构的语法;

2、熟悉循环结构的语法,能编写简单的程序;

3、学习单步调试程序。

实验内容:

一、选择结构

(1)新建一个文件,输入以下程序代码:

main()

{inta;

scanf("%d",&a);

if(a>=60)

printf("Pass!

\n");

else

printf("Fail!

\n");

}

将程序多运行几遍,每次输入0~100之间不同的数据,看看程序的运行结果。

(2)新建一个文件,输入以下程序代码:

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");

}

1.将程序多运行几遍,每次输入0~100之间不同的数据,看看程序的运行结果。

2.将以上程序改为switch结构,实现以上功能。

3.编写程序实现计算器的功能(含+、-、*、/、%功能)

①输入:

5+2

输出:

5+2=7

②输入:

8/5

输出:

8/5=1

(3)新建一个文件,输入以下程序代码:

main()

{inta=4,b=3,c=5,t;

if(a

if(a

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

}

运行程序,看看程序的运行结果。

再将上面的程序改为:

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之间的和。

新建一个文件,输入以下程序代码:

main()

{inti=0,s=0;

while(i<=100)

{s+=i;

i++;

}

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

}

运行程序,查看程序的运行结果。

将循环判断条件改为i<100,再运行程序,看看程序的运行结果,分析一下原因。

试着将上面的程序改为do-while循环结构和for循环结构,分别运行程序,查看程序运行结果。

(2)新建一个文件,输入以下程序代码:

main()

{inti=1,sum=1;

while(i<=5)

{sum=sum*i;

i++;

}

printf("%d",sum);

}

1.运行程序,查看运行结果,分析程序实现的功能。

再将以上程序改为do-while循环和for循环。

 

循环结构

说明:

做题时大家可以相互讨论、相互检查

Mostimportant:

总结循环题目编程规律

1.练习循环:

考试通常求若干项和或求积;编写代码注意一下几点:

练习题1:

编写程序求sum的值,其中sum=sum=1+2+3+…+n,n从键盘输入。

练习题2:

编写代码实现功能sum=1+1/2+1/3+….+1/n,n从键盘输入;例如输入n值为2,则输出1.500000。

练习题3:

利用公式π/4=1-1/3+1/5-1/7+1/9-……求π的近似值,直到最后一项的绝对值小于10-4为止。

练习题4:

编写程序实现功能:

计算并输出下列级数和:

111

S=──+──+…+───

1×22×3n(n+1)

例如,当n=10时,函数值为:

0.909091。

练习题5:

程序的功能是计算下列级数和,x和n从键盘输入。

 

例如,当n=10,x=0.3时,函数值为1.349859。

练习题6:

请编写程序实现功能:

统计2至n之间的素数个数(含2和n),n值从键盘输入。

例如输入:

n=12

输出:

12以内的素数个数为:

5

Mostimportant:

总结循环题目编程规律

2.练习上机考试模拟系统,熟悉上机考试流程。

(3)新建一个文件,输入以下程序代码:

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"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)新建一个文件,输入以下程序代码:

main()

{chara;

scanf("%c",&a);

printf("%c%d\n",a,a);

}

运行程序,输入一个字符,看看运行结果。

然后将程序改成使用getchar()函数和putchar()函数进行输入和输出:

main()

{chara;

a=getchar();

putchar(a);

}

(2)编写程序,输出小写字母的ASCII码表。

新建一个文件,输入以下程序代码:

main()

{inti;

chara;

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

{a='a'+i;

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

if((i+1)%5==0)

printf("\n");

}

}

运行程序,查看程序的运行结果。

如果删除程序的第七行和第八行,即:

main()

{inti;

chara;

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

{a='a'+i;

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

}

}

再运行程序,看看程序的运行结果,比较两次结果的不同点。

二、函数

(1)新建一个文件,输入以下程序代码:

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)新建一个文件,输入以下程序代码:

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)新建一个文件,输入以下程序代码:

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)新建一个文件,输入以下程序代码:

voidswap(int*a,int*b)

{intt;

t=*a;*a=*b;*b=t;

}

main()

{intx=10,y=20

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

当前位置:首页 > 小学教育

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

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