C语言程序设计实验指导书_V2.1

更新时间:2024-05-31 17:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《程序设计基础》实验指导书

(第一版)

(14~26学时)

信息学院

《程序设计基础》教研组

2011年3月1日

目 录

前 言 ............................................................................................................................................................... 1 实验一 C程序的运行环境和简单C源程序的调试 ................................................................................... 2

一、实验学时 ........................................................................................................................................... 2 二、实验目的 ........................................................................................................................................... 2 三、预习要求 ........................................................................................................................................... 2 四、实验内容 ........................................................................................................................................... 2 五、实验注意事项 ................................................................................................................................... 7 六、思考题 ............................................................................................................................................... 7 实验二 数据类型、运算符和表达式 ........................................................................................................... 9

一、实验目的 ........................................................................................................................................... 9 二、实验要点 ........................................................................................................................................... 9 三、实验要求 ........................................................................................................................................... 9 四、实验内容 ........................................................................................................................................... 9 五、思考与总结 ..................................................................................................................................... 10 实验三 选择结构程序设计 ..........................................................................................................................11

一、实验学时 ..........................................................................................................................................11 二、实验目的 ..........................................................................................................................................11 三、预习要求 ..........................................................................................................................................11 四、实验内容 ..........................................................................................................................................11 五、实验注意事项 ................................................................................................................................. 13 六、思考题 ............................................................................................................................................. 14 实验四 循环结构程序设计(一) ............................................................................................................. 16

一、实验学时 ......................................................................................................................................... 16 二、实验目的 ......................................................................................................................................... 16 三、预习要求 ......................................................................................................................................... 16 四、实验内容 ......................................................................................................................................... 16 五、实验注意事项 ................................................................................................................................. 20 六、思考题 ............................................................................................................................................. 20 实验五 循环结构程序设计(二) ............................................................................................................. 22

一、实验学时 ......................................................................................................................................... 22 二、实验目的 ......................................................................................................................................... 22 三、预习内容 ......................................................................................................................................... 22 四、实验内容 ......................................................................................................................................... 22 五、实验注意事项 ................................................................................................................................. 24 六、思考题 ............................................................................................................................................. 24 实验六 一维数组程序设计 ......................................................................................................................... 26

一、实验学时 ......................................................................................................................................... 26 二、实验目的 ......................................................................................................................................... 26 三、预习要求 ......................................................................................................................................... 26 四、实验内容 ......................................................................................................................................... 26 五、实验注意事项 ................................................................................................................................. 28 六、思考题 ............................................................................................................................................. 28 实验七 二维数组程序设计 ......................................................................................................................... 30

一、实验学时 ......................................................................................................................................... 30 二、实验目的 ......................................................................................................................................... 30 三、预习要求 ......................................................................................................................................... 30 四、实验内容 ......................................................................................................................................... 30 五、实验注意事项 ................................................................................................................................. 34 六、思考题 ............................................................................................................................................. 35 实验八 字符数组程序设计 ......................................................................................................................... 37

一、实验学时 ......................................................................................................................................... 37

二、实验目的 ......................................................................................................................................... 37 三、预习要求 ......................................................................................................................................... 37 四、实验内容 ......................................................................................................................................... 37 五、实验注意事项 ................................................................................................................................. 39 六、思考题 ............................................................................................................................................. 39 实验九 函数 ................................................................................................................................................. 41

一、实验学时 ......................................................................................................................................... 41 二、实验目的 ......................................................................................................................................... 41 三、预习要求 ......................................................................................................................................... 41 四、实验内容 ......................................................................................................................................... 41 五、实验注意事项 ................................................................................................................................. 46 六、思考题 ............................................................................................................................................. 46 实验十 指针(一) ..................................................................................................................................... 49

一、实验学时 ......................................................................................................................................... 49 二、实验目的 ......................................................................................................................................... 49 三、预习要求 ......................................................................................................................................... 49 四、实验内容 ......................................................................................................................................... 49 五、实验注意事项 ................................................................................................................................. 51 六、思考题 ............................................................................................................................................. 51 实验十一 指针(二) ................................................................................................................................. 52

一、实验学时 ......................................................................................................................................... 52 二、实验目的 ......................................................................................................................................... 52 三、预习要求 ......................................................................................................................................... 52 四、实验内容 ......................................................................................................................................... 52 五、实验注意事项 ................................................................................................................................. 53 六、思考题 ............................................................................................................................................. 53 实验十二 结构体、共用体和位运算 ......................................................................................................... 55

一、实验学时 ......................................................................................................................................... 55 二、实验目的 ......................................................................................................................................... 55 三、预习要求 ......................................................................................................................................... 55 四、实验内容 ......................................................................................................................................... 56 五、实验注意事项 ................................................................................................................................. 59 六、思考题 ............................................................................................................................................. 59 实验十三 文件 ............................................................................................................................................. 60

一、实验学时 ......................................................................................................................................... 60 二、实验目的 ......................................................................................................................................... 60 三、预习要求 ......................................................................................................................................... 60 四、实验内容 ......................................................................................................................................... 60 五、实验注意事项 ................................................................................................................................. 62 六、思考题 ............................................................................................................................................. 62 附录:常见错误提示信息的英汉对照 ......................................................................................................... 63

前 言

C 语言是现代最流行的通用程序设计语言之一,它既具有高级程序设计语言的优点,又具有低级程序设计语言的特点,既可以用来编写系统程序,又可以用来编写应用程序。因此,C 语言正在被迅速地推广和普及。上机实验是该课程教学的一个重要环节,因此要求学生做一定数量的上机实验。本指导书可增强同学上机实验的针对性。整个教学和实验中,采用VC++6.0 作为实验环境,强调学生切实培养动手实践能力,掌握调试程序的方法,通过调试理解 C语言程序运行的过程以及C 语言的语法规则,为后续的课程设计,计算机等级考试及其他应用做好充分的准备。

本实验指导书通过大量的实例,循序渐进地引导学生做好各章的实验。根据实验教学大纲,共选择编写了13个实验,其中必做11个,选做 2个 。每个实验内容结构如下:

(1)实验学时 (2)实验目的 (2)预习要求 (4)实验内容 (5)实验注意事项 (6)思考题

其中思考题属于扩展应用部分,学生可以根据自己的学习情况选择完成。

在实验之前,要求学生对实验作好预习工作。在实验中,学生根据实验指导中的内容进行验证与总结,然后再去完成实验内容中安排的任务。一般要求准备好相关代码,实验课中最好以调试和讨论为主。

实验结束后,应及时提交实验报告,报告具体内容可根据实验内容和实验要求进行增删。实验报告一般要求包含:

(1)实验题目

(2)设计思路或算法分析 (3)流程图 (4)程序源代码

(5)程序运行结果及分析 (6)存在的问题。

1

实验一 C程序的运行环境和简单C源程序的调试

一、实验学时

2学时

二、实验目的

(一)掌握在Visaul C++ 环境如何编辑、编译和运行C源程序; (二)掌握C语言的各种数据类型以及整型、字符型、实型变量的定义; (三)掌握C语言中有关算术运算符及表达式的使用。

三、预习要求

熟悉C程序的书写规则、上机调试步骤;熟悉C语言的数据类型;熟悉C语言表达式的构成、运算规则等内容。

(一)Visual C++6.0 集成开发环境简介

由于这些年C++语言程序的普及,Visual C++6.0集成开发环境作为一种功能强大的程序编译器也被相当多的程序员所使用,使用Visual C++也能够完成C语言的编译。

由于Visual C++集成开发环境运行于Windows下,对于习惯于图形界面的用户来说是比较易学的,因此,简要介绍一下如何用Visual C++来完成C语言程序的设计。Visual C++也有多种版本,本书中使用比较普及的Visual C++ 6.0集成开发环境。

(二)Visual C++6.0 集成开发环境安装

Visual C++中文版集成开发环境的安装比较简单,在输入SETUP执行后,可以按照提示信息完成程序安装,在这里不再详述。

四、实验内容

(一) 创建一个新的文件夹

为了方便管理自己的C语言程序,在启动Visual C++ 6.0集成开发环境前,首先在E盘创建一个新的文件夹,以便存放自己的C语言程序。

(二) 启动Visual C++ 6.0集成开发环境

如图1-1所示,单击“开始”→“程序”→Microsoft Visual Studio 6.0→Microsoft Visual C++ 6.0,就可以启动Visual C++ 6.0集成开发环境。

启动后的Visual C++ 6.0集成开发环境如图1-2所示。

(三)开始一个新程序

1.创建文件

单击主菜单中的“文件”→“新建”菜单命令,弹出“新建”对话框,在“新建”对话框中选择“文件”选项卡。在左边列出的选项中,选择“C++ Source File”;在右边的相应对话框中,输入文件名称“c1-1.c”及保存的位置,如图1-3所示。单击“确定”按钮。

2

图1-1 启动Visual C++ 6.0的方法

图1-2 Visual C++ 6.0 中文版集成开发环境

E盘新建的文件夹

图1-3 创建新的C源文件

进入Visual C++ 6.0集成环境的代码编辑窗口,如图1-4所示。

图1-4 Visual C++ 6.0集成环境的代码编辑窗口

2.代码编辑

在Visual C++ 6.0代码编辑窗口中,输入如下所示的源代码,完成后如图1-4中所示。程序代码: /* c1-1.c C语言的第一个程序 */ #include \

3

void main( ) { printf(\ *\\n\ printf(\ printf(\ }

3.程序的编译、连接与运行

将C语言源代码编译成计算机能执行的目标代码。

单击主菜单下的“组建”→“编译 [c1-1.c]”(或者是工具栏上的按钮或按快捷键Ctrl+F7),此时将弹出一个对话框,询问是否创建一个项目工作区,选择“是(Y)”。Visual C++ 6.0集成开发环境会自动在c1-1.c文件所在文件夹中建立相应的项目文件。

编译时,在下方的输出框中将显示出相应的编译说明,如图1-5所示。 如果代码编译无误,最后将显示: c1-1.obj - 0 error(s), 0 warning(s)

这说明编译没有错误(error)和警告(warning),生成目标文件c1-1.obj,程序编译顺利完成。目标文件(.obj)不能被计算机直接执行,接下来将目标文件(.obj)和相关的库函数或目标程序连接成为可执行程序(.exe)。

工具栏编译按钮 编译信息窗口 图1-5 Visual C++ 6.0 集成环境下编译源程序

单击主菜单下的“组建”→“批组建”命令,将弹出如图1-6所示的对话框。

图1-6 Visual C++ 6.0 集成环境下批组建对话框

确保选中“c1-1-Win32 Release”复选框,这样生成的可执行文件才是发行版的程序,否则生成的是调试(Debug)版的程序。

单击“创建”按钮,生成可执行文件c1-1.exe。如果在“批组建”对话框中选中了两个复选框,可以看到程序中生成了两个c1-1.exe可执行文件,一个文件为调试版本,存储在与c1-1.c同一文件夹下的Debug文件夹中;另一个是发行版本,保存在与c1-1.c同一文件夹下的Release文件夹中。

这一步只是为了生成发行版的程序文件,只有在程序准备发行时才需要执行这种编译。在通常

4

情况下,可以单击主菜单下的“组建”→“组建 [c1-1.exe]”(或工具栏按钮或按快捷键F7),直接生成调试版本程序就可以了。

编译、连接完成后, c1-1.exe已经是一个独立的可执行程序,可以在Windows 资源管理器中直接执行,也可以在Visual C++ 6.0集成开发环境中运行。

单击主菜单下的“组建”→[执行c1-1.exe](或工具栏按钮或按快捷键Ctrl+F5),此时弹出一个控制台程序窗口,程序正确运行,如图1-7所示。按任意键后返回Visual C++ 6.0集成开发环境。

图1-7 Visual C++ 6.0 集成环境下程序运行结果

4.关闭工作空间

当第1~3步工作完成后,应该将工作保存下来,并关闭工作空间,以便做下一个新的程序。单击主菜单下的“文件”→“保存全部”,然后再单击“文件”→“关闭工作空间”菜单命令,询问确认要关闭所有文档窗口,选择“是(Y)”。

(四)按照(三)的操作,输入下面的程序,运行并查看输出结果。

/* c1-2.c C语言的第二个程序 */ #include \void main( ) { int c,a=3,b=5; c=a+b;

printf(\ }

(五)打开已有的文件

在打开已有的文件时一定要先确认关闭了工作空间,然后单击主菜单下的“文件”→“打开”命令,选择(三)创建的c1-1.c文件,然后打开。

(六)重新开始一个新的程序

关闭所有工作空间,点击Visual C++ 6.0窗口的关闭按钮即可退出Visual C++ 6.0集成环境,按照(二)、(三)再次进入Visual C++ 6.0集成环境,输入以下程序:

/* c1-3.c C语言的第三个程序 */ #include \void main( ) { int a=38;

printf(\printf(\ }

注意观察两个printf函数语句输出结果有何不同?

(七)在Visual C++ 6.0集成环境,输入以下程序:

/* c1-4.c C语言的第四个程序 */ #include \void main( )

{ long int a=32767;

printf(\printf(\printf(\ }

5

将程序中的a改为a=65535,并再次运行程序,观察结果。

(八)在Visual C++ 6.0集成环境,,输入以下程序:

/* c1-5.c C语言的第五个程序 */ #include \void main( )

{ char c1=97,c2=98;

int a=97,b=98;

printf(\printf(\printf(\ }

观察程序运行结果,掌握int与char类型数据的互通性。

(九)在Visual C++ 6.0集成环境,输入以下程序:

/* c1-6.c C语言的第六个程序 */ #include \void main( ) { int a,b;a=2; b=1%a;

printf(\ printf(\

printf(\ %f\\n\ }

观察程序运行结果,从中掌握类型转换运算符的使用。

(十)在Visual C++ 6.0集成环境,输入以下程序:

/* c1-7.c C语言的第七个程序 */ #include \void main( ) { int i,j; i=3; j=4;

printf(\ printf(\

printf(\ }

观察程序运行结果,从中掌握自加自减运算符的使用。

(十一)在Visual C++ 6.0集成环境,输入以下程序

/* c1-8.c C语言的第八个程序 */ #include \void main( ) { int a,b;a=5; a-=a*a;

printf(\ b=(a=3*5,a*4,a+5);

printf(\ }

观察程序运行结果,从中掌握复合赋值运算符、逗号运算符的使用。

(十二)下面程序,计算输出当x=2.5,a=7,y=4.7时,表达式

x + a % 3 * (int) (x + y) % 2 / 4的运算结果z的值。

/* c1-9.c C语言的第九个程序 */ #include \

6

void main( )

{ _________ a=7;

float x=2.5,y=4.7, z ;

z= x + a % 3 * (int) (x + y) % 2 / 4; printf(\}

程序不完整,请删除横线后填空并运行程序。

五、实验注意事项

(一)在Visual C++ 6.0集成环境中,如何对C程序进行创建、运行、查看结果和退出。

Visual C++ 6.0集成环境等操作可以通过菜单、按钮、热键实现。另外,在源程序文件编辑过程中,还可以进行复制、移动、删除等常用文件编辑操作。

注意C程序的编辑与显示结果界面是两个不同的界面。

(二)由于C程序运行必须从main函数开始,因此一个C程序要有一个main函数,且只能有一个main函数。当一个程序运行结束之后,一定要先“文件”→“关闭工作空间”,然后再开始创建一个新的C程序。

(三)在程序的输入过程中: 1.要注意区分大小写;

2.要注意程序中需要空格的地方一定要留空格(如int a=3,b=5;中的int和a之间必须留空格);

3.注意“\\”与“/”的区别。

4.所定义的变量的类型与输入的数据的类型要一致,输出时的格式一定要满足数据的大小。 5.注意实验内容(十二)中当运算对象均为整数时“/”运算符的使用,“%”运算符两边一定是整型数据。

6.注意自加和自减运算符的运算规则,仔细分析实验内容(十)中程序的输出结果。

六、思考题

(一)有如下程序: #include \void main( ) { int a=-1;

printf(\ }

printf语句的运行结果是_______________。

(二)有如下程序: #include \void main( )

{ char c1=97,c2=98; int a=97,b=98; printf(\ printf(\ printf(\ }

最后一个printf语句的运行结果是_______________。

(三)有如下程序: #include \void main( )

{ int i,j; i=3; j=4;

printf(\ %d\\n\ printf(\

printf(\}

7

最后一个printf语句的运行结果是_______________。

(四)程序填空: #include \void main( )

{ _________ a=7;

float x=2.5,y=4.7,z;

z= x + a % 3 * (int) (x + y) % 2 / 4;

printf(\

程序中空格处应填_______________。

8

实验二 数据类型、运算符和表达式

一、实验目的

(1)了解C 语言数据类型的意义,掌握基本数据类型变量的特点和定义方法。 (2)学会使用C 的算术运算符,以及包含这些运算符的算术表达式。 (3)掌握自加(++)和自减(--)运算符的使用。

(4)进一步熟悉C 程序的编辑、编译、连接和运行的过程。

二、实验要点

基本数据类型包括整型、字符型、实型。

三、实验要求

(1)上机前先阅读和编写以下要调试的程序。 (2)上机输入和调试程序并存在磁盘上。 (3)检查实验结果是否正确。

四、实验内容

(以下内容在实验报告中的实验预习报告内容中完成) 1. 调试程序,分析输出结果

(1)输入并运行以下程序。 main()

{ float a,b;

a=123456.789e5; b=a+20;

printf(\}

将第二行改为: double a,b;

重新运行该程序,分析运行结果。

说明:由于实型变量的值是用有限的存储单元存储的,因此其有效数字的位数是有限的。float型变量最多只能保证7 位有效数字,后面的数字是无意义的,不能准确表示该数。

(2)输入并运行以下程序。 main()

{ char c1,c2; c1=97;c2=98;

printf(\printf(\}

① 将第二行改为:int c1,c2;再运行。

9

② 再将第三行改为:c1=300;c2=400;再运行,分析运行结果。

说明:字符型数据可作为整型数据处理,整型数据也可以作为字符型数据处理,但应注意字符数据只占一个字节,它只能存放0-255 范围的整数。

2.完成以下填空,并把程序调通,写出运行结果。 下面的程序计算由键盘输入的任意两个整数的平均值: main()

{ int x,y ;

;

scanf(“%d,%d”,&x,&y); ;

printf(\}

3. 指出以下程序的错误并改正,上机把程序调通 main(); { int a;

a=5;

printf(“a=%d, a) }

4. 编写程序并上机运行

要将“China”译成密码,译码规律是:用原来字母后面的第3 个字母代替原来的字母。例如,字母“A”后面第4 个字母是“E”,用“E”代替“A”。因此,“China”应译为“Fklqd”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5 五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5 分别变为‘F’、‘k’、‘l’、‘q’、‘d’、,并输出。输入程序,并运行该程序。分析是否符合要求。

五、思考与总结

(1)总结各种整型变量的取值范围。

(2)总结各种实型变量的有效数字位数和取值范围。 (3)总结算术运算符和自加、自减运算符的优先级与结合性。

10

实验三 选择结构程序设计

一、实验学时

2学时

二、实验目的

(一)掌握C语言关系表达式和逻辑表达式的运算和使用;

(二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计。

三、预习要求

(一)关系运算符和关系表达式、逻辑运算符和逻辑表达式;

(二)if语句的三种形式(单分支、双分支、多分支),以及if语句的嵌套; (三)switch语句的形式。

四、实验内容

(一)分析下面程序,掌握关系及逻辑表达式的运算规则。 /* c3-1.c 关系及逻辑表达式运算规则 */ #include \void main( )

{ int a=3,b=5,c=8;

if(a++<3 && c--!=0) b=b+1;

printf(\}

注意该程序中的条件判断表达式a++<3 && c--!=0是一个逻辑表达式,关系表达式a++<3的值为假,因此后一部分c--!=0就不再计算。试比较下列各部分运行结果。

#include \void main( )

{ int a=3,b=5,c=8;

if(a++<3 && c--!=0) b=b+1;

printf(\

int a=3,b=5,c=8;

if(c--!=0 && a++<3) b=b+1;

printf(\

int a=3,b=5,c=8;

if(a++<3 || c--!=0) b=b+1;

printf(\

int a=3,b=5,c=8;

if(c--!=0 || a++<3) b=b+1;

printf(\ }

11

(二)输入下面两段程序并运行,掌握case语句中break语句的作用。 1./* c3-2.c */ /* c3-3.c */

/* 不含break的switch */ /* 含break的switch */ #include \ #include \void main( ) void main( ) { int a,m=0,n=0,k=0; { int a,m=0,n=0,k=0; scanf(\ scanf(\ switch(a) switch(a) { case 1: m++; { case 1: m++; break; case 2: case 2: case 3: n++; case 3: n++; break; case 4: case 4: case 5: k++; case 5: k++; } }

printf(\ printf(\} } 分别从键盘上输入1、3、5,写出程序运行的结果。

(三)完善程序,从键盘上输入x的值,按下式计算y的值。

?x x<1?y??2x?1 1?x<10

?3x?11 x?10?编程提示:注意逻辑表达式的正确表达方法,数学中的1≤x<10应使用C语言的逻辑表

达式(x>=1 && x<10)来表示。

下面是用多分支选择结构实现本题的程序结构: /* c3-4.c if 语句实现的多分支结构 */ #include \ void main( ) { 定义变量; 输入x;

if ( _______________ ) //按y=x为变量y赋值;

else if( _______________ ) //按y=2x-1为变量y赋值; else

_______________ //按y=3x-11为变量y赋值; printf(\ }

注意:在赋值语句中2x应该写成2*x。

(四)编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。

编程提示: 1.先定义一个整型变量存放百分制成绩、定义一个字符型变量存放相应的等级成绩; 2.输入百分制成绩;

3.将百分制成绩按10分,分档作为switch语句中括号内的表达式; 4.按

case 10: case 9:

12

编程提示:先定义一个字符型的变量(如c),再定义4个整型变量作为计数器,作为

计数器的变量要先赋初值0。在循环中每次从键盘上读入一个字符,在循环体中对读入的字符进行判断,相应的计数器加1,当读入的字符为’\\n’时结束。

编程中可使用如下的循环结构: while((c=getchar())!=’\\n’)) { if(??) ??; else if(??) ??; ??; else ??; }

/* c4-5.c 统计字符串中指定字符的个数 */ #include \ void main( ) { }

注意: 1.while( (c=getchar( ))!=’\\n’) )中括号的使用,第二层的小括号不能省略,想一想为什么?

2.字符常量’0’与数值常量0是不同的。

(六)下面程序的功能是:计算1到100之间的奇数之和及偶数之和,并输出。请在程序中的横线上填入适当的内容,将程序补充完整并运行。

/* c4-6.c 计算1到100之间的奇数之和及偶数之和 */ #include \ void main( ) { int a,b,c,i;

_____________; /*变量初始化*/ for(i=0; i<=100; i+=2)

{ a+=i; /*变量a存放偶数的和*/ ____________;

c+=b; /*变量c存放奇数的和*/ }

printf(\

printf(\ }

(七)编程打印出所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。如153=1+3+5。

3

3

3

编程提示:定义一个变量作为循环变量,再定义3个变量分别存放三位数的每位数字,

在循环体中将一个三位数拆分成个位、十位、百位后判断循环变量的值是否为水仙花数,如果是则输出,否则不输出。程序的基本结构为: /* c4-7.c 打印出所有的“水仙花数” */ #include \ void main( )

18

{ 定义4个整型变量;

for( j=100; j<=999; j++ )

{ a=j/100; /*分离出百位数*/ b=j/10-a*10; /*分离出十位数*/ c=___________; /*分离出个位数*/ if(j==a*a*a+b*b*b+c*c*c) 输出j ; }

printf(\ }

(八)以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请将程序补充完整。

/* c4-8.c 求最大值最小值程序 */ #include \ void main( )

{ float x,amax,amin; scanf(\ amax=x; amin=x;

while ( _______________ ) { if (x>amax) amax=x;

if ( _______________ ) amin=x; scanf(\ }

printf(\ }

(九)求两个正整数[m,n]之间所有既不能被3整除也不能被7整除的整数之和。

编程提示:定义两个变量m,n和t,再定义一个循环变量和结果变量s,从键盘输入m

和n的值,判断两个变量的值,如果m>n,则交换两个变量。然后用循环依次判断m和n之间的每一个数,在循环体中通过条件语句来判断这个数是否既不能被3整除也不能被7整除,如果满足条件,累加求和,如果不满足,则继续循环。

程序的基本结构如下:

/* c4-9.c 按条件求数列和 */ #include \ void main( ) { 定义变量; 变量赋初值; 输入m,n的值; if( m>n )

m和n交换;

for ( _______________ ) if ( i%3 != 0 && i%7 != 0 ) 变量 s 累加求和 ;

printf(\ }

(十)下面程序的功能是:计算正整数num的各位上的数字之和。例如,若输入:252,则输出应该是:9;若输入:202,则输出应该是:4。请将程序补充完整。

19

/* c4-10.c 求整数各位数字和 */ #include \ void main( ) { int num,k;

_______________; /* k赋初值 */ printf(\ scanf(\ do

{ k=_______________ ; /* 取最低位并累加 */

num/=10; /* 去掉最低位 */ } while(num) ;

printf(\ }

五、实验注意事项

(一)while,do-while,for语句中应有使循环趋向于结束的语句,否则就可能构成死循环。

(二)while,do-while语句什么情况下的运行结果是相同的,什么情况下不同。 (三)注意在循环结构程序设计中,正确使用{ }构成复合语句。

六、思考题

(一)求两个正整数x和y的最大公约数,请填空。 /* 求最大公约数程序 */ #include \ void main( ) { int x,y,t,i;

printf(\请输入两个数: \

scanf(\ /*注意scanf语句中间用“,”隔开*/ if (x > y) {t = x; x = y; y = t;} for( _______________ ) { if( x%i==0 && y%i==0 ) break; }

printf(\最大公约数是 : %d\\n\ }

(二)计算1到100之间的奇数之和及偶数之和。请填空。 /* 计算1到100之间的奇数之和及偶数之和 */ #include \ void main( ) { int a,b,c,i;

a=0, c=0; /* 变量赋初值 */ for(i=0;i<=100;i+=2)

{ a+=i; /* 变量a存放偶数的和 */ _______________ ;

c+=b; /* 变量c存放奇数的和 */ }

printf(\

printf(\ }

20

(三)下面程序的功能是:计算正整数num的各位上的数字之和。例如,若输入:252,则输出应该是:9;若输入:202,则输出应该是:4。请将程序补充完整。

/* 计算整数各位数字和 */ #include \ void main( ) { int num,k=0;

printf(\请输入一个整数: \ scanf(\ do

{ k=____________ ; num/=10; } while(num) ;

printf(\ }

(四)求两个正整数[m,n]之间所有既不能被3整除也不能被7整除的整数之和。请填空。

/* 按条件求数列和 */ #include \ void main( ) { int m,n,i,t; long int s=0;

scanf(\ if( m>n )

{ t=m; m=n; n=t;}

for ( _______________ ) if ( i%3 != 0 && i%7 != 0 ) s += i;

printf(\ }

21

实验五 循环结构程序设计(二)

一、实验学时

2学时

二、实验目的

(一)掌握使用for,while,do-while语句实现循环嵌套的方法; (二)巩固break和continue语句的使用。

三、预习内容

预习教材中有关用for,while,do-while语句实现循环嵌套的方法以及循环嵌套的执行过程。

四、实验内容

(一)根据公式:sum=1?111????,计算sum的值。 2!3!n!注意:根据题目,考虑所定义的各个变量应该为何种类型。

编程提示:定义一个变量存放最后的求和结果(假设为sum),sum的数据类型应为实型,

定义变量t计算整数的阶乘。使用双重循环,程序的基本结构为:

for(i=1,sum=0; i<=20; i++) { t赋初值1 ;

for( j=1; j<=i; j++ ) 变量t连乘求积; 变量sum累加t的倒数; }

注意上述程序结构和内循环变量的终值。想一想是否可以将t=1放在外循环之前? /* c5-1.c 求数列和 */ #include \ void main( ) { }

(二)编程输出九九乘法表。

编程提示:我们日常看到的乘法表是:

1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=9 ?

22

{ if ( max < a[i][j] ) max = a[i][j]; if ( min > a[i][j] ) min = a[i][j]; }

printf(\ printf(\ }

(六)以下程序是查找二维数组a的最大元素及其下标,填空并运行程序。 /* c7-6.c 求二维数组中元素的最大值及其下标 */ #include \void main() { int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};

int i,j,max,l,c; /* max存放最大值,l、c分别存放行和列的下标 */ max=a[0][0]; for(i=0; i<4; i++) for(j=0; j<4; j++)

if(max

(七)下面的程序是自动形成并输出如下矩阵,填空并运行程序。 1 2 3 4 5 1 1 6 7 8 1 1 1 9 10 1 1 1 1 11 1 1 1 1 1

/* c7-7.c 生成指定的矩阵*/ #include \void main( )

{ int i,j,k,a[5][5]; k=2;

for(i=0; i<5; i++) /* 行循环 */ for(j=0; j<5; j++) /* 列循环 */

if( ) a[i][j]=1; /* 产生矩阵的下三角元素 */ else a[i][j]=k++; /* 产生矩阵的上三角元素 */ for(i=0; i<5; i++) { for(j=0; j<5; j++) printf(“M”,a[i][j]);

printf(“\\n”); /* 每输出一行后换行 */ }

}

33

(八)下面程序的功能是实现方阵(如:3行3列)的转置(即行列互换) 如:如果原来的矩阵:100 200 300 400 500 600 700 800 900 程序输出应为:

100 400 700 200 500 800 300 600 900 填空并运行程序。

/* c7-7.c 矩阵转置*/ #include \void main( ) { int i,j,temp;

int array[3][3]={{100,200,300},{400,500,600},{700,800,900}}; printf(\原来的矩阵为:\\n\ for(i=0; i<3; i++)

{ for(j=0; j< ; j++) printf(\ printf(\ for(i=0; i<3; i++)

{ for(j=0; ;j++)

{temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;} } printf(\转置后的矩阵为:\\n\ for(i=0; i<3; i++)

{ for(j=0; j<3; j++) printf(\ } /*输出一行后要换行*/ }

请将此矩阵转置程序与教材上的矩阵转置程序进行比较,各用于何种类型矩阵比较合适?

五、实验注意事项

(一)C规定,二维数组的行和列的下标都是从0开始的。

例如,有定义:int b[3][[5]; 则数组b的第一维下标的上界为2,第二维下标的上界为4。说明定义了一个整型二维数组b,它有3行5列共3*5=15个数组元素,行下标为0,1,2,列下标为0,1,2,3,4,则数组b的各个数组元素是:

b[0][0],b[0][1],b[0][2],b[0][3],b[0][4] b[1][0],b[1][1],b[1][2],b[1][3],b[1][4] b[2][0],b[2][1],b[2][2],b[2][3],b[2][4]

(二)要对二维数组的多个数组元素赋值,应当使用循环语句并在循环过程中,使数组元素的下标变化。可用下面的方法为所有数组元素赋值:

int i,j,a[3][3]; for(i=0; i<3; i++)

34

for(j=0; j<3; j++) scanf(\

六、思考题

(一)定义一个5行5列的二维数组a,使下三角的所有元素初始化为1,在划线处填空。 int i,j,a[5][5]; for(i=0; i<5; i++) for(j=0; j<5; j++)

if( ) a[i][j]=1;

(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。 #include \

void main( )

{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

int i,sum=0; for(i=0; i<4; i++) ;

printf(“sum=%d\\n”,sum); }

(三)求二维数组a中的最大元素及其下标,填空并运行程序。 #include \ void main( )

{int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}}; int i,j,max,l,c; max=a[0][0]; for(i=0; i<4; i++) for(j=0; j<4; j++)

if( max

(四)统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩,填空并运行程序。 #include \ void main( )

{ int stu[3][4],i,j,t[3];

float a[3],sum=0; for(i=0; i<3; i++) for(j=0; j<4; j++) scanf(\for(i=0; i<3; i++) { t[i]=0;

35

for(j=0; j<4; j++) { sum+=stu[i][j]; t[i]+=stu[i][j]; }

printf(\ ; printf(\ }

printf(\ }

36

实验八 字符数组程序设计

一、实验学时

2学时

二、实验目的

(一)掌握字符数组的定义、初始化和应用; (二)掌握字符串处理函数的使用。

三、预习要求

重点预习的内容:C语言中字符串的存储表示;字符数组输入输出的方法;常用的字符串处理函数的使用。

四、实验内容

(一)输入下面的程序并运行,观察程序运行的结果,并分析原因(注意程序第2行中有些单引号之间是空格)。

/* c8-1.c 字符数组的输出*/

#include \void main( )

{ char a[10]={ ’I’, ’ ’, ’a’, ’m’, ’ ’, ’a’, ’ ’, ’b’, ’o’, ’y’}; printf(\}

将字符数组a的大小改为11,再运行程序,并将结果与修改前的结果进行比较,分析原因。

(二)按照要求编写程序:有一行文字,不超过80个字符,分别统计出其中英文大写字母、小写字母、数字、空格、及其它字符的个数。

编程提示: 1.定义一个一维字符数组。

2.定义5个整型变量分别统计大写字母、小写字母、数字、空格和其它字符的个数(即作为5个计数器使用),并为这5个变量赋初值。

3.用scanf函数或gets函数为字符数组赋一个字符串。

4.在循环中对字符数组的每个元素进行判断,相应的计数器加1。注意循环控制的条件和进行判断的条件怎样设置。

5.循环结束后输出各计数器的值。

思考:如果是对一篇英文文章进行统计,又该怎么编程呢?文章的行数和每行字数可以自己来设。提示:对文章的内容要用二维字符数组来存储。

/* c8-2.c 统计字符个数 */

#include \

37

本文来源:https://www.bwwdw.com/article/m9s6.html

Top