[程序设计基础]实验指导书 - 范文中心

[程序设计基础]实验指导书

01/21

实验1 C的实验环境和C语言的数据类型 ⒈ 实验目的

⑴ 了解在具体的语言环境下如何编辑、编译、连接和运行一个C程序。

⑵ 通过运行简单的C程序,初步了解C源程序的特点。

⑶ 掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。

⑷ 掌握不同的类型数据之间赋值的规律。

⑸ 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

⒉ 实验内容和步骤

⑴ 检查所用的计算机系统是否已安装了C编译系统并确定他所在的子目录。

⑵ 进入所用的集成环境。

⑶ 熟悉集成环境的界面和有关菜单的使用方法。

⑷ 输入并运行一个简单的、正确的程序。

⒊ 实验题目

⑴ 输入下面的程序

# 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+b

print(“sum is %d\n”,sum);

}

运行后程序出现几处错误,请分别指出,并逐一更改:

⑶ 若k,g均为int型变量,则下列语句的输出为,:

# include “stdio.h”

void main()

{ int k, 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”

void main()

{ int a,b;

float x,y;

charc1,c2;

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

A a

运行结果:

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)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N or y/n)?

用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。那么,程序如何修改?

【思考题】比较实型变量data2和常数0是否相等,能用if (data2 == 0)吗?为什么?

实验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)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N or y/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”

void main()

{ int a=0,k; /* a保存素数之和 */

float av; /* av保存1000以内素数的平均值 */

for (k=2;k

if (fun(k)) /* 判断k是否为素数 */

a+=k;

av=a/1000;

printf("av=%f\n",av);

}

fun(int n) /* 判断输入的整数是否为素数 */

{ int i,y=0;

for(i=2;i

if (n%i==0) y=1;

else y=0;

return y;

}

题目⑵:调试以下程序并查看运行结果:

#include “stdio.h”

void main()

{ int a=1,b=2,c;

c=max(a,b);

printf("max is %d\n",c);

}

max(int x,int y) //请回答:函数功能是什么?{ int x;

z=(x>y)?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=%d\n",c);

}

int plus(int x,int y) 请回答:函数功能是什么?{ int z;

z=x+y;

return(x);

}

B、编程题目:

要求:每道题目分别书写程序,试运行(如何输入,结果如何)。

题目⑴:编写函数求x的n次方的值

题目⑵:编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如:153就是一个水仙花数:153 = 13 + 53 + 33

实验7 编译预处理

⒈ 实验目的

⑴ 掌握宏定义的规则,领会带参数宏定义和函数调用的区别。 ⑵ 了解文件包含命令的功能和使用规则。

⑶ 了解条件编译的特点和功能。

⒉ 实验内容

A 宏定义及其应用

⑴ 以下程序的运行结果是____。

#define MIN(x,y) (x)

#include “stdio.h”

void main()

{ int i=10,j=15,k;

k=10*MIN(i,j);

printf("%d\n",k);

}

⑵ 若有宏定义如下:

#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

#define MUL(x,y) (x)*y

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();

incy();

}

incx()

{ int x=0;

printf("x=%d\t",++x);

}

incy()

{ static int y=0;

printf("\ny=%d\n",++y);

}

B “文件包含”处理测试

⑴ 文件format.h包含以下内容:

#define PR printf

#define NL "\n"

#define D "%D"

#define D1 D NL

#define D2 D D NL

#define D3 D D D NL

#define D4 D D D D NL

#define S "%S"

⑵ 文件file1.C包含以下内容:

#include "format.h"

void main()

{ int a,B,C,D;

char string[]="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”

void main()

{ int i,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);

}

上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请注意变量的初值问题、输出格式问题等。请使用前面实验所掌握的调试工具,判断程序中的错误并改正。在程序运行过程中,可以使用+键终止程序的运行,返回到TC环境。

B、编程题目:(题目⑴、题目⑵为一组,题目⑶为一组,题目⑷为一组。每个同学每组都必须完成1题)

要求:每道题目分别书写程序,试运行(如何输入,结果如何)。

题目⑴:从键盘输入10个整数存入数组,找出其中最大和最小值,并输出。

题目⑵:从键盘输入一个字符串,编写程序将该字符串逆序。

题目⑶:输出杨辉三角形(要求输出10行且必须是等腰三角形)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

„„ „„ „„

(提示,使用二维数组)

题目⑷: 输入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"

void main()

{ int j,k,a[12],*p;

for(j=0;j

scanf("%d",p++);

for(j=0;j

{ printf("%d",*p++);

if (j%4 == 0) printf("\n");

}

}

调试该程序时,数组a所有元素的值在一行显示出来。调试时注意指针变量指向哪个目标变量。

题目⑵:调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:

⑴ 2个数的和;

⑵ 2个数交换值。

要求用函数指针p调用这两个函数,结果在主函数中输出。

#include "format.h"

void main()

{ int a,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(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 使用指针处理数组(二)

⒈ 实验目的

⑴ 掌握指针变量的定义与引用。

⑵ 掌握指针与变量、指针与数组的关系。

⑶ 掌握用数组指针作为函数参数的方法。

⒉ 实验内容

编程题目:

要求:本题的实现要求用函数实现,主函数只负责进行函数调用。函数的参数要求全部用到的情况是:

 用数组名作函数参数;

 用指向数组元素的指针变量作函数参数;

 用指向一维数组的指针变量作函数参数;

题目:输入两个行、列数相同的矩阵(实际上是二维数组,行和列可不等)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函数找出总分最高的学生数据;

总平均分和最高分的学生的数据都在主函数中输出。

提示:定义结构体如下:

struct student {

char num[6];

char name[10];

float score[6]; /* 其中最后一个元素用来保存平均成绩 */

};


相关内容

  • 生产系统仿真实验实验指导书
    生产系统仿真实验 实验指导书 江思定 编写 浙江科技学院经济管理学院管理科学与工程系 2008年7月 生产系统仿真实验指导书 Instruction of production system emulation experiment 一.实 ...
  • 毕业设计目录
    目 录 1 毕业设计(论文)简介------------------------------------------------------1 2 毕业设计(论文)总体要求 --------------------------------- ...
  • 蓝宙电子智能创新实验室
    智能创新实验室建设方案 芜湖蓝宙电子科技有限公司 -飞思卡尔大学计划官方合作伙伴 版 本:Version 2.0 所 有 者:蓝宙电子 日 期:2014.03.12 目录 一. 二. 实验室介绍 . .................... ...
  • 化学教学法课程指导书
    现代远程教育 <中学化学教学法> 课 程 学 习 指 导 书 作者:韩春亮 2009年 3月 课程学习方法指导 学习方法是否得当直接关系到学习效果的优劣.好的学习方法使你事半功倍,不良的学习方法使你事倍功半,因此学习<中学 ...
  • 地方高校应用型创新人才培养体系构建
    摘 要:为了实现应用型创新人才培养目标,学院构建了省级实验教学示范中心及培养体系,主要从创新观念.柔性制度保障.特色办学理念和"以学生为本 "管理体制四个方面进行建设.实验教学示范中心建设与实践从师资队伍培养.课程设置更 ...
  • [软件工程]优秀课程建设总结报告
    <软件工程>优秀课程建设总结报告 在德州学院<软件工程>优质课程建设的工作中,我们课程组全体成员认识到<软件工程>是计算机软件专业的一门核心基础课程,搞好这门课程的建设,对于提高计算机科学与技术专业学生的 ...
  • 学校教学常规要求
    学校教学常规要求 为了加强日常教学管理工作的科学性和有效性,逐步实现教学管理的规范化,优化教学秩序,创设和谐奋进的教学环境,有效地提高教学质量,根据学校实际情况,特制定如下教学常规要求: 一.备课常规要求 (一) 备课 1.备教材 (1)要 ...
  • 物联网实验室(实训室)建设解决方案V1.4
    物联网工程实验室 广州飞瑞敖电子科技有限公司 地址:广州市番禺区番禺大道北555号天安节能科技园创新大厦410室 电话:[1**********]/22883196 网址:www.frotech.com 目录 一.物联网工程实验室建设背景. ...
  • 心理学博士点
    心理学博士点 全国心理学博士招生信息库 上海 华东师范大学 学科.专业名称及研究方向 院系名称 指导老师 考试科目 备注 040201 基础心理学 01心理学应用 02实验心理学 心理学系 杨治良 ①101英②266实验心理学③375认知心 ...