2012上机实验手册



《2012上机实验手册》由会员分享,可在线阅读,更多相关《2012上机实验手册(14页珍藏版)》请在装配图网上搜索。
1、新视野教育 实验一 熟悉C语言 实验要求: 1、能够熟练使用VC 6.0开发环境; 2、理解C语言顺序结构;熟练掌握printf函数和scanf函数的使用方法。 特别要求: 在实验中遇到困难时,切忌不要动不动就问老师,而是应该先思考。如果确实不能解决困难,先与坐在旁边的同学讨论,而无论这个同学在以前是否认识。如果有同学问你问题,无论你是否能解决这个问题,都应该和他讨论。如果讨论了仍然不能解决问题,就一起问老师。讨论问题的好处在于能够深刻的理解问题,记住问题。 实验内容: 一、 熟悉VC开发环境,详见教材第1页,认真完成上面的求2数之和的练习。 二、理解顺序结构 前面通过最
2、简单的例子熟悉了VC的开发环境,接下来的任务是熟练掌握printf函数和scanf函数。 1、练习printf函数 (1)练习printf中的格式控制字符串。新建一个文件,在TC中输入下面的程序代码: main( ) { int i=2000; float j=2.71828; printf("i=%d,j=%f,j*10=%f\n", i , j ,j*10); } 查看程序的运行结果,将其记录下来: ① 我们将程序中printf函数那一行改为: print
3、f("j*10=%d,i=%f,j=%f\n", i , j ,j*10); 运行程序,记录下运行结果: ② 再将其改为: printf("i is %d,j is %f,j*10 is %f\n", i , j ,j*10); 运行程序,记录下运行结果 ③ 最后将其改为 printf("%d, %f,%f\n", i , j ,j*10); 运行程序
4、,记录下运行结果 ④ 看看这四个结果有什么相同点和不同点,想想在printf函数的格式控制字符串(即双引号引起来的部分)中的i和j有什么作用。 结论:在格式控制字符串中出现的变量名,仅仅起一个提示的作用,它将被原样输出到屏幕上。其有无以及正确与否,均不影响后面值的输出。 (2)练习整数的不同格式控制符。新建一个文件,在VC中输入下面的程序代码: main( ) { int a=32767; printf("%d\n",a); printf("%o\n",
5、a); printf("%x\n",a); } 运行程序,看看相同的变量,在不同格式控制符的控制下,向屏幕输出不同的结果。 (3)练习printf函数对整型数据输出宽度的控制。新建一个文件,在TC中输入下面的程序代码: main( ) { int a=5732; printf("%d\n",a); printf("%6d\n",a); printf("%3d\n",a); } 看看程序的运行结果,记住printf函数对整型数据输出宽度的控制规律。 (3)练习printf函数对实型数据输出宽度的控制。新建一个文件,在TC中输入下面的程序代码: m
6、ain( ) { float a=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)验证整型数据的存储结构。新建一个文件,在TC中输入下面的程序代码: main( ) { int a=-1; p
7、rintf("%d\n",a); printf("%u\n",a); } 用笔把-1在两个字节中的补码计算出来,在与程序第二个输出结果进行比较,想想为什么。 2、练习scanf函数 (1)练习使用scanf函数从键盘输入整型数据。新建一个文件,在TC中输入下面的程序代码: main( ) { int a; scanf("%d",&a); printf("%d\n",a*10); } 运行程序,此时程序将停止在scanf函数中,等待用户的数据输入。因此,用户看到的是一个黑色的屏幕,光标在上面一闪一闪。如果不输入数据,则无论敲多少个回车键,程序均不能结束,也就是不能
8、回到TC的界面。 在屏幕上输入45,再回车。程序运行结束,按Alt+F5查看运行结果。这是会发现在屏幕上输出了数字450,这就是我们要求程序输入的东西。多运行几次程序,每次输入不同的数字,看看运行结果。想想用scanf函数给变量赋值和直接给变量赋值有什么不同。 (2)练习使用scanf函数获取长整型数据。将上一个例子改为如下: main( ) { long a; scanf("%ld",&a); printf("%d\n",a*10); } 注意,%ld中的l是字母l,不是数字1。运行程序,输入数据,看看程序的运行结果,然后将scanf函数中的格式控制符%1d改为%d,即将
9、scanf函数改为: scanf("%d",&a); 运行程序,看看结果,想想为什么。 结论:使用scanf函数输入长整型数据时,必须使用%ld,不得省略字母l。 (3)练习使用scanf函数获取单精度实型数据。新建一个文件,在TC中输入下面的程序代码: main( ) { float a; scanf("%f",&a); printf("%f\n",a*10); } 运行程序,输入数据,查看程序运行结果。 (4)练习使用scanf函数获取双精度实型数据。将上一个例子改为如下: main( ) { double a; scanf("%lf",&a); p
10、rintf("%f\n",a*10); } 运行程序,输入数据。然后去掉%lf中的字母l,再运行程序,输入相同数据,查看程序运行结果。比较两次结果,想想为什么。 结论:使用scanf函数输入双精度实型数据时,必须使用%lf,不得省略字母l。 (5)练习printf和scanf配合使用。新建一个文件,在TC中输入下面的程序代码: main( ) { int a; printf("Input a number:\n"); scanf("%d",&a); printf("%d\n",a); } 运行程序,输入数据,看看程序的运行结果。将程序第三行“printf("
11、Input a number:\n");”删除,再运行程序,输入相同数据,再看看程序的运行结果,想想为什么。 结论:scanf函数前面的printf函数仅仅起到提示作用,其有无或具体是什么内容,均不影响后面的scanf函数。 (6)同时输入多个数据。新建一个文件,在TC中输入下面的程序代码: main( ) { int a; float b,c; scanf("%d%f%f",&a,&b,&c); printf("a=%d,b=%f,c=%f\n",a,b,c); } 注意在scanf函数中%d和两个%f之间均无其它符号。运行程序,输入3个数据。注意这3个数据之间只
12、能以空格、制表符号或回车符隔开,不能以逗号或其它符号隔开。 实验二 选择结构 循环结构 实验要求: 1、熟悉选择结构的语法; 2、熟悉循环结构的语法,能编写简单的程序; 3、学习单步调试程序。 实验内容: 一、选择结构 (1)新建一个文件,输入以下程序代码: main( ) { int a; scanf("%d",&a); if(a>=60) printf("Pass!\n"); else printf("Fail!\n"); } 将程序多运行几遍,每次输入0~100之间不同的数据,看看程序的运行结果。 (2)新建一个文件,输入以下程序代码:
13、 main( ) { int a; scanf("%d",&a); if(a>=90) printf("A\n"); else if(a>=80) printf("B\n"); else if(a>=70) printf("C\n"); else if(a>=60) printf("D\n"); else printf("E\n"); } 将程序多运行几遍,每次输入0~100之间不同的数据,看看程序的运行结果。 (3)新建一个文件,输入以下程序代码: main( ) { int a=4,b=3,c=5,t; if(a
14、 { t=a;a=b;b=t; }
if(a 15、行改变,从而变成了死循环。其症状是屏幕一直停留在DOS界面,不能做任何响应,这时候就需要强制将程序结束。按组合键Ctrl+C可以强制结束程序。
(1)求出1~100之间的和。新建一个文件,输入以下程序代码:
main( )
{ int i=0,s=0;
while(i<=100)
{ s+=i;
i++;
}
printf("%d\n",s);
}
运行程序,查看程序的运行结果。将循环判断条件改为i<100,再运行程序,看看程序的运行结果,分析一下原因。
试着将上面的程序改为do-while循环结构和for循环结构,分别运行程序,查看程序运行结果。
(2 16、)新建一个文件,输入以下程序代码:
main( )
{ int i=1,sum=1;
while(i<=5)
{ sum=sum*i;
i++;
}
printf("%d",sum);
}
运行程序,查看程序的运行结果,分析程序实现的功能。再将上面的程序改为do-while循环和for循环。
(3)新建一个文件,输入以下程序代码:
main( )
{ int a;
do
{ scanf("%d",&a);
if(a>=60)
printf("Pass!\n");
else
printf("Fail!\n");
}wh 17、ile(a!=0)
}
运行程序,输入数据,看看程序的运行结果。当输入数据0时,结束程序的运行。
(4)利用公式π/4=1-1/3+1/5-1/7+1/9-……求π的近似值,直到最后一项的绝对值小于10-4为止。新建一个文件,输入以下程序代码:
#include "math.h"
main( )
{ int i=1,a=1;
float pi=0,s=a*1.0/i;
while(fabs(s)>=1e-4)
{ pi+=s;
a=-a;
i+=2;
s=a*1.0/i;
}
pi*=4;
pr 18、intf("%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的值给 19、b,把b的值给c,把c的值给a。
3、 (提高题)编写程序,输入你的生日,然后再输入当前的日期,程序将输出你的年龄,并输出你在这个世界上存在了多少天。
4、写一个程序计算1到100的和,并改进可以计算任意2个整数之间的和。
实验三 函数
实验要求:
1、熟悉字符型数据的输入输出函数;
2、理解函数,能编写简单的函数;复习前面学习过的内容;
3、熟悉全国计算机等级考试上机考试题型。
实验内容:
一、字符型数据
(1)新建一个文件,输入以下程序代码:
main( )
{ char a;
scanf( 20、"%c",&a);
printf("%c %d\n",a,a);
}
运行程序,输入一个字符,看看运行结果。然后将程序改成使用getchar()函数和putchar()函数进行输入和输出:
main( )
{ char a;
a=getchar( );
putchar(a);
}
(2)编写程序,输出小写字母的ASCII码表。新建一个文件,输入以下程序代码:
main( )
{ int i;
char a;
for(i=0;i<26;i++)
{ a='a'+i;
printf("%c %d ",a,a);
if 21、((i+1)%5==0)
printf("\n");
}
}
运行程序,查看程序的运行结果。如果删除程序的第七行和第八行,即:
main( )
{ int i;
char a;
for(i=0;i<26;i++)
{ a='a'+i;
printf("%c %d ",a,a);
}
}
再运行程序,看看程序的运行结果,比较两次结果的不同点。
二、函数
(1)新建一个文件,输入以下程序代码:
void swap(int x,int y)
{ int t;
t=x; x=y; y=t;
printf("%d %d ", 22、x,y);
}
main( )
{ int a=3,b=4;
swap(a,b);
printf("%d %d\n",a,b);
}
运行程序,看看程序的运行结果,理解函数参数的单向传递。
从第二个实验开始均为全国计算机等级考试上机考题,每题均为40分,请认真练习并熟练掌握。
(2)新建一个文件,输入以下程序代码:
#include 23、;
printf ( "The original data is : %f \n\n ", a );
printf ( "The result : %f\n", fun ( a ) );
}
输入完毕后按F9键编译程序。如果程序没有错误,独立完成fun函数的内容,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。
例如:实型数为 1234.567, 则函数返回 1234.57;实型数为 1234.564, 则函数返回 1234.56。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。以下程序仅供参考:
f 24、loat fun ( float h )
{ long a;
a=h*1000;
a=(a+5)/10;
return a/100.0;
}
(3)新建一个文件,输入以下程序代码:
#include 25、是否能得出正确的结果。以下程序仅供参考:
double fun( int n)
{ int i;
double s=0;
for(i=1;i 26、}
输入代码无勿后独立完成fun函数的内容,函数的功能是:计算并输出下列级数和:
1 1 1
S = ── + ── + … + ───
1×2 2×3 n(n+1)
例如,当n = 10时,函数值为:0.909091。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。以下程序仅供参考:
double fun( int n )
{ int i;
double s=0;
for(i=1;i<=n;i++)
s+=1.0/(i*(i+1) 27、);
return s;
}
(5)新建一个文件,输入以下程序代码:
#include 28、.0005时停止迭代):
π 1 1×2 1×2×3 1×2×3×4 1×2×…×n
─ = 1 + ─ + ─— + ──── + ────── +……+ ────────
2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1)
程序运行后,如果输入精度0.0005,则程序输出为3.14…。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。以下程序仅供参考:
double fun ( double eps)
{ int i=0;
double pi 29、=0,a=1;
while(a>=eps)
{ pi+=a;
i++;
a=a*i/(2*i+1);
}
return pi*2;
}
(6)新建一个文件,输入以下程序代码:
#include 30、
例如,当n = 10,x=0.3时,函数值为1.349859。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。以下程序仅供参考:
double fun(double x , int n)
{ int i;
double s=1,a=1;
for(i=1;i<=n;i++)
{ a=a*x/i;
s+=a;
}
return s;
}
(7)新建一个文件,输入以下程序代码:
#include 31、
}
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。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。以下程序仅供参考:
float fun(int m, int n)
{ int i;
float s 32、,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;
return p;
}
实验四 指针 数组
实验要求:
1、熟悉对指针的操作;
2、熟悉对数组的操作;
3、熟悉全国计算机等级考试上机考试题型。
实验内容:
一、指针
(1)新建一个文件,输入以下程序代码: 33、
main( )
{ int a=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)新建一个文件,输入以下程序代码:
int f( int *a, int *b)
{ int s;
s=*a+*b;
return s;
}
main( )
{ int x=2,y=4,s;
s=f(&x,&y);
printf("%d\n",s);
}
运行程序,查看程序运行结果。
(3)新建一个 34、文件,输入以下程序代码:
void swap(int *a, int *b)
{ int t;
t=*a; *a= *b; *b=t;
}
main( )
{ int x=10, y=20;
printf("(1)x=%d y=%d\n",x,y);
swap(&x,&y);
printf("(2)x=%d y=%d\n",x,y);
}
运行程序,查看程序运行结果。比较其与实验三中函数的第一个实验,看看有什么相同点和不同点,并理解它们之间产生差别的原因。
(4)新建一个文件,输入以下程序代码:
#include 35、 fun(int a, int b, long *c)
{
}
main( )
{ int a,b; long c;
printf("Input a, b:");
scanf("%d%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
}
输入代码无勿后独立完成fun函数的内容,函数的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上 36、。
例如,当a=45,b=12。调用该函数后,c=4251。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。本题为全国计算机等级考试的上机考试题目,分数为40分,请熟练掌握。以下程序仅供参考:
void fun(int a, int b, long *c)
{
*c=a/10*1000+a%10*10+b/10+b%10*100;
}
二、数组
(1)新建一个文件,输入以下程序代码:
main( )
{ int i, n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2+1;
37、 printf("%d",n[i]);
}
}
运行程序,查看程序运行结果。
(2)新建一个文件,输入以下程序代码:
main( )
{ int i;
float sum, aver, b[10]={4,2,8,3,1,10,5,6,12,7};
sum=0;
for(i=0;i<10;i++)
sum+=b[i];
aver=sum / 10;
printf("sum=%d aver=%d",sum,aver);
}
运行程序,查看程序运行结果,分析程序的作用。
(3)新建一个文件,输入以下程序代码:
main( )
{ int i, c 38、nt, b[10]={58,99,60,42,75,64,86,92,100,71};
cnt=0;
for(i=0;i<10;i++)
if(b[i]>=60)
cnt++;
printf("cnt=%d",cnt);
}
运行程序,查看程序运行结果,分析程序的作用。
(4)新建一个文件,输入以下程序代码:
main( )
{ int i, max, min, a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<10;i++)
{ if(max
39、
max=a[i];
}
printf("max=%d",max);
}
运行程序,查看程序运行结果,分析程序的作用。
(5)新建一个文件,输入以下程序代码:
main( )
{ int i,j,a,b[5]={4,2,8,3,1};
for(i=0;i<5;i++)
{ for(j=i;j<5;j++)
{ if(b[i]>b[j])
{ a=b[i];
b[i]=b[j];
b[j]=a;
}
}
}
for(i=0;i<5;i++)
printf(" %d ",b[i]);
}
运行程序,查看程序运行结果,分析程序的作用。
至此,同学们已经对C语言程序有一定程序的了解,可以开始练习上机考试题目了,以后的上机课请带上二级上机题库这本教材来进行考试真题的练习,如果想在课后进行更多的练习,可直接登陆进行学习。
新视野教育
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。