高级计算机语言实验指导书文档格式.docx
《高级计算机语言实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《高级计算机语言实验指导书文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
Debug检查、改变变量的值,查找函数,程序运行时查看调用栈。
选择程序编译时是否在执行行代码中插入调试信息
Break/Watch增加、删除、编辑监视表达式,设置、清除、执行至断点处
4、输人并运行一个简单的程序
(1)再选择File菜单中的New并按回车键,使编辑窗口变成空白
(2)输入下面的程序。
#include<
stdio.h>
intmain(void)
{
printf((″Programmingisfun.″);
/*输出一串字符*/
return0;
/*向操作系统返回一个数字0*/
}
(3)按功能键F9进行编译和连接,观察屏幕上显示的编译信息。
如果出现“出错信息”,则应找出原因并改正之,再进行编译。
(4)如果编译无错误,按Ctrl和F9键使程序运行,按Alt和F5键,切换到用户屏,观察分析运行结果。
5、输人并编辑一个C程序
(1)再选择FileNew,使编辑窗口变成空白。
(2)输人以下程序(故意漏打或打错几个字符)。
intadd(int,int);
/*声明将要使用的函数add()*/
{
ints;
/*声明将要使用的变量s是整型的*/
s=add(2,3);
/*调用add()进行计算,并用s接收结果*/
printf("
Thesumis:
%d"
s);
/*输出s的值*/
return0;
}
intadd(inta,intb)/*函数add()的定义*/
intsum;
/*定义一个整数sum,用于存放和*/
sum=a+b;
/*将a和b求和,并把结果赋给sum*/
returnsum;
/*返回sum的值到调用程序*/
(3)按F9进行编译,仔细分析编译信息窗口和Message窗口,可能显示有多个错误,逐个修改,直到不出现错误。
请与教材上的程序对照。
(4)运行程序,分析运行结果。
6、输人并运行一个需要在运行时输人数据的程序
#include<
intmax(intx,inty);
voidmain()
inta,b,c;
scanf(“%d,%d”,&
a,&
b);
c=max(a,b);
printf(“max=%d\n”,c);
}
/*max函数的功能是计算出x和y的最大值并返回*/
intmax(intx,inty)
intz;
if(x>
y)z=x;
elsez=y;
return(z);
(1)编译并运行,在运行时从键盘输人整数2和5,然后按回车键,观察运行结果。
(2)将程序中的第2行改为:
Inta;
b;
c;
再进行编译,观察其结果。
(3)将子程序max的第3,4两行合并为一行,即
if(x>
y)z=x;
elsez=y;
进行编译和运行,分析结果。
实验2数据类型、运算符和表达式
一、实验目的
(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它赋值的方法。
(2)掌握不同的类型数据之间赋值的规律。
(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
(4)进一步熟悉C程序的编辑、编译、连接和运行的过程。
1、输人并运行下面的程序
(1)运行此程序。
(2)在此基础上增加一个语句:
再运行,并分析结果。
(3)将第2行改为:
再使之运行,并观察结果。
(4)再将第3、4行改为:
再使之运行,分析其运行结果。
(5)再将第3、4行改为:
(6)再将第3、4行改为:
2、输人并运行程序
在上机前先用人工分析程序,写出应得结果,上机后将二者对照
3、输人并运行下面的程序
请对照程序和运行结果分析:
(1)将一个负整数赋给一个无符号的变量,会得到什么结果。
画出它们在内存中的表示形式。
(2)将一个大于32767的长整数赋给整型变量,会得到什么结果。
(3)将一个长整数赋给无符号变量,会得到什么结果(分别考虑该长整数的值大于或等于65535以及小于65535的情况)。
读者可以改变程序中各变量的值,以便比较。
例如:
a=65580,b=40000,e=65535,f=65580。
4、输人并运行下面的程序
(1)运行程序,注意i、j、m、n各变量的值,分别作以下改动并运行。
(2)将第4、5行改为:
再运行。
(3)将程序改为:
(4)在(3)的基础上,将Printf语句改为:
(5)再将Printf语句改为:
(6)将程序改为
实验3最简单的C程序设计
(1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。
(2)掌握各种类型数据的输人输出的方法,能正确使用各种格式转换符。
1、掌握各种格式转换符的正确使用方法
#include“stdio.h”
intmain()
{inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedintp,q;
a=61;
b=62;
c1=‘a’;
c2=‘b’;
d=3.56;
e=-6.78;
f=3157.890121;
g=0.123456789;
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);
return(0);
运行此程序并分析结果。
改用scanf函数输入数据而不用赋值语句,scanf函数如下:
输人的数据如下:
61,62,a,b,3.5,-6.87,3157.890121,0.123456789,50000,-60000,37678,40000分析运行结果。
将p、q改用%0格式符输出。
将scanf函数中的%lf和%ld改为%f和%d,运行程序并观察分析结果。
2、设圆半径
,圆柱高
,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字。
说明:
(a)程序设计中使用的所有变量均为float类型
(b)圆周长公式:
(c)圆面积公式:
(d)圆球表面积公式:
(e)圆球体积公式:
(f)圆柱体积公式:
参考程序如下:
#include<
#definePI3.14
main()
floatr=1.5,h=3;
floatl,s1,s2,v1,v2;
l=2*PI*r;
s1=PI*r*r;
s2=4*PI*r*r;
v1=4*PI*r*r*r/3;
v2=PI*r*r*h;
l=%.2f\n"
l);
s1=%.2f\n"
s1);
s2=%.2f\n"
s2);
v1=%.2f\n"
v1);
v2=%.2f\n"
v2);
实验4逻辑运算和判断选取控制
(l)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握if语句和switch语句。
(4)结合程序掌握一些简单的算法。
(5)学习调试程序。
二、实验内容
本实验要求事先编好解决下面问题的程序,然后上机输人程序并调试运行程序。
1、有一函数:
用scanf函数输人x的值,求y值。
运行程序,输人x的值(分别为x<
1、1
x<
10、x
10三种情况),检查输出的y值是否正确。
floatx,y;
inputx:
"
);
scanf("
%f"
&
x);
if(x<
1)
y=x;
if(x>
=1&
&
x<
10)
y=2*x-1;
=10)
y=3*x-11;
y=%f\n"
y);
2、给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。
事先编好程序,要求分别用if语句和switch语句实现。
运行程序,并检查结果是否正确。
再运行一次程序,输人分数为负值(如-70),这显然是输人时出错,不应给出等级。
修改程序,使之能正确处理任何数据。
当输人数据大于100或小于。
时,通知用户“输入数据错”,程序结束。
#include"
stdio.h"
{
intscore;
chargrade;
printf("
\npleaseinputastudentscore:
scanf("
score);
if(score>
100||score<
0)
\ninputerror!
/*程序中对用户可能的错误输入,进行的出错处理*/
else
=90)
grade='
A'
;
if(score>
=80)
B'
=70)
C'
=60)
D'
elsegrade='
E'
\nthestudentgrade:
%c"
grade);
实验5循环控制
熟悉掌握用while语句,do-while语句和for语句实现循环的方法。
掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
进一步学习调试程序。
1、输入两个正整数
和
,求其最大公约数和最小公倍数
(a)最大公约数:
能够被
同时整除的最大正整数
(b)最小公倍数:
相乘的积除以最大公约数
(c)使用for循环,将
同时除以1到
(
为
两者中较小者),直到找出最大的正整数即为最大公约数
(d)输出格式如下:
Thegreatestcommondivisoris*!
Theleastcommonmultipleis*!
intm,n,temp;
inti;
intgreat,least;
inputm,n:
%d,%d"
m,&
n);
if(m>
n)
temp=m;
m=n;
n=temp;
for(i=1;
i<
=m;
i++)
if(n%i==0&
m%i==0)
great=i;
least=m*n/great;
Thegreatestcommondivisoris%d\n"
great);
Theleastcommonmultipleis%d\n"
least);
2、求1!
+2!
+……+20!
(a)首先要求出每一项的n!
的值
(b)然后把各项相加得到所求的值
(c)存储求和运算结果的变量的初始值应为0
(d)存储求积运算结果的变量的初始值应为1
①使用while循环
floatsum=0;
floatmid=1;
intn=1;
while(n!
=21)
mid=mid*n;
n++;
sum=sum+mid;
sum=%f\n"
sum);
②使用for循环
intn;
for(n=1;
n<
=20;
n++)
3、用牛顿迭代法求方程2x
-4x
+3x-6=0在1.5附近的根。
在得到正确结果后,请修改程序使所设的x初值由1.5改变为100、1000、10000,再运行,观察结果,分析不同的x初值对结果有没有影响,为什么?
修改程序,使之能输出迭代的次数和每次迭代的结界,分析不同的x初始值对迭代的次数有无影响。
math.h>
floatx,x0,f,f1;
x=1.0;
do
x0=x;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x=x0-f/f1;
}while(fabs(x-x0)>
=1e-5);
printf(“%6.2f”,x);
实验6数组
(1)掌握一维数组和二维数组的定义、赋值和输人输出的方法;
(2)掌握字符数组和字符串函数的使用;
(3)掌握与数组有关的算法(特别是排序算法)。
二、实验内容编程序并上机调试运行。
1、从键盘输入10个整数,对这个十个数进行排序,并输出。
(a)将这10个整数存入一个含有10个元素的一维数组中
(b)冒泡法:
从第一个数开始依次让相邻的两个数进行比较,如次序对则不做任何操作;
如次序不对则使这两个数交换位置。
第一遍比较后,最大的数已放在最后,第二遍只需考虑剩下的数,以此类推直到最后两个数比较后就可以完成排序。
(c)比较完成后将数组中元素依次输出
intnum[10];
inti,j;
inttemp;
input10numbers:
for(i=0;
10;
scanf("
num[i]);
=8;
for(j=0;
j<
9-i;
j++)
{
if(num[j]>
num[j+1])
{
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
thesortednumbers:
printf("
%d"
num[i]);
2、已有一个已排好序的数组,从键盘输入一个数,要求按原来排序的规律将它插入数组中。
(a)需要保证数组的元素据个数比插入前多1,
(b)需要找到在数组中插入的位置,
(c)可倒序查找:
假设从小到大排序,从最后一个开始查找,如果要插入元素比当前数组元素小则将该数组元素赋予后边一个元素,继续比较;
否则将要插入元素赋予该数组元素的下一个元素,然后break结束循环,
(d)输入该数组即可。
inta[10]={0,1,2,4,5,6,7,8,9};
intb=3;
for(i=8;
i>
=0;
i--)
if(a[i]>
b)
a[i+1]=a[i];
else
a[i+1]=b;
break;
Thenewsortedarrayis"
a[i]);
3、将两个字符串连接起来,不要用strcat函数。
(a)将连个字符串存入两个字符串数组中,要保证第一个字符串的长度能够容纳两个字符串之和,
(b)连接两个字符串主要是找到第一个字符串的结尾,然后将第二个字符串连接到第二个字符串的后边,
(c)输出格式为:
Theconnectedstringis*!
charstr1[50],str2[20];
inputstring1:
%s"
str1);
getchar();
inputstring2:
str2);
str1[i]!
='
\0'
i++);
for(j=0;
str2[j]!
j++,i++)
str1[i]=str2[j];
str1[i]='
Theconnectedstringis%s\n"
4、从键盘输入一串字符串,统计字符串中特定字符的个数(特定字符也需要从键盘输入),并输出个数。
(a)输入时需要用到的输入格式控制字是%s,
(b)字符串存入一个足够大的字符数组中,保证输入的字符个数不要超过最大个数,
(c)使用循环控制语句,需要了解字符数组的结束标志是’\0’,作为循环的结束标志,
Thenumberof*is*!
charstr[50];
charch;
intcount=0;
inti=0;
inputastring:
str);
inputthechar:
ch);
while(str[i]!
)
if(str[i]==ch)
count++;
i++;
Thenumberof%cis%d!
\n"
ch,count);
实验7函数
(l)掌握定义函数的方法;
(2)掌握函数实参与形参的对应关系以及“值传递”的方式;
(3)掌握函数的嵌套调用和递归调用的方法;
(4)掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
(5)学习对多文件程序的编译和运行。
1、写一个判别素数的函数,在主函数输人一个整数,输出是否素数的信息。
本程序应当准备以下测试数据:
17、34、2、1、O。
分别输人数据,运行程序并检查结果是否正确。
(a)判断素数的函数名为Prime