《《程序设计基础》实验指导书.docx》由会员分享,可在线阅读,更多相关《《程序设计基础》实验指导书.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 10 级软件工程C 语言程序设计根底指导书试验 1C 的试验环境和 C 语言的数据类型 试验目的 了解在具体的语言环境下如何编辑、编译、连接和运行一个 C 程序。 通过运行简洁的 C 程序,初步了解 C 源程序的特点。 把握 C 语言数据类型,生疏如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。 把握不同的类型数据之间赋值的规律。 学会使用 C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加+和自减-运算符的使用。 试验内容和步骤 检查所用的计算机系统是否已安装了 C 编译系统并确定他所在的子名目。 进入所用的集成环境。 生疏集成环境的界面和有关菜单的使用方法。 输入并
2、运行一个简洁的、正确的程序。 试验题目 输入下面的程序# include “stdio.h”void main printf(“This is a c program.n”);程序无误,其运行的结果为:请填写 输入并编辑一个有错误的 C 程序。# include “stdio.h”void main int a,b,sum a=123; b=456;sum=a+bprint(“sum is %dn”,sum);运行后程序消灭几处错误,请分别指出,并逐一更改: 假设k,g 均为 int 型变量,则以下语句的输出为,:# include “stdio.h”void main int k, g;k=
3、017; g=111;printf(“%dt”,+k);printf(“%xn”,g+)运行结果为:试验 2挨次构造程序设计 试验目的 把握 C 语言中赋值语句的使用方法。 把握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 进一步生疏 C 程序的编辑、编译、连接和运行的过程。 试验内容用下面的 scanf 函数输入数据,使 a=3,b=7,x=8.5,y=71.82,c1=A,c2=a。 问在键盘上如何输入?请书写程序#include “stdio.h”void main int a,b; float x,y; charc1,c2;scanf(“a=%d b=%d”,&a,&b);
4、 scanf(“%f %e”,&x,&y);scanf(“ %c %c”,&c1,&c2); printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”);运行,并依据如下方式在键盘上输入:A=3 b=7 8.5 71.82A a运行结果:A=3,b=7,x=8.500000,y=71.820230,c1=A,c2=a思考: 为什么在第三个scanf 函数双引号第一个字符为空格字符,假设没有这个空格字符,而写成:scanf(“%c %c”,&c1,&c2); 按以上的输入、输出将如何变化?请分析缘由试验 3选择构造程序设计一 试验目的 了解 C 语言表示规律量的方法(以
5、 0 代表”假”,以非 0 代表”真”)。 学会正确使用规律运算符和规律表达式。 娴熟把握 if 语句和 switch 语句。 结合程序把握一些简洁的算法。 学习调试程序。 试验内容题目:有 3 个整数 a、b、c,由键盘输入,输出其中最大的数。题目:求三位数的水仙花数。要求:每道题目分别画出程序流程图,书写程序,试运行如何输入,结果如何。试验 4 选择构造程序设计二 试验目的 了解 C 语言表示规律量的方法(以 0 代表”假”,以非 0 代表”真”)。 学会正确使用规律运算符和规律表达式。 娴熟把握 if 语句和 switch 语句。 结合程序把握一些简洁的算法。 学习调试程序。 试验内容题
6、目:身高推想每个做父母的都关心自己孩子成人后的身高,据有关生理卫生学问与数理统计分析说明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育熬炼等。小孩成人后的身高与其父母的身高和自身的性别亲热相关。设 faHeight 为其父身高,moHeight 为其母身高,身高推想公式为男性成人时身高=(faHeight + moHeight)0.54cm女性成人时身高=(faHeight0.923 + moHeight)/2cm此外,假设宠爱体育熬炼,那么可增加身高 2%;假设有良好的卫生饮食习惯,那么可增加身高 1.5%。编程从键盘输入用户的性别用字符型变量 sex 存储,输入字符 F 表示女性,输
7、入字符 M 表示男性、父母身高用实型变量存储,faHeight 为其父身高,moHeight 为其母身高、是否宠爱体育熬炼用字符型变量 sports 存储,输入字符 Y 表示宠爱,输入字符N 表示不宠爱、是否有良好的饮食习惯等条件用字符型变量diet 存储,输入字符 Y 表示良好,输入字符 N 表示不好,利用给定公式和身高推想方法对身高进展推想。题目 2:简洁的计算器用 switch 语句编程设计一个简洁的计算器程序,要求依据用户从键盘输入的表达式:操作数 1运算符 op操作数 2计算表达式的值,指定的算术运算符为加+、减-、乘*、除/。本试验程序是在例 4.8 的根底上,增加如下要求:(1)
8、 假设要求程序能进展浮点数的算术运算,程序应当如何修改?如何比较实型变量 data2 和常数 0 是否相等?(2) 假设要求输入的算术表达式中的操作数和运算符之间可以参与任意多个空白符,那么程序如何修改?3选作题假设要求连续做屡次算术运算,每次运算完毕后,程序都给出提示:Do you want to continueY/N or y/n?用户输入 Y 或 y 时,程序连续进展其他算术运算;否则程序退出运行状态。那么, 程序如何修改?【思考题】比较实型变量 data2 和常数 0 是否相等,能用 if (data2 = 0)吗?为什么?试验 5 循环构造程序设计 试验目的 生疏把握用 while
9、 语句,dowhile 语句和 for 语句实现循环的方法。 把握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 进一步学习调试过程。 试验内容题目:输入两个正整数m 和 n,求其最大公约数和最小公倍数。题目:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。题目:猴子吃桃问题。猴子第一天摘下假设干个桃子,当即吃了一半,还不过瘾,又多吃了一个。其次天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,就只剩一个桃子了。求第一天共摘多少桃子。要求:每道题目分别画出程序流程图,书写程序,试运行如何
10、输入,结果如何。试验 6函数定义和使用 试验目的 学习 C 语言中函数的定义和调用方法。 把握通过参数在函数间传递数据的方法。 生疏 TC 集成环境对包含函数调用的程序的调试方法。 试验题目A:修改调试题目:题目:调试以下程序,使之具有如下功能:fun 函数是一个推断整数是否为素数的函数,使用该函数求 1000 以内的素数平均值。写出调试过程。#include “stdio.h”void main int a=0,k;/* a 保存素数之和 */float av;/* av 保存 1000 以内素数的平均值 */ for (k=2;k=1000;k+)if (fun(k)/* 推断 k 是否为
11、素数 */ a+=k;av=a/1000; printf(“av=%fn“,av);fun(int n)/* 推断输入的整数是否为素数 */ int i,y=0; for(i=2;iy)?x:y; return(z);题目(3):调试以下程序并查看运行结果:int a=5;int b=7; #include “stdio.h” void main int a=4,b=5,c; c=plus(a,b); printf(“A+B=%dn“,c);int plus(int x,int y) 请答复:函数功能是什么? int z; z=x+y; return(x);B、编程题目:要求:每道题目分别书写
12、程序,试运行如何输入,结果如何。题目:编写函数求x 的 n 次方的值题目:编写一个求水仙花数的函数,求 3 位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如:153 就是一个水仙花数:153 = 13 + 53 + 33试验 7 编译预处理 试验目的 把握宏定义的规章,领悟带参数宏定义和函数调用的区分。 了解文件包含命令的功能和使用规章。 了解条件编译的特点和功能。 试验内容A 宏定义及其应用 以下程序的运行结果是。#define MIN(x,y)(x)(y)?(x):(y) #include “stdio.h”void main int i
13、=10,j=15,k; k=10*MIN(i,j);printf(“%dn“,k); 假设有宏定义如下:#defineX5#defineYX+1 #defineZY*X/2则执行以下 printf 语句后,输出结果是。int a;a=Y; printf(“%dn“,Z);printf(“%dn“,-a); 请读程序:#include #defineMUL(x,y)(x)*y mainint a=3,b=4,c; c=MUL(a+,b+);printf(“%dn“,c);上面程序的输出结果是。 以下程序的运行结果是. #include “stdio.h”void main incx;incy;i
14、ncx;incy;incx;incy;incx int x=0; printf(“x=%dt“,+x);incy static int y=0; printf(“ny=%dn“,+y);B “文件包含”处理测试 文件 format.h 包含以下内容: #define PRprintf#define NL“n“ #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“ void mai
15、ninta,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
16、.h”void main int i,n,a10,av; for(i=0;in;i+)scanf(“%d“,ai); for(i=0;in;i+) printf(“%d“,ai);if (i%3=0) printf(“n“);for(i=0;i!=n;i+) av+=ai;printf(“av=%fn“,av);上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请留意变量的初值问题、输出格式问题等。请使用前面试验所把握的调试工具,推断程序中的错误并改正。在程序运行过程中,可以使用+键终止程序的运行,返回到 T C 环境。B、编程题目:(题目、题目为一组,题目为一组,题目为一组。每
17、个同学每组都必需完成 1 题)要求:每道题目分别书写程序,试运行如何输入,结果如何。题目:从键盘输入 10 个整数存入数组,找出其中最大和最小值,并输出。题目:从键盘输入一个字符串,编写程序将该字符串逆序。题目:输出杨辉三角形要求输出 10 行且必需是等腰三角形111121133114641151010511615201561提示,使用二维数组题目: 输入 44 的数组,编写程序实现: 求出对角线上各元素的和; 求出对角线上行、列下标均为偶数的各元素的积; 找出对角线上其值最大的元素和它在数组中的位置。试验 9 数组名作为函数的参数 试验目的 把握数组名作为函数参数的根本使用方式。 把握与数组
18、有关的算法(特别是排序算法)。 试验内容编程题目:(题目、题目为一组,题目为一组。每个同学每组都必需完成 1 题)要求:每道题目分别书写程序,试运行如何输入,结果如何。题目:编写函数实现将数组元素按从小到大的挨次排序,主函数从键盘输入 10 个整数存入数组,调用函数后输出数组的元素。题目: 用数组名作为函数参数,编写一个比较两个字符串s 和 t 大小的函数strcomp(s,t),要求s 小于 t 时返回-1,s 等于 t 时返回 0,s 大于 t 时返回 1。在主函数中任意输入 4 个字符串,利用该函数求最小字符串。题目: 输入 66 的数组,下面的各要求通过编写函数实现,要求用数组名作为函
19、数参数: 求出对角线上各元素的和; 求出对角线上行、列下标均为偶数的各元素的积; 找出对角线上其值最大的元素和它在数组中的位置。试验 10使用指针处理数组一 试验目的 把握指针变量的定义与引用。 把握指针与变量、指针与数组的关系。 把握用数组指针作为函数参数的方法。 试验题目A:修改调试题目:题目: 调试以下程序,使之具有如下功能:用指针法输入 12 个数,然后按每行 4个数输出。写出调试过程。#include“format.h“ void mainint j,k,a12,*p;for(j=0;j12;j+) scanf(“%d“,p+); for(j=0;j12;j+)printf(“%d“
20、,*p+);if (j%4 = 0)printf(“n“);调试该程序时,数组a 全部元素的值在一行显示出来。调试时留意指针变量指向哪个目标变量。题目:调试以下程序,使之具有如下功能:任意输入2 个数,调用两个函数分别求: 2 个数的和; 2 个数交换值。要求用函数指针 p 调用这两个函数,结果在主函数中输出。#include“format.h“void mainint a,b,c,(*p);scanf(“%d,%d“,&a,&b); p=sum;*p(a,b,c); p=swap;*p(a,b); printf(“sum=%dn“,c); printf(“a=%d,b=%dn“,a,b);s
21、um(int a, int b, int c) c=a+b;swap(int a, int b)int t; t=a;a=b;b=t;调试程序时留意参数传递的是数值还是地址。B、编程题目:要求:每道题目分别书写程序,试运行如何输入,结果如何。题目: 编写用指针变量作为函数参数实现两个数的交换的函数,主函数输入两个个数都为 10 的数组 A,B,调用所编写的函数交换数组 A,B 中对应元素的值。题目:编写用指针变量作为函数参数求数组的最小值、最大值和平均值的函数,主函数输入个数都为 10 的数组,调用所编写的函数并输出该数组的最小值、最大值和平均值。试验 11使用指针处理数组二 试验目的 把握指
22、针变量的定义与引用。 把握指针与变量、指针与数组的关系。 把握用数组指针作为函数参数的方法。 试验内容编程题目:要求:此题的实现要求用函数实现,主函数只负责进展函数调用。函数的参数要求全部用到的状况是:l 用数组名作函数参数;l 用指向数组元素的指针变量作函数参数;l 用指向一维数组的指针变量作函数参数;题目:输入两个行、列数一样的矩阵实际上是二维数组,行和列可不等A、B,以矩阵的方式分别输出 A、B;求矩阵的和并输出;求出每个矩阵中的最大值及其位置;求出每个矩阵中确定值最大的元素及其位置。下面的各要求通过编写函数实现: 输入矩阵实际上是二维数组; 输出矩阵; 求出两个矩阵的和。设 A=(ai
23、j)mn,B=(bij)mn,则 C=A+B=(c ),cij= aij+ bij; 求矩阵中的最大值及其位置;ij mn 求矩阵中确定值最大的元素及其位置。试验 12构造体程序设计 试验目的 把握构造体类型变量的定义和使用。 把握枚举类型的概念与使用。 把握根底的链表操作。 把握用户自定义类型的特点和应用。 试验内容有假设干个学生,每个学生的数据包括学号、姓名、五门课的成绩,从键盘输入假设干个学生数据,要求打印出五门课总平均成绩,以及五门课总分最高的学生的数据包括学号、姓名、五门课的成绩、平均分数。l 要求用一个 input 函数输入 5 个学生数据;l 用一个 average 函数求总平均分;l 用 max 函数找出总分最高的学生数据;总平均分和最高分的学生的数据都在主函数中输出。提示:定义构造体如下:struct student charnum6; char name10;float score6;/*其中最终一个元素用来保存平均成绩 */;