《程序设计基础》实验指导书.docx
- 文档编号:28934648
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:18
- 大小:21.79KB
《程序设计基础》实验指导书.docx
《《程序设计基础》实验指导书.docx》由会员分享,可在线阅读,更多相关《《程序设计基础》实验指导书.docx(18页珍藏版)》请在冰豆网上搜索。
《程序设计基础》实验指导书
实验1C的实验环境和C语言的数据类型
⒈实验目的
⑴了解在具体的语言环境下如何编辑、编译、连接和运行一个C程序。
⑵通过运行简单的C程序,初步了解C源程序的特点。
⑶掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
⑷掌握不同的类型数据之间赋值的规律。
⑸学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
⒉实验内容和步骤
⑴检查所用的计算机系统是否已安装了C编译系统并确定他所在的子目录。
⑵进入所用的集成环境。
⑶熟悉集成环境的界面和有关菜单的使用方法。
⑷输入并运行一个简单的、正确的程序。
⒊实验题目
⑴输入下面的程序
#include“stdio.h”
voidmain()
{printf(“Thisisacprogram.\n”);
}
程序无误,其运行的结果为:
(请填写)
⑵输入并编辑一个有错误的C程序。
#include“stdio.h”
voidmain()
{inta,b,sum
a=123;b=456;
sum=a+b
print(“sumis%d\n”,sum);
}
运行后程序出现几处错误,请分别指出,并逐一更改:
⑶若k,g均为int型变量,则下列语句的输出为,:
#include“stdio.h”
voidmain()
{intk,g;
k=017;g=111;
printf(“%d\t”,++k);
printf(“%x\n”,g++);
}
运行结果为:
实验2顺序结构程序设计
⒈实验目的
⑴掌握C语言中赋值语句的使用方法。
⑵掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
⑶进一步熟悉C程序的编辑、编译、连接和运行的过程。
⒉实验内容
用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。
问在键盘上如何输入?
请书写程序
#include“stdio.h”
voidmain()
{inta,b;
floatx,y;
charc1,c2;
scanf(“a=%db=%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=3b=7
8.571.82
Aa
运行结果:
A=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a
思考:
为什么在第三个scanf函数双引号第一个字符为空格字符,如果没有这个空格字符,而写成:
scanf(“%c%c”,&c1,&c2);按以上的输入、输出将如何变化?
请分析原因
实验3选择结构程序设计
(一)
⒈实验目的
⑴了解C语言表示逻辑量的方法(以0代表”假”,以非0代表”真”)。
⑵学会正确使用逻辑运算符和逻辑表达式。
⑶熟练掌握if语句和switch语句。
⑷结合程序掌握一些简单的算法。
⑸学习调试程序。
⒉实验内容
题目⑴:
有3个整数a、b、c,由键盘输入,输出其中最大的数。
题目⑵:
求三位数的水仙花数。
要求:
每道题目分别画出程序流程图,书写程序,试运行(如何输入,结果如何)。
实验4选择结构程序设计
(二)
⒈实验目的
⑴了解C语言表示逻辑量的方法(以0代表”假”,以非0代表”真”)。
⑵学会正确使用逻辑运算符和逻辑表达式。
⑶熟练掌握if语句和switch语句。
⑷结合程序掌握一些简单的算法。
⑸学习调试程序。
⒉实验内容
题目⑴:
身高预测
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。
小孩成人后的身高与其父母的身高和自身的性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为
男性成人时身高=(faHeight+moHeight)×0.54cm
女性成人时身高=(faHeight×0.923+moHeight)/2cm
此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。
编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。
题目2:
简单的计算器
用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1运算符op操作数2
计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。
本实验程序是在例4.8的基础上,增加如下要求:
(1)如果要求程序能进行浮点数的算术运算,程序应该如何修改?
如何比较实型变量data2和常数0是否相等?
(2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空白符,那么程序如何修改?
(3)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:
Doyouwanttocontinue(Y/Nory/n)?
用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。
那么,程序如何修改?
【思考题】比较实型变量data2和常数0是否相等,能用if(data2==0)吗?
为什么?
实验5循环结构程序设计
⒈实验目的
⑴熟悉掌握用while语句,do-while语句和for语句实现循环的方法。
⑵掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
⑶进一步学习调试过程。
⒉实验内容
题目⑴:
输入两个正整数m和n,求其最大公约数和最小公倍数。
题目⑵:
输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。
题目⑶:
猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,就只剩一个桃子了。
求第一天共摘多少桃子。
要求:
每道题目分别画出程序流程图,书写程序,试运行(如何输入,结果如何)。
实验6函数定义和使用
⒈实验目的
⑴学习C语言中函数的定义和调用方法。
⑵掌握通过参数在函数间传递数据的方法。
⑶熟悉TC集成环境对包含函数调用的程序的调试方法。
⒉实验题目
A:
修改调试题目:
题目⑴:
调试下列程序,使之具有如下功能:
fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数平均值。
写出调试过程。
#include“stdio.h”
voidmain()
{inta=0,k;/*a保存素数之和*/
floatav;/*av保存1000以内素数的平均值*/
for(k=2;k<=1000;k++)
if(fun(k))/*判断k是否为素数*/
a+=k;
av=a/1000;
printf("av=%f\n",av);
}
fun(intn)/*判断输入的整数是否为素数*/
{inti,y=0;
for(i=2;i if(n%i==0)y=1; elsey=0; returny; } 题目⑵: 调试以下程序并查看运行结果: #include“stdio.h” voidmain() {inta=1,b=2,c; c=max(a,b); printf("maxis%d\n",c); } max(intx,inty)//请回答: 函数功能是什么? {intx; z=(x>y)? x: y; return(z); } 题目(3): 调试以下程序并查看运行结果: inta=5;intb=7; #include“stdio.h” voidmain() {inta=4,b=5,c; c=plus(a,b); printf("A+B=%d\n",c); } intplus(intx,inty)请回答: 函数功能是什么? {intz; z=x+y; return(x); } B、编程题目: 要求: 每道题目分别书写程序,试运行(如何输入,结果如何)。 题目⑴: 编写函数求x的n次方的值 题目⑵: 编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。 所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。 例如: 153就是一个水仙花数: 153=13+53+33 实验7编译预处理 ⒈实验目的 ⑴掌握宏定义的规则,领会带参数宏定义和函数调用的区别。 ⑵了解文件包含命令的功能和使用规则。 ⑶了解条件编译的特点和功能。 ⒉实验内容 A宏定义及其应用 ⑴以下程序的运行结果是____。 #defineMIN(x,y)(x)<(y)? (x): (y) #include“stdio.h” voidmain() {inti=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); } ⑵若有宏定义如下: #defineX5 #defineYX+1 #defineZY*X/2 则执行以下printf语句后,输出结果是____。 inta;a=Y; printf("%d\n",Z); printf("%d\n",--a); ⑶请读程序: #include #defineMUL(x,y)(x)*y main() {inta=3,b=4,c; c=MUL(a++,b++); printf("%d\n",c); } 上面程序的输出结果是______。 ⑷以下程序的运行结果是_____. #include“stdio.h” voidmain() {incx(); incy(); incx(); incy(); incx(); incy(); } incx() {intx=0; printf("x=%d\t",++x); } incy() {staticinty=0; printf("\ny=%d\n",++y); } B“文件包含”处理测试 ⑴文件format.h包含以下内容: #definePRprintf #defineNL"\n" #defineD"%D" #defineD1DNL #defineD2DDNL #defineD3DDDNL #defineD4DDDDNL #defineS"%S" ⑵文件file1.C包含以下内容: #include"format.h" voidmain() {inta,B,C,D; 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); } 调试并察看运行结果。 注意文件保存的路径应与“stdio.h”同一目录下。 实验8数组应用编程 ⒈实验目的 ⑴掌握一维数组和二维数组定义、赋值和输入输出的方法。 ⑵掌握字符数组和字符串函数的使用。 ⒉实验内容 A: 修改调试题目: 调试下列程序,使之具有如下功能: 输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。 写出调试过程。 #include“stdio.h” voidmain() {inti,n,a[10],av; for(i=0;i scanf("%d",a[i]); for(i=0;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); } 上面给出的程序是完全可以运行的,但是运行结果是完全错误的。 调试时请注意变量的初值问题、输出格式问题等。 请使用前面实验所掌握的调试工具,判断程序中的错误并改正。 在程序运行过程中,可以使用 B、编程题目: (题目⑴、题目⑵为一组,题目⑶为一组,题目⑷为一组。 每个同学每组都必须完成1题) 要求: 每道题目分别书写程序,试运行(如何输入,结果如何)。 题目⑴: 从键盘输入10个整数存入数组,找出其中最大和最小值,并输出。 题目⑵: 从键盘输入一个字符串,编写程序将该字符串逆序。 题目⑶: 输出杨辉三角形(要求输出10行且必须是等腰三角形) 1 11 121 1331 14641 15101051 1615201561 ……………… (提示,使用二维数组) 题目⑷: 输入4×4的数组,编写程序实现: ①求出对角线上各元素的和; ②求出对角线上行、列下标均为偶数的各元素的积; ③找出对角线上其值最大的元素和它在数组中的位置。 实验9数组名作为函数的参数 ⒈实验目的 ⑴掌握数组名作为函数参数的基本使用方式。 ⑵掌握与数组有关的算法(特别是排序算法)。 ⒉实验内容 编程题目: (题目⑴、题目⑵为一组,题目⑶为一组。 每个同学每组都必须完成1题) 要求: 每道题目分别书写程序,试运行(如何输入,结果如何)。 题目⑴: 编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存入数组,调用函数后输出数组的元素。 题目⑵: 用数组名作为函数参数,编写一个比较两个字符串s和t大小的函数strcomp(s,t),要求s小于t时返回-1,s等于t时返回0,s大于t时返回1。 在主函数中任意输入4个字符串,利用该函数求最小字符串。 题目⑶: 输入6×6的数组,下面的各要求通过编写函数实现,要求用数组名作为函数参数: ①求出对角线上各元素的和; ②求出对角线上行、列下标均为偶数的各元素的积; ③找出对角线上其值最大的元素和它在数组中的位置。 实验10使用指针处理数组 (一) ⒈实验目的 ⑴掌握指针变量的定义与引用。 ⑵掌握指针与变量、指针与数组的关系。 ⑶掌握用数组指针作为函数参数的方法。 ⒉实验题目 A: 修改调试题目: 题目⑴: 调试下列程序,使之具有如下功能: 用指针法输入12个数,然后按每行4个数输出。 写出调试过程。 #include"format.h" voidmain() {intj,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所有元素的值在一行显示出来。 调试时注意指针变量指向哪个目标变量。 题目⑵: 调试下列程序,使之具有如下功能: 任意输入2个数,调用两个函数分别求: ⑴2个数的和; ⑵2个数交换值。 要求用函数指针p调用这两个函数,结果在主函数中输出。 #include"format.h" voidmain() {inta,b,c,(*p)(); scanf("%d,%d",&a,&b); p=sum; *p(a,b,c); p=swap; *p(a,b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } sum(inta,intb,intc) {c=a+b; } swap(inta,intb) {intt; t=a;a=b;b=t; } 调试程序时注意参数传递的是数值还是地址。 B、编程题目: 要求: 每道题目分别书写程序,试运行(如何输入,结果如何)。 题目⑴: 编写用指针变量作为函数参数实现两个数的交换的函数,主函数输入两个个数都为10的数组A,B,调用所编写的函数交换数组A,B中对应元素的值。 题目⑵: 编写用指针变量作为函数参数求数组的最小值、最大值和平均值的函数,主函数输入个数都为10的数组,调用所编写的函数并输出该数组的最小值、最大值和平均值。 实验11使用指针处理数组 (二) ⒈实验目的 ⑴掌握指针变量的定义与引用。 ⑵掌握指针与变量、指针与数组的关系。 ⑶掌握用数组指针作为函数参数的方法。 ⒉实验内容 编程题目: 要求: 本题的实现要求用函数实现,主函数只负责进行函数调用。 函数的参数要求全部用到的情况是: ●用数组名作函数参数; ●用指向数组元素的指针变量作函数参数; ●用指向一维数组的指针变量作函数参数; 题目: 输入两个行、列数相同的矩阵(实际上是二维数组,行和列可不等)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出;求出每个矩阵中的最大值及其位置;求出每个矩阵中绝对值最大的元素及其位置。 下面的各要求通过编写函数实现: ①输入矩阵(实际上是二维数组); ②输出矩阵; ②求出两个矩阵的和。 设A=(aij)m×n,B=(bij)m×n,则C=A+B=(cij)m×n,cij=aij+bij; ③求矩阵中的最大值及其位置; ④求矩阵中绝对值最大的元素及其位置。 实验12结构体程序设计 ⒈实验目的 ⑴掌握结构体类型变量的定义和使用。 ⑵掌握枚举类型的概念与使用。 ⑶掌握基础的链表操作。 ⑷掌握用户自定义类型的特点和应用。 ⒉实验内容 有若干个学生,每个学生的数据包括学号、姓名、五门课的成绩,从键盘输入若干个学生数据,要求打印出五门课总平均成绩,以及五门课总分最高的学生的数据(包括学号、姓名、五门课的成绩、平均分数)。 ●要求用一个input函数输入5个学生数据; ●用一个average函数求总平均分; ●用max函数找出总分最高的学生数据; 总平均分和最高分的学生的数据都在主函数中输出。 提示: 定义结构体如下: structstudent{ charnum[6]; charname[10]; floatscore[6];/*其中最后一个元素用来保存平均成绩*/ };
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计基础 程序设计 基础 实验 指导书