C程序设计实验指导Word文件下载.docx
- 文档编号:18064034
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:24
- 大小:208.73KB
C程序设计实验指导Word文件下载.docx
《C程序设计实验指导Word文件下载.docx》由会员分享,可在线阅读,更多相关《C程序设计实验指导Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
求字节数运算符(sizeof())
7.基本输入输出函数
scanf()函数和printf()函数的意义及用法。
getchar()函数和putchar()函数的意义及用法。
三.实验内容
【练习1】使用VisualC++6.0集成环境来编辑、编译并运行下面的示例程序:
#include<
stdio.h>
voidmain()
{
printf("
ThisismyfirstCprogram!
\n"
);
}
实验步骤:
(1)启动VisualC++开发环境
(2)创建一个工程
A.单击File(文件)菜单中的New(新建)选项,显示出新建对话框
图1-1VC++6.0新建对话框
B.选择Win32ConsoleApplication(Win32控制台程序)。
C.选择项目所在路径及输入项目的名称
D.在建立一个什么类型的控制台应用程序中,选中“一个空工程”,按“完成”
按钮,至此,已经建立好工程相关的文件。
图1-2选择控制台程序中的“一个空工程”
(3)建立C++源程序文件
A.选菜单命令Project(工程)|AddtoProject(增加到工程)|New(新建),弹出New(新建)对话框。
图1-3新建c语言源文件的步骤一
B.在New(新建)对话框的Files(文件)选项卡中选择C++SourceFile,并填入文件名称,单击OK按钮,完成新建C++源程序文件。
图1-4新建c语言源文件的步骤二
(4)编辑C语言源程序文件
A.在文件编辑窗口中输入代码。
B.完成后,选择菜单File(文件)|Save(保存)保存这个文件。
图1-5编辑C语言源程序
(5)编译、链接并运行可执行程序
A.选择菜单命令Compile(编译),建立目标代码文件。
如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新选择菜单命令Compile建立目标代码文件。
B.选择菜单命令Build(组建),建立可执行程序。
如果你正确输入了源程序,此时便成功地生成了可执行程序。
如果程序有链接错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新选择菜单命令Build建立可执行程序。
C.选择菜单命令Run(运行),运行程序,观察屏幕显示内容。
(6)写完一个程序编写下一个程序的时候必须要关闭工作空间选择菜单命令File(文件)|ColseWorkSpace(关闭工作空间)。
【练习2】输入并运行下面的程序
voidmain()
charc1,c2;
c1='
a'
;
c2='
b'
printf("
%c%c\n"
c1,c2);
(1)运行此程序。
(2)在此基础上增加一条语句:
printf(“%d%d\n”,c1,c2);
再运行,并分析结果。
(3)将变量定义改为:
intc1,c2;
再使之运行,并观察结果。
(4)再将赋值部分改为:
c1=a;
c2=b;
再使之运行,分析其运行结果。
(5)再将赋值部分改为:
c1=“a”;
c2=“b”;
(6)再将赋值部分改为:
c1=280;
c2=350;
/*用大于255的整数*/再使之运行,分析其运行结果。
在该程序中,通过运行分析说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。
【练习3】分析下面程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。
intmain()
{
inti,j,m,n;
i=5;
j=6;
m=++i;
n=j++;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
return0;
}
分别作以下改动之后,先分析再运行:
(1)将第四行m=++i;
改为:
m=i++;
n=++j;
(2)程序改为:
inti,j;
printf(“%d,%d”,i++,j++);
(3)在
(2)的基础上,将printf语句改为:
printf(“%d,%d”,++i,++j);
【练习4】为使得a=1,b=2,c=‘A’,d=5.5,在键盘上如何输入?
inta,b;
charc;
floatd;
scanf(“a=%db=%d”,&
a,&
b);
scanf(“%c%e”,&
c,&
d);
//此处为输出部分
调试:
(1)加上输出函数语句,以帮助核对输出结果。
输出语句为:
printf(“a=%d,b=%d,c=%c,d=%f”,a,b,c,d);
(2)运行程序,输入:
a=1b=2
A5.5
会产生什么结果,和要求值是否相同?
(3)若输入
a=1b=2A5.5
会产生什么结果,和要求值是否相同?
【练习5】已知圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
【提高练习】
1.要将“China”译成密码,密码规律是:
用原来的字母后面第5个字母代替原来的字母。
例如,字母“A”后面第5个是“F”,用“F”代替“A”。
因此,“China”应译为“Hmnsf”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使其分别变为’H’、’m’、’n’、’s’、’f’,并输出。
2.输入三角形三边长a、b、c,求三角形周长l和面积s。
用scanf输入数据,输出计算结果,输出时要求有文字说明。
提示
(1)注意应保证输入数据能够构成三角形
(2)需要使用开根号函数sqrt(),在程序顶部加上#include<
math.h>
实验二选择结构程序设计
1.正确使用关系表达式和逻辑表达式表示条件。
2.学习选择语句if的使用方法。
3.注意程序的书写格式,熟练掌握缩进格式的写法。
1.if的三种结构
(1)单分支选择语句
if(表达式)语句
执行单分支选择语句时,首先先判断表达式的值,若为真(非0)则执行下(后)面
的语句,若为假(0)则跳过该语句。
(2)双分支选择语句
if(表达式)语句1
else语句2
执行双分支选择语句时,首先先判断表达式的值,若为真(非0)则执行语句1;
否则执行语句2。
(3)多分支选择语句
if(表达式1)语句1
elseif(表达式2)语句2
elseif(表达式3)语句3
…
elseif(表达式m)语句m
else语句n
【练习1】从键盘输入一个整数,如果是奇数,显示“XXX是奇数”;
如果是偶数,显示“XXX是偶数”;
如果是0,显示“是0”。
【练习2】编程求解下面的函数
从键盘输入整数x的值,用上面的公式求解y值。
【练习3】从键盘输入一个字符,可以是数字、字母、或是标点符号,对输入字符进行判断,如果是数字则输出“*isanumber!
”,如果是字母则输出“*isaletter!
”,如果是其他的字符则输出“*istheother!
”(*为输入的字符)。
提示:
(1)从键盘输入一个字符,用char类型变量存储
(2)使用if语句作判断
(3)判断条件根据输入字符的ASCII码值的范围
1.输入某学生的成绩,经处理后给出学生的等级,等级分类如下:
90分以上(包括90):
A
80至90分(包括80):
B
70至80分(包括70):
C
60至70分(包括60):
D
60分以下:
E
方法:
(用if嵌套`)由题意知如果某学生成绩在90分以上,等级为A;
否则,如果成绩大于80分,等级为B;
否则,如果成绩大于70分,等级为C;
否则,如果成绩大于60分为D;
否则,如果成绩小于60分,等级为E。
当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。
因此,用if嵌套结构,先判断输入的成绩是否在0~100之间。
实验三循环结构程序设计
1.掌握while语句的格式和使用方法。
2.掌握循环语句的使用场合。
1.while语句
while语句的一般形式为:
while(表达式)
语句;
其中表达式是循环条件,语句为循环体。
while语句的语义是:
计算表达式的值,当值为真(非0)时,执行循环体语句。
【练习1】求和及平均值。
要求1:
从键盘输入5个数,求这些数据之和、平均值。
要求2:
修改程序,输入n(n由用户输入)个数。
求n个数的和及平均值。
要求3:
修改程序,连续输入多个正数,输入负数或0则输入结束,求这些正数的和及平均值。
【练习2】有一数列:
2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。
【练习3】编程求1+3+5+7+…+555的和。
1.给一个不多于5位的正整数,要求:
A.求出它是几位数;
B.分别打出每一位数字;
C.按逆序打出各位数字,例如原数为321,应输出123。
2.蜡烛燃烧之谜。
苏联著名数学家R.H.别莱利曼在他的书中记录了一道题目:
房间里电灯突然熄灭:
保险丝烧断了!
我点燃了书桌上备用的两支蜡烛,在烛光下继续工作,直到电灯修好。
第二天,需要确定昨晚断电共有多长时间。
我当时没有注意昨晚断电的时间,也没有注意什么时间来的电。
我也不知道蜡烛的原始长度。
我只记得两支蜡烛是一样长的,但粗细不同,其中粗的一支能用5小时(完全用完),细的一支能用4小时。
两支蜡烛都是经我点燃的新烛。
我没有找到蜡烛的剩余部分,家里人把它扔掉了。
“残烛几乎都烧光了,不值得保留”。
家里人这样回答。
“你还记得残余部分有多长吗?
”
“两支残烛不一样。
一支残烛的长度等于另一支的4倍。
我无法知道得更多了,只好根据以上资料,推算出停电的时间。
这类问题先去伪存真、去粗取精,将物理问题转化为数学模型。
两支蜡烛同时点燃同时熄灭,根据残烛比例确定停电时间,这就是程序要做的事。
通过分析可知,停电时间应在0~4小时之间,且不包括0和4,因为就算细烛燃尽,极限时间也就4小时。
现设两支蜡烛共同燃烧的时间量为x,根据x分分秒秒的燃烧,到最后粗烛剩余1-x/5,细烛剩余1-x/4。
又已知熄灭的条件是粗残烛长度是细残烛长度的4倍,故可列关系式为:
1-x/5=4*(1-x/4)。
还有两点:
其一,x设为什么类型呢?
因为x变化量是秒或毫秒级,所以x设成单精度型float比较合适。
其二,真能找出这么一个精确的x使1-x/5和4*(1-x/4)刚好相等吗?
未必。
粗烛燃得慢,细烛燃得快,当x从0开始逐渐增加时,1-x/5和1-x/4都要往小的方向变(残烛越来越短)。
但在相等点之前,剩余的粗残烛长度1-x/5尚未达到剩余的细残烛的长度的4倍4*(1-x/4)。
所以真正的循环结束条件是:
1-x/5<
4*(1-x/4)。
实验四较复杂结构的程序设计
1.学会使用while、do-while、for语句。
2.熟练掌握循环结构程序设计方法。
3.掌握选择结构与循环结构的嵌套。
1.switch结构和break语句的使用
switch(表达式)
{case常量表达式1:
语句1;
case常量表达式2:
语句2;
…………
case常量表达式n:
语句n;
default:
语句n+1;
(1)switch后面“表达式”的类型和常量表达式的类型是整型、字符型。
(2)每一个case的常量表达式的值必须互不相同。
(3)在case后允许有多条执行语句,可以不用{}括起来。
(4)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
(5)default子句可以省略不用。
2.do-while语句
do-while语句的一般形式为:
do
while(表达式);
其中语句是循环体,表达式是循环条件。
do-while语句的语义是:
先执行循环体语句一次,再判别表达式的值,若为真(非0)则继续循环,否则终止循环。
3.for语句
其一般形式为:
for(表达式1;
表达式2;
表达式3)
表达式1:
通常用来给循环变量赋初值,一般是赋值表达式。
也允许在for语句外给循环变量赋初值,此时可以省略该表达式。
表达式2:
通常是循环条件,一般为关系表达式或逻辑表达式。
表达式3:
通常可用来修改循环变量的值,一般是赋值语句。
这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。
三个表达式都是任选项,都可以省略。
一般形式中的“语句”即为循环体语句。
for语句的执行过程是:
1)首先计算表达式1的值。
2)再计算表达式2的值,若值为真(非0)则执行循环体一次,否则跳出循环。
3)然后再计算表达式3的值,转回第2步重复执行。
在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次。
循环体可能多次执行,也可能一次都不执行。
【练习1】求和
(即求1!
+2!
+……+20!
)
(1)首先要求出每一项的n!
的值。
(2)然后把各项相加得到所求的值。
(3)存储求和运算结果的变量的初始值应为0。
(4)存储求积运算结果的变量的初始值应为1。
【练习3】输入两个正整数m和n,求其最大公约数和最小公倍数
(1)最大公约数:
能够被m和n同时整除的最大正整数
(2)最小公倍数:
m和n相乘的积除以最大公约数
(3)使用for循环,将m和n同时除以1到m(m为m和n两者中较小者),直到找出最大的正整数即为最大公约数。
【练习4】打印所有的“水仙花数”。
“水仙花数”是一个三位数,其各位数字立方和等于该数本身。
(1)“水仙花数”是三位数,所以范围是从100到999。
(2)知道循环的次数,选用for循环。
(3)循环中需要把数字的每一位都分离出来,然后求和,同原数字比较,进行判断。
【练习5】一个数如果恰好等于它的因子之和,这个数就称为完数。
求100之内的所有完数。
6=1+2+3,1,2,3是6的因子,6是一个完数。
1.百钱买百鸡问题:
一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少。
设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:
这里x,y,z为正整数,且z是3的倍数;
由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:
1)x的取值范围为1~20
2)y的取值范围为1~33
3)z的取值范围为3~99,步长为3
对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。
实验五数组一
1.掌握一维数组和二维数组的定义、赋值和初始化的方法。
2.熟练掌握与数组相关的各种算法。
1.数组的定义和数组的初始化
(1)一维数组的定义方式如下:
类型说明符数组名[常量表达式];
(2)二维数组的定义方式如下:
类型说明符数组名[常量表达式1][常量表达式2];
(3)一维数组元素的初始化
在定义数组时,可以将数组元素的初值依次放在由左、右花括号括起来的初始值表中,每个初值之间由逗号隔开。
例:
inta[5]={1,2,3,4,5};
(4)二维数组的初始化:
intb[2][2]={{1,2},{3,4},{5,6}};
2.数组元素的引用
(1)一维数组元素的引用:
数组名[下标表达式]
数组a的元素为a[0],a[1],a[2],a[3]
(2)二维数组元素的引用:
数组名[下标表达式1][下标表达式2]
数组b的元素为b[0][0],b[0][1],b[1][0],b[1][1]
3.数组的赋值
数组可以在初始化的时候用初始化列表赋值,其他的时候赋值都是对数组的元素操作,经常用循环来给数组中的每一个元素赋值。
【练习1】随机产生20个1-50之间的正整数放入数组A中,输出这组随机数。
然后,选出其中的素数放入数组B中,输出这些素数,并计算素数之和。
【练习2】写一程序,功能是按如下所示规律构造二维数组下三角的前m行;
1
57
91113
13151719
1719212325
……
要求:
在main函数中输入一整数m(1<
=m<
=10),输出该二维数组下三角的前m行。
【练习3】求20个随机数中最大数和最小数。
1.青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。
2.有一个3×
4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
3.在键盘上输入N个整数,将这些数按照从小到大的次序排列输出。
C中数组长度必须是确定大小,即指定N的值。
可以选用冒泡排序或选择排序实现。
4.要求编写程序根据m的值(2<
=9),在m行m列的二维数组中存放如下所示的数据,由输出结果。
结果显示在屏幕上。
如输入3
则输出:
123
246
369
如输入5
12345
246810
3691215
48121620
510152025
5.从键盘上输入矩阵的阶数n(n<
10),然后按以下规律形成二维数组Anxn:
A中第一行元素为1,2,……n;
第二行元素为n+1,n+2,……2n;
第三行元素为2n+1,2n+2,……3n;
……
然后计算:
(1)A中所有不靠边元素之和sum1;
(2)A的两条对角线元素之和sum2。
要求:
将形成的二维数组Anxn和计算结果
(1)
(2)显示在屏幕上。
输入矩阵的阶数为3,输出二维数组
1234
5678
9101112
13141516
sum1=34
sum2=68
实验六数组二
1.掌握字符数组的定义、赋值和初始化的方法。
2.掌握字符数组的各种操作。
1.字符数组的初始化
(1)定义字符数组时,在=号后写{},在{}内写字符串常量(由双引号””作为定界符的字符序列)。
charch1[10]={“hello”};
(2)定义字符数组时,在=号直接写字符串常量。
charch2[10]=“hello”;
(3)定义字符数组时,数组长度可以不指定,此时,数组长度为实际有效字符的个数加1(用于存储’\0’)。
charch3[]={“hello”};
//数组长度为6
charch4[]=“hello”;
2.字符数组的输入和输出
(1)字符串的输入
①格式输入函数scanf,格式如下:
scanf(“%s”,数组名)
②字符串输入函数gets
格式如下:
gets(数组名)
(2)字符串的输出
①格式输出函数printf,格式如下:
printf(“%s”,数组名)
②字符串输出函数puts,格式如下:
puts(数组名或字符串常量)
3.字符串的处理
(1)字符串的复制(赋值)函数strcpy
(2)字符串的连接函数strcat
(3)字符串的比较函数strcmp
(4)求字符串长度函数strlen
【练习1】输入一字符串,存入tt中并将所有下标为奇数位置上的字母转换为大写字母(若该位置上不是字母,则不转换)并将结果输出到屏幕。
如输入”abc4Efg”,则应输出”aBc4EFg”。
【练习2】输入5个字符串,求最大的串和最小串。
【练习3】输入5个学生姓名,并排序显示。
1.将一串字符串以某种方式加密显示。
实验七指针
1.熟悉指针的概念,并掌握指针变量的定义及使用。
2.能正确使用数组的指针和指向数组的指针变量。
3.能正确使用字符串的指针和指向字符串的指针变量。
1.地址和指针的概念。
2.数组和指针的关系。
3.字符串和指针的关系。
【练习1】已知数组{1,3,5,7,9},试编写一个程序,在其中分别用下标法、地址法和指针法访问数组元素,将它们输出。
【练习2】有三个整形变量i、j、k,请编写程序,设置三个指针变量p1、p2、p3,分别指向i、j、k。
然后通过指针变量使i、j、k三个变量的值顺序交换,即原来i的值赋给j,把j的原值赋给k,把k的原值赋给i。
i、j、k的原
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 指导