《C语言程序设计》实验指导书

  • 格式:doc
  • 大小:95.00 KB
  • 文档页数:17

下载文档原格式

  / 17
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5函数定义和使用
⒈ 实验目的
⑴学习C语言中函数的定义和调用方法。
⑵掌握通过参数在函数间传递数据的方法。
⑶熟悉TC集成环境对包含函数调用的程序的调试方法。
⒉ 实验题目
A:修改调试题目:
题目⑴:调试下列程序,使之具有如下功能:fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数平均值。写出调试过程。
题目⑵:编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如:153就是一个水仙花数:153 = 13 + 53 + 33
实验6编译预处理
⒈ 实验目的
⑴掌握宏定义的规则,领会带参数宏定义和函数调用的区别。
⑵了解文件包含命令的功能和使用规则。
⑶进一步熟悉C程序的编辑、编译、连接和运行的过程。
⒉实验内容
用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入?
请书写程序
#include“stdio.h”
void main()
{int a,b;
floatx,y;
charc1,c2;
}
fun(int n)/*判断输入的整数是否为素数*/
{ int i,y=0;
for(i=2;i<n;i++)
if(n%i==0) y=1;
else y=0;
return y;
}
题目⑵:调试以下程序并查看运行结果:
#include“stdio.h”
void main()
{int a=1,b=2,c;
scanf("%d",a[i]);
for(i=0;i<n;i++)
{ printf("%d",a[i]);
if(i%3==0)printf("\n");
}
for(i=0;i!=n;i++)
av+=a[i];
printf("av=%f\n",av);
}
上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请注意变量的初值问题、输出格式问题等。请使用前面实验所掌握的调试工具,判断程序中的错误并改正。在程序运行过程中,可以使用<Ctrl>+<Break>键终止程序的运行,返回到TC环境。
⒉实验内容和步骤
⑴检查所用的计算机系统是否已安装了C编译系统并确定他所在的子目录。
⑵进入所用的集成环境。
⑶熟悉集成环境的界面和有关菜单的使用方法。
⑷输入并运行一个简单的、正确的程序。
⒊实验题目
⑴输入下面的程序
# include“stdio.h”
void main()
{ printf(“This is a c program.\n”);
scanf(“a=%d b=%d”,&a,&b);
scanf(“%f %e”,&x,&y);
scanf(“%c %c”,&c1,&c2);
printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”);
}
运行,并按照如下方式在键盘上输入:
A=3 b=7
8.5 71.82
Aa
运行结果:
⑵掌握字符数组和字符串函数的使用。
⒉实验内容
A:修改调试题目:
调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。
#include“stdio.h”
void main()
{ int i,n,a[10],av;
for(i=0;i<n;i++)
⒈实验目的
⑴掌握数组名作为函数参数的基本使用方式。
⑵掌握与数组有关的算法(特别是排序算法)。
⒉实验内容
编程题目:(题目⑴、题目⑵为一组,题目⑶为一组。每个同学每组都必须完成1题)
要求:每道题目分别书写程序,试运行(如何输入,结果如何)。
题目⑴:编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存入数组,调用函数后输出数组的元素。
题目⑶:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少桃子。
要求:每道题目分别画出程序流程图,书写程序,试运行(如何输入,结果如何)。
A=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a
思考:为什么在第三个scanf函数双引号第一个字符为空格字符,如果没有这个空格字符,而写成:scanf(“%c %c”,&c1,&c2);按以上的输入、输出将如何变化?请分析原因
实验3选择结构程序设计
⒈实验目的
⑴了解C语言表示逻辑量的方法(以0代表”假”,以非0代表”真”)。
#define D"%D"
#define D1D NL
#define D2D D NL
#define D3D D D NL
#define D4D D D D NL
#define S"%S"
⑵文件file1.C包含以下内容:
#include "format.h"
voidmain()
{inta,B,C,D;
⑵学会正确使用逻辑运算符和逻辑表达式。
⑶熟练掌握if语句和switch语句。
⑷结合程序掌握一些简单的算法。
⑸学习调试程序。
⒉实验内容
题目⑴:有3个整数a、b、c,由键盘输入,输出其中最大的数。
题目⑵:求三位数的水仙花数。
要求:每道题目分别画出程序流程图,书写程序,试运行(如何输入,结果如何)。
实验4、循环结构程序设计
c=max(a,b);
printf("max is %d\n",c);
}
max(int x,int y)//请回答:函数功能是什么?
{int x;
z=(x>y)?x:y;
return(z);
}
题目⑵:调试以下程序并查看运行结果:
int a=5;int b=7;
#include“stdio.h”
void main()
#include "format.h"
void main()
{int j,k,a[12],*p;
for(j=0;j<12;j++)
scanf("%d",p++);
for(j=0;j<12;j++)
{printf("%d",*p++);
if(j%4 == 0)printf("\n");
}
}
调试该程序时将a设置为一个"watch",数组a所有元素的值在一行显示出来。调试时注意指针变量指向哪个目标变量。
⑶了解条件编译的特点和功能。
⒉ 实验内容
A宏定义及其应用
⑴以下程序的运行结果是____。
#define MIN(x,y) (x)<(y)?(x):(y)
#include“stdio.h”
void main()
{int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
charstring[]="CHINA";
a=1;B=2;C=3;D=4;
PR(D1,a);
PR(D2,a,B);
PR(D3,a,B,C);
PR(D4,a,B,C,D);
PR(S,string);
}
调试并察看运行结果。注意文件保存的路径。
实验7数组应用编程
⒈实验目的
⑴掌握一维数组和二维数组定义、赋值和输入输出的方法。
# include“stdio.h”
void main()
{intk,g;
k=017;g=111;
print(“%d\t”,++k);
printf(“%x\n”,g++);
}
运行结果为:
实验2顺序结构程序设计
⒈实验目的
⑴掌握C语言中赋值语句的使用方法。
⑵掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
#include“stdio.h”
void main()
{ int a=0,k;/* a保存素数之和*/
float av;/* av保存1000以内素数的平均值*/
for(k=2;k<=1000;k++)
if(fun(k))/*判断k是否为素数*/
a+=k;
av=a/1000;
printf("av=%f\n",av);
}
程序无误,其运行的结果为:(请填写)
⑵输入并编辑一个有错误的C程序。
# include“stdio.h”
void main()
{int a,b,sum
a=123; b=456;
sum=a+b
print(“sum is %d\n”,sum);
}
运行后程序出现几处Baidu Nhomakorabea误,请分别指出,并逐一更改:
⑶若k,g均为int型变量,则下列语句的输出为,:
incy();
}
incx()
{ int x=0;
printf("x=%d\t",++x);
}
incy()
{ static int y=0;
printf("\ny=%d\n",++y);
}
B“文件包含”处理测试
⑴文件format.h包含以下内容:
#define PRprintf
#define NL"\n"
②求出对角线上行、列下标均为偶数的各元素的积;
③找出对角线上其值最大的元素和它在数组中的位置。
实验9使用指针处理数组
⒈ 实验目的
⑴掌握指针变量的定义与引用。
⑵掌握指针与变量、指针与数组的关系。
⑶掌握用数组指针作为函数参数的方法。
⒉ 实验题目
A:修改调试题目:
题目⑴:调试下列程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。
main()
{ int a=3,b=4,c;
c=MUL(a++,b++);
printf("%d\n",c);
}
上面程序的输出结果是______。
⑷以下程序的运行结果是_____.
#include“stdio.h”
void main()
{incx();
incy();
incx();
incy();
incx();
题目⑵:调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:
}
⑵若有宏定义如下:
#define X 5
#define Y X+1
#define Z Y*X/2
则执行以下printf语句后,输出结果是____。
int a;a=Y;
printf("%d\n",Z);
printf("%d\n",--a);
⑶请读程序:
#include <stdio.h>
#define MUL(x,y) (x)*y
题目⑵:用数组名作为函数参数,编写一个比较两个字符串s和t大小的函数strcomp(s,t),要求s小于t时返回-1,s等于t时返回0,s大于t时返回1。在主函数中任意输入4个字符串,利用该函数求最小字符串。
题目⑶:输入6×6的数组,下面的各要求通过编写函数实现,要求用数组名作为函数参数:
①求出对角线上各元素的和;
1
11
12 1
13 3 1
14 6 4 1
15 10 10 5 1
1 6 15 20 15 6 1
………………
(提示,使用二维数组)
题目⑷:输入4×4的数组,编写程序实现:
①求出对角线上各元素的和;
②求出对角线上行、列下标均为偶数的各元素的积;
③找出对角线上其值最大的元素和它在数组中的位置。
实验8数组名作为函数的参数
B、编程题目:(题目⑴、题目⑵为一组,题目⑶为一组,题目⑷为一组。每个同学每组都必须完成1题)
要求:每道题目分别书写程序,试运行(如何输入,结果如何)。
题目⑴:从键盘输入10个整数存入数组,找出其中最大和最小值,并输出。
题目⑵:从键盘输入一个字符串,编写程序将该字符串逆序。
题目⑶:输出杨辉三角形(要求输出10行)
⒈实验目的
⑴熟悉掌握用while语句,do-while语句和for语句实现循环的方法。
⑵掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
⑶进一步学习调试过程。
⒉实验内容
题目⑴:输入两个正整数m和n,求其最大公约数和最小公倍数。
题目⑵:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。
{ int a=4,b=5,c;
c=plus(a,b);
printf("A+B=%d\n",c);
}
intplus(int x,int y)请回答:函数功能是什么?
{int z;
z=x+y;
return(x);
}
B、编程题目:
要求:每道题目分别书写程序,试运行(如何输入,结果如何)。
题目⑴:编写函数求x的n次方的值(提示:有一个参数的函数)
实验1C的实验环境和C语言的数据类型
⒈实验目的
⑴了解在具体的语言环境下如何编辑、编译、连接和运行一个C程序。
⑵通过运行简单的C程序,初步了解C源程序的特点。
⑶掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
⑷掌握不同的类型数据之间赋值的规律。
⑸学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。