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

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

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

青岛科技大学 信息科学技术学院

C语言程序设计

实验指导书

目录

实验1 C语言入门及选择结构 ....................................................................................................... 1

实验1.1 Visual C++6.0开发环境............................................................................................ 1 实验1.2 C程序快速入门 ........................................................................................................ 8 实验1.3算术运算与赋值运算 .............................................................................................. 12 实验1.4逻辑运算及if语句 ................................................................................................. 18 实验1.5 switch选择结构 ...................................................................................................... 24 实验2循环结构及数组(共8学时) ......................................................................................... 28

实验2.1 循环结构(2学时) .............................................................................................. 28 循环结构程序设计补充 ................................................................................................................. 33

实验2.2数组一:一维数组 .................................................................................................. 37 实验2.3数组二:二维数组 .................................................................................................. 44 实验2.4数组三:字符数组 .................................................................................................. 46 实验3:函数与自定义数据类型 .................................................................................................. 50

实验3.1函数一:函数的定义、调用和声明 ...................................................................... 50 实验3.2函数二:函数的参数传递2 ................................................................................... 56 实验3.3函数三:函数的嵌套和递归2 ............................................................................... 58 实验3.4 自定义数据类型(2学时) .................................................................................. 60 实验4:指针(共6学时) .......................................................................................................... 62

实验4.1指针一:指针的定义及运算 .................................................................................. 62 实验4.2指针二:指向数组的指针 ...................................................................................... 68 实验4.3指针三:用指针操作字符串2 ............................................................................... 72

第 II 页

信息科学技术学院《C语言程序设计》实验指导书

实验1 C语言入门及选择结构

实验1.1 Visual C++6.0开发环境

一、实验目的

1. 熟悉C语言的系统环境,掌握在集成环境中编辑、编译、连接和运行C语言程序的方法。

2. 掌握C语言源程序的结构特点与书写规范。 二、实验学时数

2学时

三、实验步骤及任务 (一) VC++6.0集成环境

(1)运行VC++6.0

a.双击桌面上的VC++6.0快捷方式,运行VC++6.0。

b.双击\.EXE\,运行VC++6.0。 (2)认识VC++6.0 菜单栏 工作空间 标题栏的左侧显示当前的文件名,右侧有最小化,最大化和关闭三个按钮。 菜单栏包含了开发环境中几乎所有的命令,其中一些常用的命令还被排列在工具栏中。

工具栏上的按钮提出和一些菜单命令相对应,提供了经常使用的命令的一种快捷方式。

第 1 页

标准按钮 执行 组建 编译 输出 信息科学技术学院《C语言程序设计》实验指导书

项目工作区窗口包含有Class View和File View两个页面。

(3)建立C语言源文件,单击[文件]-[新建],单击[文件]选项卡,新建一个C++ Source File,选择存储位置(新建建立的文件夹D:\\test),输入文件名“myhello.c”,进入D:\\test,可以看到新建的文件myhello.c。

(4)输入C语言源程序,在打开的程序编辑窗口输入C语言源程序。

输入C语言源程序 第 2 页

信息科学技术学院《C语言程序设计》实验指导书

(5)编译

点击[组建]-[编译],或按ctrl+F7进行预编译,或用工具栏工具编译,编译成功生成.obj目标文件(myhello.obj),显示在输出窗口。

(6)连接

点击[组建]-[编译]命令,或按F7,或点按连接按钮执行连接操作。连接成功生成扩展名为.exe的文件。

(7)执行

点击[组建]-[执行]命令,或按ctrl+F5,或点按执行按钮完成“执行”操作。

完成后界面如下,到目前为止一个简单的C程序创建成功。

连接结果 连接工具 编译结果 编译工具 第 3 页

信息科学技术学院《C语言程序设计》实验指导书

(8)关闭工作空间

程序运行结束后,如果想输入一个新程序,我们需要将当前的程序关闭,选择菜单栏中的“文件”→“关闭工作空间”即可。

(9)常用功能键及其意义

为了使程序员能够方便快捷地完成程序开发,开发环境提供了大量快捷方式来简化一些常用操作的步骤。键盘操作直接、简单,而且非常方便,因而程序员非常喜欢采用键盘命令来控制操作。下面是一些最常用的功能键,希望在实验中逐步掌握。

操作类型 文件操作 编辑操作 功能键 对应菜单 Ctrl+N Ctrl+O Ctrl+S Ctrl+X Ctrl+C Ctrl+V Ctrl+Z Ctrl+Y Ctrl+A Del File|New File|Open File|Save Edit|Cut Edit|Copy Edit|Paste Edit|Undo Edit|Redo Edit|Select All Edit|Del 含义 创建新的文件、项目等 打开项目、文件等 保存当前文件 剪切 复制 粘贴 撤消上一个操作 重复上一个操作 全选 删除光标后面的一个字符 执行工具 结果输出窗体 建立程序操作 Ctrl+F7 Build| Compiler current file 编 译当前源文件 Ctrl+F5 Build|Run exe F7 Build|Build exe 运行当前项目 建立可执行程序 第 4 页

信息科学技术学院《C语言程序设计》实验指导书

调试 F5 F5 F11 Build|Start Debugging Debug|Go Debug|Step into 启动调试程序 继续运行 进入函数体内部 从函数体内部运行出来 执行一行语句 设置/清除断点 运行到光标所在位置 快速查看变量或表达式的值 停止调试 shift+F11 Debug|Step out F10 F9 Debug|Step over Ctrl+F10 Debug|Run to cursor shift+F9 Debug|QuickWatch Shift + F5 Debug|Stop debugging 要求:请用最简单的语言描述如何新建一个C语言的源文件,如何编辑程序,如何编译程序,如何连接程序,如何运行程序,程序结果然后显示?

(二)阅读程序

要求:编辑下面源程序,并且读懂与分析运行程序,上机运行程序,并与分析结果相对比。

1. 输入并运行以下程序,观察运行结果。(sy1.1.1.c) # include int main()

{ printf(\ printf(\ Hello world!\\n\

printf(\ return 0; }

分析结果 运行结果 思考:如何采用一个输出(printf)函数调用实现此输出结果。

2.输入并运行以下程序,观察运行结果。 (sy1.1.2.c) # include int main()

{ int a,b,sum,minus; a=456;b=123;

第 5 页

信息科学技术学院《C语言程序设计》实验指导书

sum=a+b; minus=a-b;

printf(\ return 0; } 分析结果 运行结果 printf中删除a+b=和a-b= printf中删除第一个\\n printf中删除a+b=和a-b= printf中删除第一个\\n 输出结果: 输出结果: 输出结果: 输出结果: (三)完成程序 要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。

1.求(a-b)×c的值。(设a=33,b=22,c=11)(sy1.1.3.c) # include int main( ) { int a,b,c; a=33; c=11;

printf(\return 0; }

2.求圆的面积。(sy1.1.4.c) #include #define PI 3.14 int main( ) {

float r,area;

printf(\scanf(\area=PI*r*r;

printf(\, ); return 0; }

(四)调试程序

要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果。(sy1.1.5.c)

第 6 页

信息科学技术学院《C语言程序设计》实验指导书

行号 #include 1. int main( ) 2. { int x; 3. x=5,y=8;

4. printf(\,%d,%d\\n\ 5. return 0; 6. } 错 错误在 行 应改为: 调试正确后的运行结果 输出结果: (五)编写程序 1.请用C程序告诉大家你来自哪里? 有什么爱好?(sy1.1.6.c) 2.输出以下图案: (sy1.1.7.c) * **

***

(六)分析与讨论

1.记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。

2.总结C程序的结构和书写规则。

第 7 页

信息科学技术学院《C语言程序设计》实验指导书

实验1.2 C程序快速入门

一、实验目的

1.掌握标识符、变量与常量的定义; 2.掌握C语言数据类型的种类和作用;

3.熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符;

4.掌握不同的类型数据之间赋值的规律; 5.掌握输出、输入函数的使用及格式控制;

6.进一步熟悉C程序语句和程序的结构特点,学习简单程序的编写方法。 二、实验学时数

2学时 三、实验步骤 (一)阅读程序

1. 输入并运行以下程序,观察运行结果。 #include int main() { char c1,c2; c1=97;c2=98;

printf(\ return 0;

}

(1)在第五行后面加入以下printf语句,并运行。

printf(\

字符型97,98对应a,b 分析结果 a 运行结果 b (2)在(1)的基础上,将第三行改为以下语句,并运行。 int c1,c2;

分析结果 第 8 页

信息科学技术学院《C语言程序设计》实验指导书

仍为a,b 运行结果 若改为%d,则为97,98 (3)在(1)的基础上,将第四行改为以下语句,并运行。 c1=321;c2=400;

分析结果 A,? 运行结果 2. 分析并运行此程序,当输入的数据为10时,下面程序的运行结果。 #include int main() { float x,y; scanf(\

printf(\ printf(\

printf(\ return 0; }

分析结果 2.4*x-1/2=23.500000 x%%2/5-x=-10.000000 (x-=x*10,x/=10)=0 运行结果 (二)完成程序 要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。

1.求任意输入字符的ASCⅡ码。 #include int main( ) { char a;

int b;//变量的定义

printf(“请输入一个字符:”); scanf(“%c”,&a); b=(int)a;

第 9 页

信息科学技术学院《C语言程序设计》实验指导书

printf(“\\n\\n%c的ASCⅡ码为%d\\n”,a,b); return 0; }

2、输出任意一个十进制数对应的八进制,十六进制数。 #include int main( ) { int a;

scanf(“%d”,&a);

printf(“\\n%d(10) ,%o(8), %x(16)\\n”,a,a,a); return 0; }

(三)调试程序

要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果。

1.行号 #include 1 int main( ) 2 { int u=v=89;

3 printf(“u=%d,v=%d\\n”,u,v); 4 return 0; 5 }

错 错误在 1 行 应改为: 调试正确后的运行结果 输出结果: 2.下面的程序试图计算由键盘输入的任意两个整数的平均值: 行号 #include 1 2 3 4 5 6

int main() {

int x,y,a;

scanf(\a=(x+y)/2;

printf(\

7 return 0; 8 }

第 10 页

信息科学技术学院《C语言程序设计》实验指导书

错 错误在 行 应改为: 调试正确后的运行结果 输入数据 2,6 1,4 -1,-3 -2,4 2,0 输出结果: (四)编写程序 1. 编写一个程序,从键盘输入某电视机的价格,再输出该价格打7折后的价格。

分析:必须设计一个实型变量接受从键盘输入的值,输入、输出应该有提示。#include int main() {

double a,b;

printf(\电视机的价格:\ scanf(\ b=0.7*a;

printf(\打折后的价格:%lf\ return 0; }

2. 编写一个程序, 求一元一次方程ax+b=0的根。

分析:a、b的值从键盘输入,输入时a的值不能为0(无解),方程的根即x的值为:-b/a

第 11 页

信息科学技术学院《C语言程序设计》实验指导书

实验1.3算术运算与赋值运算

一、实验目的

1.掌握算术运算符和算术表达式。

2.熟练掌握赋值运算符、复合的赋值运算符 3.熟练掌握自增1和自减1运算符。

4.熟练掌握顺序结构的程序设计,能够编写简单的应用程序。 二、实验学时数

2学时 三、实验步骤 (一)分析程序

1.分析以下程序运行的结果 #include int main() {

int i,j,m,n ;

i=8;j=10; m=++i; n=j++;

printf(\

return 0; }

分析结果 运行结果 (2)将第6、7行改为:m=i++; n=++j;

分析结果 运行结果 (3)程序改为: #include int main()

{ int i , j , m=0 , n=0 ;

i=8; j=10;

第 12 页

信息科学技术学院《C语言程序设计》实验指导书

}

m+=i++; n-=--j;

printf(“%d,%d,%d,%d\\n”,i,j,m,n);

return 0;

分析结果 运行结果 1. 输入并运行以下程序,观察运行结果。 #include int main( ) { int a=17;

float u=1234.567;

printf(\ printf(\ return 0; }

分析结果 运行结果 2. 输入并运行以下程序,观察运行结果。 #include int main( ) { int a,x,y; x=(a=2,6*2); y=a=2.6 *a;

printf(“x=%d,y=%d\\n”,x,y);

return 0; }

分析结果 运行结果 3.阅读以下程序,若输入的数据形式为25 13 10,输出结果为:

第 13 页

信息科学技术学院《C语言程序设计》实验指导书

#include int main( ) { int x,y,z;

scanf(\

printf(\return 0; }

分析结果 运行结果 (二)完成程序

要求:按照给定题目要求,参照出现的语句,填写程序空白处。 1. 键盘输入任意一个小写字母,将其转换成大写字母,然后输出。 #include int main( ) { char c1,c2; c1=getchar( ); c2= ;

putchar('\\n');putchar('\\'' );putchar(c2); putchar('\\'' ); return 0; }

(a?b)?4a?b的值。2. 求(设a=25,b=5)

#include int main( ) { float a=25,b=5; float c;

c= ; printf(\ return 0; }

(三)调试程序

要求:分析下列程序是否正确,如有错误,指出错误所在,并改正;若正确,写出运行结果。

第 14 页

信息科学技术学院《C语言程序设计》实验指导书

1. 行号 #include

1 int main( ) 2 { int i,k; 3 i=8; 4 k=5*I*I;

5 printf(\6 return 0; 7 } 错 错误在 行 应改为: 调试正确后的运行结果

2.该程序输入一个三位数,然后进行个位和百位的置换,如 234 ,转换成432 行号 #include 1 2 3 4 5 6 7 8

int main( ) { int n,a,b,c,m;

scanf(\a=n;

b=(n/10); c=(n/100); m=100*a+10*b+c;

printf(\

9 return 0; 10 } 错 错误在 行 应改为: 调试正确后的运行结果

(四)编写程序

1.编程求出某学生期末三门课程的总分及平均分。结果保留小数点后一位。 2.编程从键盘输入两个整数分别给变量a和b,分别写出不借助于其他变量和借助于其他变量的条件下,将变量a和b的值实现交换。

1.编写一个程序,其功能为:从键盘上输入一个浮点数,然后分别输出该数

第 15 页

信息科学技术学院《C语言程序设计》实验指导书

的整数部分和小数部分。

分析:若输入的浮点数存入fd变量,则可用强制类型转换运算符,将输入的该数的整数部分取出:zhs=(int)fd;

2. 从键盘输入三角形的三条边a,b,c的值,计算三角形的面积,程序框架如下:

#include “sdtio.h” #include “math.h” main() {定义变量

从键盘输入 a,b,c 三条边的值 计算 s 的值 计算三角形面积 输出结果 }

第 16 页

信息科学技术学院《C语言程序设计》实验指导书

1.编程序计算数学表达式:b2 -4ac,a,b,c的值从键盘输入。 2. 编程序计算298秒是几分几秒。

提示:设 int x=298; 再定义两个变量存放分(m)、秒(s)值; 则:m=x/60;s=x`;

3.从键盘输入一个三位数,求各位数字之和。例如,输入的三位数为358,则输出结果为3+5+8=16 。

提示: 题目的关键是要求出该数的个、十、百位上的数字,可利用C语言整数相除,结果仍为整数的特点。若设该数为data,它的个、十、百位为g、s、b,则b=data/100 ;s=(data-b*100)/10;g=data (三)编写程序

1.用赋值语句表达:a 的值为2,b的值比a多2,c 的值比b的值多2,并输出a,b,c的结果。请编出完整程序验证。

2.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请先填空,再编出完整程序验证。

a+=_________;(a为a、b之和) b=a-__________;a-=___________;

第 17 页

信息科学技术学院《C语言程序设计》实验指导书

实验1.4逻辑运算及if语句

一、实验目的

1.掌握关系、条件、逻辑运算符及关系、条件、逻辑表达式。 2.掌握逗号运算符和逗号表达式。

3.熟练掌握三种单分支、双分支和多分支if语句。 4.掌握if语句的嵌套。 二、实验学时数

2学时 三、实验步骤 (一)阅读程序 1.分析程序运行结果: #include int main()

{ int i , j , m=0 , n=0 ; }

分析结果 运行结果 i=8; j=10; m+=i++; n-=--j;

printf(“%d,%d, \\n”,(i,j,m),n);

return 0;

2. 输入并运行以下程序,观察运行结果。 #include int main() {

int x=10,y=9,a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y;

printf(\return 0; }

第 18 页

信息科学技术学院《C语言程序设计》实验指导书

分析结果 运行结果 3、若x=12,则以下程序运行的结果是 #include int main() { int x,y;

scanf(\y=x>12?x+10:x-12; printf(\return 0; }

分析结果 运行结果 三、实验步骤 (一)阅读程序

1. 输入并运行以下程序,观察运行结果。 #include int main() { int a,b,c; }

分析结果 运行结果 a=10;b=60;c=30; if(a>b) a=b; b=c; c=a;

printf(\

return 0;

2. 输入并运行以下程序,观察运行结果。 #include int main()

第 19 页

信息科学技术学院《C语言程序设计》实验指导书

{ int x=60,a=30,b=20; int v1=3,v2=8; if (a

if (b!=15)

if (!v1) x=1; else

if (v2) x=10;

x=-2;

printf(“%d\\n”, x); return 0; }

分析结果 运行结果 (二)完成程序

要求:按照给定题目要求,参照出现的语句,填写程序空白处。

1. 输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变,请在_______上填写正确内容。

#include int main() { char ch ; scanf(\

if (_______________________)ch=ch+32;

else if (ch>='a' && ch<='z' ) ____________________; printf(\ return 0; }

2. 以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型,请在_______上填写正确内容。 #include #include int main()

{ float a, b , c ;

第 20 页

信息科学技术学院《C语言程序设计》实验指导书

float s , area ;

scanf(“%f ,%f ,%f” , &a, &b ,&c); if (___________________________) { s=(a+b+c)/2;

area= sqrt(s*(s-a)*(s-b)*(s-c)); printf(“三角形的面积为:%f\\n”,area); if (_________________) }

printf(“等边三角形\\n”); printf(“等腰三角形\\n”); printf(“直角三角形\\n”);

else printf(“一般三角形\\n”);

else if (_________________)

else if((a*a+b*b==c*c)|| (a*a+c*c==b*b)|| (c*c+b*b==a*a))

else printf(“不能组成三角形\\n”); return 0; }

(三)调试程序

要求:分析下列程序是否正确,如有错误,指出错误所在,并改正;若正确,写出运行结果。

1. 以下程序实现求分段函数。 y= -1 x>9 x*(x+2) 3 int main() 1 { 2 3 4 5 6 7 8

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

printf(“%d\\n”, y); return 0;

第 21 页

信息科学技术学院《C语言程序设计》实验指导书

9 }

错 错误在 行 应改为: 调试正确后的运行结果 输入数据:4 2 1 -3 10 输出结果:

2. 有一函数关系如下: x-3 x<0

y= 0 x=0 x+3 x>0

以下程序表示上面的函数关系

行号#include

int main()

1 { int x ,y ; 2 scanf(\3 y=x-3; 4 if (x!=0) 5 if (x>0) y=x+3; 6 else y=x;

7 printf(\8 return 0; 9 }

错 错误在 行 应改为: 调试正确后的运行结果 输入数据:5 0 -3 输出结果: (四)编写程序 1. 输入某学生的成绩(成绩为100分制,可以为89.5,如果输入的成绩不在0-100之间,请给出出错提示。),经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C

第 22 页

信息科学技术学院《C语言程序设计》实验指导书

60至70分(包括60):D

60分以下: E

2.输入一个三位的正整数,判断该数是否为水仙花数。(水仙花数的是指一个三位数,其各位数字的立方各等于该数本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3)

1.某邮局对邮寄包裹有如下规定:若包裹的长宽高任一尺寸超过1米或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收取手续费0.5元,再加上根据下表按重量weight计算的邮资,请编写程序计算某包裹的邮寄资费。

2. 输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的个数。

第 23 页

信息科学技术学院《C语言程序设计》实验指导书

实验1.5 switch选择结构

一、实验目的

1.熟练掌握switch语句。

2.掌握省略break的case语句的执行方式。

3.比较if语句的嵌套及if、switch多路分支语句。

二、实验学时数

2学时 三、实验步骤 (一)阅读程序

1. 输入并运行以下程序,观察运行结果。 #include int main() { int i=1;

switch(i)

{ case 1:printf(\case 2:printf(\case 3:printf(\case 4:printf(\}

printf(\return 0; }

分析结果 运行结果 (二)完成程序

要求:按照给定题目要求,参照出现的语句,填写程序空白处。 1. 以下程序实现的功能是: -1 x<0,请将以下程序补充完整 y= 0 x=0 1 x>0

#include int main()

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

第 24 页

信息科学技术学院《C语言程序设计》实验指导书

switch(x<0)

{case 1: ;break; case 0:switch(x==0) { case 1;y=0;break;

case 0:y=1;

}

}

printf(“y=%d\\n”,y); return 0; }

2.用switch结构编写一个处理四则运算的程序。 #include int main()

{ float v1,v2;char op;

printf(“please type your expression:\\n”); scanf(“%f%c%f”,&v1,&op,&v2); switch( )

{case ‘+’:printf(“%1.0f+%1.0f=%1.0f\\n”,v1,v2,v1+v2);break; case ‘ ’:printf(“%1.0f-%1.0f=%1.0f\\n”,v1,v2,v1-v2); break; case ‘*’:printf(“%1.0f*%1.0f=%1.0f\\n”,v1,v2,v1*v2); break; case ‘/’:

if( ){printf(“除数为零\\n”);break;} else

{printf(“%1.0f/%1.0f=%1.0f\\n”,v1,v2,v1/v2);break;} default:printf(“运算符错误\\n”);

} return 0;

}

3.输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3 月5 日为例,应该先把前两个月的加起来,然后再加上5 天即本年的第几天,特殊情况,闰年且输入月份大于3 时需考虑多加一天。 #include int main()

{ int day,month,year,sum,leap;

printf(\scanf(\

第 25 页

信息科学技术学院《C语言程序设计》实验指导书

switch(month)/*先计算某月以前月份的总天数*/ {

case 1:________;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break;

default:printf(\}

sum=sum+day; /*再加上某天的天数*/

if(year@0==0||(_______________))/*判断是不是闰年*/

leap=1; else

leap=0;

if(______________________)/*如果是闰年且月份大于2,总天数应该加一天*/ _____________;

printf(\ \\n \return 0; }

(三)编写程序

1. 以下4种水果([1]苹果[2]梨[3]桔子[4]芒果)单价分别是2.0元/公斤,2.5元/公斤,3.0元/公斤,4.5元/公斤,请输入水果编号、重量,计算应付款。 2.从键盘输入1-7,显示输出该日期对应的英文日期

(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,sunday)名称。

3.己知某公司员工的保底薪水为500,某月所接工程的利润p与利润提成的关系如下:(计量单位:元)(选作)

p<=1000 没有提成 1000

提成15%

5000

第 26 页

信息科学技术学院《C语言程序设计》实验指导书

1.编写程序实现运输公司对用户计算运费。路程(s)越远,每公里运费越低。 2.考虑一个自动售货机,提供如下选择: [1]矿泉水 [2]巧克力 [3]爆米花 [4] 果汁

[5] 显示购买商品的数量 [6] 退出系统

第 27 页

信息科学技术学院《C语言程序设计》实验指导书

实验2循环结构及数组(共8学时)

实验2.1 循环结构(2学时)

2.1.1 while循环和do…while循环及二者比较 2.1.2 for循环 2.1.3循环嵌套

一、实验目的

1. 掌握while ,do-while,for 循环语句的使用与区别; 2. 掌握循环条件、循环体、循环终止等循环要素; 4. 理解循环执行过程。 5. 熟练使用循环语句编写程序。 二、实验学时数

2学时 三、实验步骤 (一)阅读程序

1. #include int main() { int a=2,b=8; while(b--<0)

b-=a ; a++ ;

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

分析结果 运行结果 return 0;

2. #include int main()

{ int x=2 ,y=6 , z=3;

do

while(z-->0&&++x<5) ;

第 28 页

y=y-1;

信息科学技术学院《C语言程序设计》实验指导书

printf(“x=%d\\ty=%d\\tz=%d\\n”,x,y,z); return 0; } 分析结果 运行结果 3. #include

int main() { int n=0;

while(n<=2) { n++;

printf(\return 0; } 分析结果 运行结果

(二)完成程序

要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。

1. 以下程序的功能是计算正整数2345的各位数字平方和,请在_______

上填写正确内容。 #include

int main() n=2345; do

{ sum = sum + ____________; ______________________; } while( n) ; printf(\return 0; }

2. 以下程序的功能是计算S=2+4+8+16+?+128,请在______上填写正确内容。

第 29 页

{ int n,sum= 0 ;

信息科学技术学院《C语言程序设计》实验指导书

#inlcude

int main()

{ int a, s,n ,count ;

a=2 ,s=0 , n=1 ,count=1;

while(count<=7) { _____________;

s = s + n ; _____________;}

printf(“s = %d\\n”,s ); return 0;

}

(三)调试程序

要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果。

1. 以下程序输出100(包括100)以内的数,每行输出10个。

行号 #include

int main() 1 { int k=100; 2 3 4 6

while(k=0)

{ printf( \ }

k--;

if (k==0)printf(\

5

7 return 0; 8 }

错 错误在 5 行 应改为: if (k>0)printf(\ 2.下面程序的功能是计算n!。

行号 #include 1 2 3 4 5

int main() { int i,n,s=1;

printf(\ scanf(\

for(i=1;i<=n;i++)

第 30 页

信息科学技术学院《C语言程序设计》实验指导书

6 7 8 9 错 s=s*i;

printf(\ return 0; } 错误在 行 应改为: 调试正确后的运行结果 输入数据: 1 5 9 12 15 输出结果: 3. 以下程序输出1---100的数字 行号 #include

int main()

1 { int i =100; 2 3 5 6 7 8 9

while( 1 ) { } return 0;

错 错误在 行 应改为: i = i0+1 ; printf( “ M ,“ ,i ) ; if ( i==0 ) printf ( “ \\n ”) ; if ( i>100) break ;

10 } (四)编写程序 1.小明妈妈给他买了若干块巧克力,小明第一天吃了一半,还不过瘾,又多吃了一块,第二天又将剩下的巧克力吃掉一半,又多吃一块,以后每天都吃了前一天剩下的一半零一块。到第10天再想吃时,只剩下一块了。编程计算小明妈妈总共给小明买了多少块巧克力?

2. 一百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我二分钱,第三天我仍给你十万元,你给我四分钱,…,你每天给我的钱是前一天的两倍,直到满一月(30天) ,百万富翁很高兴,欣然接受了这个契约。请编写一个程序计算这一个月中陌生人给了百万富翁多少钱?百万富翁给陌生人

第 31 页

信息科学技术学院《C语言程序设计》实验指导书

多少钱?

While实现:

1.译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。可以按以下的规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母字符不变。

2.计算1~20之间的奇数之和和偶数之和。 do…while循环实现

1.日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想,猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘以3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1,请编程验证。 2.统计一个整数的位数。从键盘输入一个整数,统计该数的位数。例如,输入12345,输出5;输入-99,输出2。 For循环实现

1.马克思手稿里有一道有趣的数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50先令:每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人和小孩各有几人?

2.有一对兔子,从出生后第三个月起每个月都生一对小兔子,小兔子长到第三个月后每月又生一对小兔子,假如兔子都不死,问20个月内每个月的兔子总数为多少? 3.输入一批学生的成绩,找出最高分。 循环嵌套

1.计算1!+2!+3!+…+100!。要求使用嵌套循环。

2. 三对情侣参加婚礼,三个新郎为A,B,C,三个新娘为X,Y,Z,有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:A说他将和X结婚;X说他的未婚夫是C;C说他将和Z结婚,这人听后知道他们在开玩笑,全是假话,请编程找出谁将和谁结婚。

第 32 页

信息科学技术学院《C语言程序设计》实验指导书

循环结构程序设计补充

(一)阅读程序

1. #include

int main( ) {int a=0,j; for(j=0;j<4;j++) { switch( j ) { case 0:

case 3:a+=2;break; case 1:

case 2:a+=3;break;; default:a+=5;break;

} }

printf(\return 0; }

分析结果 运行结果 2. #include int main( ) { int i;

for(i=1;i<6;i++)

{ if(i%2) {printf(\ printf(\ }

printf(\return 0; } 分析结果 运行结果 3. #include int main()

第 33 页

信息科学技术学院《C语言程序设计》实验指导书

{ int s=0,t,i,j; for(i=1;i<=3;i++) { t=1;

for(j=1;j<=2*i-1;j++) t=t*j; s=s+t; }

printf(\return 0; } 分析结果 运行结果 4.#include int main() { int y,a; y=2;a=1;

while(y--!=-1) { do {

a*=y; a++;

}while(y--); }

printf(\return 0; }

分析结果 运行结果 (二)完成程序 要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。

1. 一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内

的所有完数。请在_______上填写正确内容。 #include int main()

第 34 页

信息科学技术学院《C语言程序设计》实验指导书

{ int n,s,j;

for(n=1;n<=____________;n++) { s=___________;

for(j=1;j

if(______________)printf(\} return 0; }

2. 以下程序的功能是打印以下图形,请在______上填写正确内容。 #include int main() { int i,j;

for(i=1; i<=4;i++) {

for(j=1;j<=___________;j++) printf(\

for(j=1;j<=___________;j++) printf(\

printf(\}

return 0; }

3. 以下程序功能是完成用10元人民币换成一角、两角、五角的所有兑换方案,请在_______上填写正确内容。 #include int main() { int i,j,k,n=0; for (i=0;i<=20;i++) for (j=0;j<=50;j++) { for(__________________)

if (________________) { _________________;

printf(\第%d种: = = =\

第 35 页

信息科学技术学院《C语言程序设计》实验指导书

} return 0;

if(n%3==0)printf (\ }

}

(三)编写程序

1.打印九九乘法表。格式:1*1=1

2. 每个苹果0.8元,第一天买2个,从第二天开始,每天买前一天的2倍,直到当天购买的苹果个数不超过100的最大值为止,编写程序求每天平均花多少钱。

第 36 页

信息科学技术学院《C语言程序设计》实验指导书

实验2.2数组一:一维数组

一、实验目的

1. 掌握一维数组的定义。 2. 掌握一维数组的引用 3. 掌握一维数组的初始化。

4.熟练对一维数组元素进行输入输出。 二、实验学时数

2学时 三、实验步骤 (一)阅读程序

1.#include

int main()

{ int a[]={1,2,3,4,5},i,j,s=0; j = 1;

for ( i = 4 ; i>=0 ; i--) { }

printf(\ } 分析结果 运行结果

s = s+ a[i] * j ; j = j * 10 ;

return 0;

(二)完成程序

要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。

1.下面程序的功能是将十进制整数转换成二进制 ,请在_______上填写正确内容。

#include int main()

第 37 页

信息科学技术学院《C语言程序设计》实验指导书

{ int k=0,n,j,num[16]={0}; }

2、 设数组 a 的元素均为正整数,以下程序是求 a 中奇数的个数和奇数的平均值,请在_______上填写正确内容。 #include int main()

{ int a[10]={10,9,8,7,6,5,4,3,2,1}; int k,s,i; float ave;

for(i=0,k=s=0;i<10;i++)

{ if(_____________) continue ; s+=__________; k++; }

if(k!=0)

{ ave=s/k;

printf (\

} return 0; }

(三)调试程序

要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果。

1.以下程序实现的功能是输入四个数,求这四个数的和.

#include

第 38 页

printf(\输入要转换的十进制数\\n\scanf(\do

{ num[k]=________________; n=n/2;________________; } while(n!=0);

printf(\

printf (\转换为二进制数:\\n\

for(k=15;k>=0;k--) return 0;

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

Top