1、 科技大学 信息科学技术学院 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
2、1函数一:函数的定义、调用和声明50 实验3.2函数二:函数的参数传递256 实验3.3函数三:函数的嵌套和递归258 实验3.4 自定义数据类型(2学时)60 实验4:指针(共6学时)62 实验4.1指针一:指针的定义与运算62 实验4.2指针二:指向数组的指针68 实验4.3指针三:用指针操作字符串272 69 / 71 实验1 C语言入门与选择结构 实验1.1 Visual C++6.0开发环境 一、实验目的 1. 熟悉C语言的系统环境,掌握在集成环境中编辑、编译、连接和运行C语言程序的方法。 2. 掌握C语言源程序的结构特点与书写规。 二、实验学时
3、数 2学时 三、实验步骤与任务 (一) VC++6.0集成环境 (1)运行VC++6.0 a.双击桌面上的VC++6.0快捷方式,运行VC++6.0。 b.双击"C:\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE",运行VC++6.0。 (2)认识VC++6.0 菜单栏 标准按钮 执行 执行 组建 工作空间 编译 输出 标题栏的左侧显示当前的文件名,右侧有最小化,最大化和关闭三个按钮。 菜单栏包含了开发环境中几乎所有的命令,其中一些常用的命令还被排列
4、在工具栏中。 工具栏上的按钮提出和一些菜单命令相对应,提供了经常使用的命令的一种快捷方式。 项目工作区窗口包含有Class View和File View两个页面。 (3)建立C语言源文件,单击[文件]-[新建],单击[文件]选项卡,新建一个C++ Source File,选择存储位置(新建建立的文件夹D:\test),输入文件名“myhello.c”,进入D:\test,可以看到新建的文件myhello.c。 (4)输入C语言源程序,在打开的程序编辑窗口输入C语言源程序。 输入C语言源程序
5、 (5)编译 点击[组建]-[编译],或按ctrl+F7进行预编译,或用工具栏工具编译,编译成功生成.obj目标文件(myhello.obj),显示在输出窗口。 编译工具 编译结果 (6)连接 点击[组建]-[编译]命令,或按F7,或点按连接按钮执行连接操作。连接成功生成扩展名为.exe的文件。 连接工具 连接结果 (7)执行 点击[组建]-[执行]命令,或按ctrl+F5,或点按执行按钮完成“执行”操作。 完成后界面如下,到目前为止一个简单的C程序创建成
6、功。 执行工具 结果输出窗体 (8)关闭工作空间 程序运行结束后,如果想输入一个新程序,我们需要将当前的程序关闭,选择菜单栏中的“文件”→“关闭工作空间”即可。 (9)常用功能键与其意义 为了使程序员能够方便快捷地完成程序开发,开发环境提供了大量快捷方式来简化一些常用操作的步骤。键盘操作直接、简单,而且非常方便,因而程序员非常喜欢采用键盘命令来控制操作。下面是一些最常用的功能键,希望在实验中逐步掌握。 操作类型 功能键 对应菜单 含义 文件操作 Ctrl+N File|New 创建新的文件、项目等 Ctrl+
7、O File|Open 打开项目、文件等 Ctrl+S File|Save 保存当前文件 编辑操作 Ctrl+X Edit|Cut 剪切 Ctrl+C Edit|Copy 复制 Ctrl+V Edit|Paste 粘贴 Ctrl+Z Edit|Undo 撤消上一个操作 Ctrl+Y Edit|Redo 重复上一个操作 Ctrl+A Edit|Select All 全选 Del Edit|Del 删除光标后面的一个字符 建立程序操作 Ctrl+F7 Build| Compiler curren
8、t file 编译当前源文件 Ctrl+F5 Build|Run exe 运行当前项目 F7 Build|Build exe 建立可执行程序 F5 Build|Start Debugging 启动调试程序 调试 F5 Debug|Go 继续运行 F11 Debug|Step into 进入函数体部 shift+F11 Debug|Step out 从函数体部运行出来 F10 Debug|Step over 执行一行语句 F9 设置/清除断点 Ctrl+F10 Debug|Run
9、to cursor
运行到光标所在位置
shift+F9
Debug|QuickWatch
快速查看变量或表达式的值
Shift + F5
Debug|Stop debugging
停止调试
要求:请用最简单的语言描述如何新建一个C语言的源文件,如何编辑程序,如何编译程序,如何连接程序,如何运行程序,程序结果然后显示?
(二)阅读程序
要求:编辑下面源程序,并且读懂与分析运行程序,上机运行程序,并与分析结果相对比。
1. 输入并运行以下程序,观察运行结果。(sy1.1.1.c)
# include
10、f("*********************\n");
printf(" Hello world!\n");
printf("*********************\n");
return 0;
}
分析结果
运行结果
思考:如何采用一个输出(printf)函数调用实现此输出结果。
2.输入并运行以下程序,观察运行结果。(sy1.1.2.c)
# include
11、a+b=%d\na-b=%d\n",sum,minus);
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
12、
a=33;
c=11;
printf("%d\n",(a-b)*c);
return 0;
}
2.求圆的面积。(sy1.1.4.c)
#include
13、1.5.c)
行号 #include
14、对策。分析讨论对策成功或失败的原因。
2.总结C程序的结构和书写规则。
实验1.2 C程序快速入门
一、实验目的
1.掌握标识符、变量与常量的定义;
2.掌握C语言数据类型的种类和作用;
3.熟悉如何定义一个整型、字符型、实型变量,以与对它们赋值的方法,了解以上类型数据输出时所用的格式转换符;
4.掌握不同的类型数据之间赋值的规律;
5.掌握输出、输入函数的使用与格式控制;
6.进一步熟悉C程序语句和程序的结构特点,学习简单程序的编写方法。
二、实验学时数
2学时
三、实验步骤
(一)阅读程序
1. 输入并运行以下程序,观察运行结果。
#include 15、io.h>
int main()
{ char c1,c2;
c1=97;c2=98;
printf("%c,%c\n",c1,c2);
return 0;
}
(1)在第五行后面加入以下printf语句,并运行。
printf("%d,%d\n",c1,c2);
分析结果
字符型97,98对应a,b
运行结果
a
b
(2)在(1)的基础上,将第三行改为以下语句,并运行。
int c1,c2;
分析结果
运行结果
仍为a,b
若改为%d,则为97,98
(3)在(1)的基础上,将第四行改为以下语句,并 16、运行。
c1=321;c2=400;
分析结果
运行结果
A,?
2. 分析并运行此程序,当输入的数据为10时,下面程序的运行结果。
#include 17、
分析结果
运行结果
2.4*x-1/2=23.500000
x%%2/5-x=-10.000000
(x-=x*10,x/=10)=0
(二)完成程序
要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。
1.求任意输入字符的ASCⅡ码。
#include 18、 0;
}
2、输出任意一个十进制数对应的八进制,十六进制数。
#include 19、 return 0;
5 }
错
错误在 1 行
应改为:
调试正确后的运行结果
输出结果:
2.下面的程序试图计算由键盘输入的任意两个整数的平均值:
行号 #include 20、
2,6
1,4
-1,-3
-2,4
2,0
输出结果:
(四)编写程序
1. 编写一个程序,从键盘输入某电视机的价格,再输出该价格打7折后的价格。
分析:必须设计一个实型变量接受从键盘输入的值,输入、输出应该有提示。#include 21、输入,输入时a的值不能为0(无解),方程的根即x的值为:-b/a
实验1.3算术运算与赋值运算
一、实验目的
1.掌握算术运算符和算术表达式。
2.熟练掌握赋值运算符、复合的赋值运算符
3.熟练掌握自增1和自减1运算符。
4.熟练掌握顺序结构的程序设计,能够编写简单的应用程序。
二、实验学时数
2学时
三、实验步骤
(一)分析程序
1.分析以下程序运行的结果
#include 22、d\n",i,j,m,n);
return 0;
}
分析结果
运行结果
(2)将第6、7行改为:m=i++;
n=++j;
分析结果
运行结果
(3)程序改为:
#include 23、下程序,观察运行结果。
#include 24、return 0;
}
分析结果
运行结果
3.阅读以下程序,若输入的数据形式为25 13 10,输出结果为:
#include 25、
int main( )
{ char c1,c2;
c1=getchar( );
c2=;
putchar('\n');putchar('\'' );putchar(c2); putchar('\'' );
return 0;
}
2. 求的值。(设a=25,b=5)
#include 26、确,写出运行结果。
1. 行号 #include 27、0)%10;
6 c=(n/100)%10;
7 m=100*a+10*b+c;
8 printf("%d=>%d\n ",n,m);
9 return 0;
10 }
错
错误在行
应改为:
调试正确后的运行结果
(四)编写程序
1.编程求出某学生期末三门课程的总分与平均分。结果保留小数点后一位。
2.编程从键盘输入两个整数分别给变量a和b,分别写出不借助于其他变量和借助于其他变量的条件下,将变量a和b的值实现交换。
1.编写一个程序,其功能为:从键盘上输入一个浮点数,然后分别输出该数的整数部分和小数部分。
分析:若输入的浮点数存入fd 28、变量,则可用强制类型转换运算符,将输入的该数的整数部分取出:zhs=(int)fd;
2. 从键盘输入三角形的三条边a,b,c的值,计算三角形的面积,程序框架如下:
#include “sdtio.h”
#include “math.h”
main()
{定义变量
从键盘输入 a,b,c 三条边的值
计算 s 的值
计算三角形面积
输出结果
}
1.编程序计算数学表达式:b2 -4ac,a,b,c的值从键盘输入。
2. 编程序计算298秒是几分几秒。
提示:设 int x=298; 再定义两个变量存放分(m)、秒(s)值; 则:m=x/60;s=x%6 29、0;
3.从键盘输入一个三位数,求各位数字之和。例如,输入的三位数为358,则输出结果为3+5+8=16 。
提示:题目的关键是要求出该数的个、十、百位上的数字,可利用C语言整数相除,结果仍为整数的特点。若设该数为data,它的个、十、百位为g、s、b,则b=data/100 ;s=(data-b*100)/10;g=data%10
(三)编写程序
1.用赋值语句表达:a 的值为2,b的值比a多2,c 的值比b的值多2,并输出a,b,c的结果。请编出完整程序验证。
2.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请先填空,再编出完整程序验证。
a+=_ 30、a为a、b之和) b=a-__________;a-=___________;
实验1.4逻辑运算与if语句
一、实验目的
1.掌握关系、条件、逻辑运算符与关系、条件、逻辑表达式。
2.掌握逗号运算符和逗号表达式。
3.熟练掌握三种单分支、双分支和多分支if语句。
4.掌握if语句的嵌套。
二、实验学时数
2学时
三、实验步骤
(一)阅读程序
1.分析程序运行结果:
#include 31、
printf(“%d,%d, \n”,(i,j,m),n);
return 0;
}
分析结果
运行结果
2. 输入并运行以下程序,观察运行结果。
#include 32、)
{int x,y;
scanf("%d",&x);
y=x>12?x+10:x-12;
printf("y=%d\n",y);
return 0;
}
分析结果
运行结果
三、实验步骤
(一)阅读程序
1. 输入并运行以下程序,观察运行结果。
#include 33、
分析结果
运行结果
2. 输入并运行以下程序,观察运行结果。
#include 34、母;如果它是一个小写字母,则把它变成大写字母;其他字符不变,请在_______上填写正确容。
#include 35、和三角形的类型,请在_______上填写正确容。
#include 36、边三角形\n”);
else if (_________________)
printf(“等腰三角形\n”);
else if((a*a+b*b==c*c)|| (a*a+c*c==b*b)|| (c*c+b*b==a*a))
printf(“直角三角形\n”);
else printf(“一般三角形\n”);
}
else printf(“不能组成三角形\n”);
return 0;
}
(三)调试程序
要求:分析下列程序是否正确,如有错误,指出错误所在,并改正;若正确,写出运行结果。
1. 以下程序实现求分段函数。
y= -1 37、x>9
x*(x+2) 3 38、4 2 1 -3 10
输出结果:
2. 有一函数关系如下: x-3 x<0
y= 0 x=0
x+3 x>0
以下程序表示上面的函数关系
行号#include 39、 printf("y=%d\n" , y);
8 return 0;
9 }
错
错误在行
应改为:
调试正确后的运行结果
输入数据:5 0 -3
输出结果:
(四)编写程序
1. 输入某学生的成绩(成绩为100分制,可以为89.5,如果输入的成绩不在0-100之间,请给出出错提示。),经处理后给出学生的等级,等级分类如下:
90分以上(包括90): A
80至90分(包括80):B
70至80分(包括70):C
60至70分(包括60):D
60分以下: E
40、
2.输入一个三位的正整数,判断该数是否为水仙花数。(水仙花数的是指一个三位数,其各位数字的立方各等于该数本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3)
1.某邮局对邮寄包裹有如下规定:若包裹的长宽高任一尺寸超过1米或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收取手续费0.5元,再加上根据下表按重量weight计算的邮资,请编写程序计算某包裹的邮寄资费。
2.输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不与格成绩的个数。
实验1.5 switch选择结构
一、实验目的
1.熟练掌握switch语句。
2.掌握省略break 41、的case语句的执行方式。
3.比较if语句的嵌套与if、switch多路分支语句。
二、实验学时数
2学时
三、实验步骤
(一)阅读程序
1. 输入并运行以下程序,观察运行结果。
#include 42、n 0;
}
分析结果
运行结果
(二)完成程序
要求:按照给定题目要求,参照出现的语句,填写程序空白处。
1. 以下程序实现的功能是: -1 x<0,请将以下程序补充完整
y= 0 x=0
1 x>0
#include 43、tf(“y=%d\n”,y);
return 0;}
2.用switch结构编写一个处理四则运算的程序。
#include 44、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 天即本年的第几天,特殊情 45、况,闰年且输入月份大于3 时需考虑多加一天。
#include 46、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("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(_______________))/*判断是不是闰年*/
leap=1;
e 47、lse
leap=0;
if(______________________)/*如果是闰年且月份大于2,总天数应该加一天*/
_____________;
printf("It is the %dth day. \n ",sum);
return 0;
}
(三)编写程序
1. 以下4种水果([1]苹果[2]梨[3]桔子[4]芒果)单价分别是2.0元/公斤,2.5元/公斤,3.0元/公斤,4.5元/公斤,请输入水果编号、重量,计算应付款。
2.从键盘输入1-7,显示输出该日期对应的英文日期(Monday,Tuesday,Wednesday,Thursday,Friday 48、Saturday,sunday)名称。
3.己知某公司员工的保底薪水为500,某月所接工程的利润p与利润提成的关系如下:(计量单位:元)(选作)
p<=1000 没有提成
1000 49、爆米花
[4] 果汁
[5] 显示购买商品的数量
[6] 退出系统
实验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 50、t a=2,b=8;
while(b--<0)
b-=a ;
a++ ;
printf(“a=%d,b=%d\n”,a,b);
return 0;
}
分析结果
运行结果
2. #include






