《C语言程序设计Ⅰ》实验指导书.docx
- 文档编号:7485027
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:47
- 大小:309.55KB
《C语言程序设计Ⅰ》实验指导书.docx
《《C语言程序设计Ⅰ》实验指导书.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计Ⅰ》实验指导书.docx(47页珍藏版)》请在冰豆网上搜索。
《C语言程序设计Ⅰ》实验指导书
《C语言程序设计Ⅰ》
实验指导书
(2011—2012学年第一学期)
班级:
学号:
姓名:
教师:
李金洋
医药信息工程学院·计算中心
2011年10月
实验1、C语言编程环境和运行C程序的方法
一、实验目的
1、熟悉VisualC6.0集成开发环境的使用方法;
2、熟悉C语言程序从编辑、编译、连接到最后运行得到结果的过程及各过程的作用;
3、了解C语言程序的结构特征与书写规则,能够编写简单的C程序;
4、初步理解程序调试的思想,能找出并改正C程序中的语法错误。
二、实验内容
1、熟悉上机环境
⑴参照教材附录A(P370~376)的内容,熟悉VC++6.0集成环境,重点是其中常用菜单、工具按钮的功能;
⑵在D盘建立一个自己的工作文件夹,文件夹以班名+学号后两位+姓名来命名(如:
应用1105张三);分别创建、编辑并运行教材第1章中的3个例题,初步熟悉C源程序的结构特点和运行方式。
2、编程
参照教材例题1.1编写一个程序实现分两行输出自己的姓名及联系电话。
遇到的主要问题及分析:
3、程序改错调试
以下给定程序的功能是在屏幕上显示“WelcometoYou!
”,其中存在3处错误,请指出错误所在,并调试程序使其能运行得到正确结果。
出错行号及更正后的代码:
//1
//2
#include
mian()//1
{
printf(WelcometoYou!
\n")//2
}
4、选做题
⑴自学教材P47内容以及附录B中的字符与ASCII码对照表,编程输出以下图形:
♥
♥
⑵编程输出如下通讯录功能菜单界面
三、实验要求
1、将每次实验所编辑的C源程序调试通过后分别保存在D盘上自己的文件夹中(备查!
)及自己的U盘中;
2、对调试过程中出现的问题和解决方法进行必要的记录,并予以简要分析
四、实验小结
结合本次实验简述C程序从编写到最终运行的一般过程,并简要说明其中每个步骤的作用及其生成的文件类型。
实验2、简单的顺序结构程序设计
一、实验目的
1、熟练掌握格式化输入函数scanf()、格式化输出函数printf()的使用;
2、掌握简单的顺序结构程序的编写以实现简单的数据处理;
3、进一步熟悉VC++环境下C程序的编辑、编译、连接和运行的过程。
二、实验内容
1、编程:
由键盘输入两个整型变量a和b的值。
编程计算并输出a与b的和、差、积、商、a除以b的余数、ab的值。
输入输出参考示例如下:
提示:
用到C语言的运算符(参见P52)+、-、*、/、%、函数pow()(参见附录CP385)
请输入a,b的值:
a=3,b=2
a+b=5
a-b=1
a*b=6
a/b=1
a%b=1
a^b=9
2、编程:
求一元二次方程ax2+bx+c=0的实根x1,x2,。
a,b,c的值由键盘输入,设b2-4ac>0。
输入输出示例如下:
请输入三个系数a,b,c的值:
(提示:
用到C语言的库函数sqrt()(参见附录CP385))
a=1,b=3,c=2
x1=-1.00
x2=-2.00
3、程序改错与调试:
修改以下程序中的错误,并将调试的相关信息填入下表中。
(特别提示:
当程序在编译时发现很多错误,此时应从上到下改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。
)
1#include
2Main()
3{
4intx=1;y;
5
6y=x++;
7printf("y=%d",y)
8intz;
9z=++x;
10print("z=%d\n,z);
11}
程序中存在的错误及其相关信息一览表
行号
错误类型
错误提示信息
错误的原因及修改方案
4、(选做)编写一个程序,要求从键盘输入一个3位整数,然后将它们逆序输出。
(比如:
输入123,输出321。
提示:
关键是想办法分别提取百位、十位和个位上的数字!
!
)
三、实验小结
简单总结C语言程序的结构和书写规则;你在上机过程中主要遇到哪些问题?
如何解决的?
实验3、数据类型和表达式
一、实验目的
1、理解C语言中基本数据类型,掌握整型、实型和字符型变量的定义、赋值及使用方法;
2、掌握C语言常用算术运算符的功能,掌握C表达式的书写方法、求值规则以及表达式计算中的类型转换;
3、掌握C语言中各种数据的输入/输出方法,能正确使用各种格式符;
4、初步熟悉C程序的调试方法(单步执行方式)。
二、实验内容
1、分别在VC++6.0和Win-TC中运行以下程序,观察输出结果是否相同?
并简要说明原因。
说明:
运算符sizeof()用于求解C语言中不同类型数据所占内存字节数(参见附录D)
#include
main()
{inta=1;
printf("char型占%d个字节;\n",sizeof(char));//1
printf("int型占%d个字节;\n",sizeof(int));//2
printf("longint型占%d个字节;\n",sizeof(long));//3
printf("float型占%d个字节;\n",sizeof(float));//4
printf("double型占%d个字节;\n",sizeof(double));//5
printf("-----------------------------\n");
printf("变量a的值的类型占%d个字节;\n",sizeof(a));//6
printf("表达式(float)a的值的类型占%d个字节;\n",sizeof((float)a));//7
printf("表达式2.0*a的值的类型占%d个字节;\n",sizeof(2.0*a));//8
printf("表达式a+'a'-2.0的值的类型占%d个字节;\n",sizeof(a+'a'-2.0));//9
printf("字符串Hello!
占%d个字节;\n",sizeof("Hello!
"));//10
}
2、程序改错并调试:
下列程序的功能为:
输入一个华氏温度,要求输出摄氏温度。
公式为:
C=
,输出取2位小数。
程序中有5处错误,请修改并调试程序,使其实现所要求的功能。
(编译连接无误后单步执行)
#include
main()
{floatc,f;//1
printf("请输入一个华氏温度:
\n");//2
scanf("%f",f);//3
c==(5/9)*(f-32);//4
printf("摄氏温度为:
%5.2f\n"c);//5
}
3、编写程序计算出下列表达式的值(输出格式符根据表达式值的可能类型自行给出)
⑴
⑵5×
⑶ln(103.5+2) ⑷sin(45°)+e3
⑸y+z%5*(int)(x+y)/2%4(其中x=2.7,y=4.5,z=8)⑹'Z'-'A'+'a'-'A'
4、编辑并运行下面程序:
#include
main()
{inta,b,c;
a=getchar();
b=getchar();
c=getchar();
printf("a=%db=%dc=%d\n",a,b,c);
printf("a=%cb=%cc=%c\n",a,b,c);
}
5、编程
⑴由键盘输入一个圆柱体的底面半径r和高度h的值,编程计算并输出该圆柱体的体积。
(注意:
体积=底面积*高,要求将圆周率定义为符号常量PI)
⑵编写一个程序,从键盘输入一个大写字母,输出该字母及其对应的ASCII码值,同时输出其小写字母及其对应的ASCII码的值。
⑶(选做题)编写程序,从键盘输入两个数字字符并分别存放在字符型变量a和b中,要求通过程序将与这两个字符对应的数字相加后输出,例如,输入字符型数字7和5,输出的则是整型数12。
(提示:
通过“数字字符-‘0’得到对应数字”)。
三、实验小结
简要小结一下自己C语言学习的情况,主要存在哪些问题,什么原因?
是否按老师的要求做了课前预习和课后复习?
对老师的教学有什么建议?
实验4、选择结构程序设计
一、实验目的
1、熟悉关系表达式、逻辑表达式的书写和求值;
2、掌握if语句的三种基本形、switch语句的结构及其应用;
3、能综合运用if语句与switch语句实现多分支选择;
4、熟悉并掌握程序的“单步执行”、“断点设置及跟踪”等调试方法。
二、实验内容
上机的结果:
⑴
⑵
⑶
⑷
⑸
⑹
分析的结果:
⑴
⑵
⑶
⑷
⑸
⑹
1、逻辑表达式验算:
设已有定义inta=3,b=4,c=5;先自行计算下面各逻辑表达式的值,然后编写程序上机验证你分析的结果是否正确。
⑴a+b>c&&b==c
⑵!
(a>b)&&!
c||1
⑶!
(x=a)&&(y=b)&&0
⑷!
(a+b)+c-1&&b+c/2
⑸(a=b+c,b>c-1)&&(b+=c)||(b*2==a+c)
⑹('c'-'a')/2+b>c!
=b-a;
2、程序填空:
以下程序的功能为:
从键盘输入依次输入操作数、运算符、操作数,如果运算符是+、-、*、/之一,则进行相应的四则运算,否则输出运算符有误。
在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能。
main()
{inta,b,c;
【1】
【2】
【3】
charop;
printf("Pleaseinputaexpression:
");
scanf("%d%c%d",【1】);
switch(op)
{case'+':
c=a+b;
printf("%d+%d=%d\n",a,b,c);
break;
case'-':
c=a-b;
printf("%d-%d=%d\n",a,b,c);
break;
case'*':
c=a*b;
printf("%d*%d=%d\n",a,b,c);
break;
case'/':
if(【2】)
printf("Divisoriszero\n");
else
printf("%d/%d=%f\n",a,b,(【3】)a/b);/*强制类型转换*/
break;
default:
printf("输入的运算符有误!
\n");
}
}
3、程序改错调试(请纠正程序中存在错误,使程序实现其功能)
⑴下列程序的功能为:
输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母,例如:
输入d,则输出cde;输入a,则输出zab;输入P,则输出OPQ;输入Z,则输出YZA。
#include
main()
{charch,c1,c2;
printf("Enteracharacter:
");
ch=getchar();
if((ch>='a')||(ch<='z'))
ch-=32;
c1=ch-1;
c2=ch+1;
if(ch='A')c1=ch+25;
elseif(ch='Z')c2=ch-25;
putchar(c1);
putchar(ch);
putchar(c2);
putchar('\n');
}
⑵下列程序的功能为:
输入1-4月份号,输出该月份对应的英语表示法。
例如,输入“3”,则输出“March”。
#include"stdio.h"
main()
{charm;
printf(“inputthemonthnumber:
\n”);
scanf(“%c”,&m);
switch(m)
{
case1:
printf("Jan");
case2:
printf("Feb");
case3:
printf("Mar");
case4:
printf("Apr");
}
}
4、编程:
⑴根据上网时间t计算并输出上网费用cost,计算公式:
同时为了鼓励多上网,每月收费最多不超过300元。
⑵判断用户从键盘输入的任意一个字符是数字字符、字母字符还是其他字符,要求有必要的输入提示和输出信息;如果输入的是英文字母,再利用switch语句判断该字母是否是元音字母,并以“yes”或“no”字样输出判断结果。
⑶编程实现:
任意输入一个百分制成绩,输出成绩等级A、B、C、D。
当输入的分数小于0分或大于100分时,显示出错信息;在85~100分时为A,70~84分为B,55~69分为C,55分以下为D。
(要求:
综合应用if和switch结构实现,参考教材P102例题4.6)
⑷(选做)编程实现:
对任意输入的一个日期(年year、月month、日day),计算并输出该年该月该日是这一年的第几天。
(提示:
本题要综合应用到if、switch结构)
三、实验小结
对选择结构掌握的情况如何?
主要存在什么问题?
实验5、循环结构程序设计
(1)
一、实验目的
1、熟悉for、while、do…while三种循环语句的结构和执行流程,体会三种循环语句的异同,能够根据实际问题选用适合的循环语句。
2、掌握用循环的方法实现常见实际问题。
3、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。
二、实验内容
1、程序调试改错:
(请纠正程序中存在的错误,使程序实现其功能)
⑴下面程序的功能是:
输入10名学生某门课程的成绩,计算平均分,并求出其中的最高分和最低分。
出错行号及正确代码:
#include
main()//1
{inti;//2
floatscore,max,min,sum,ave;//3
printf("Pleaseenterscoreofstudent:
\n");//4
scanf("%f",&score);//5
max=min=sum=0;//6
for(i=1;i<=10;i++)//7
{scanf("%f",&score);//8
sum+=score;//9
if(max>score)//10
max=score;//11
elseif(min min=score;//13 } ave=sum/10;//14 printf("Average=%6.2f\nMax=%6.2f\nMin=%6.2f\n",ave,max,min);//15 } ⑵下面程序的功能为: 逆序输出26个大写英文字母。 #include main()//1 {charx;//2 x='Z';//3 while(x='a')//4 {printf("%3d",x);//5 x++;//6 } } 2、程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能) ⑴下列程序的功能为: 用辗转相除法求两个正整数的最大公约数。 “辗转相除法”求两个正整数的最大公约数的算法提示如下: ①将两数中大的那个数放在m中,小的放在n中。 ②求出m被n除后的余数r。 ③若余数为0则执行步骤⑦;否则执行步骤④。 ④把除数作为新的被除数;把余数作为新的除数。 ⑤求出新的余数r。 ⑥重复步骤③到⑤。 ⑦输出n,n即为最大公约数。 #include main() { intr,m,n,【1】; scanf("%d%d",&m,&n); if(m 【2】 r=m%n; while(r) {m=n; n=r; r=【3】; } printf("%d\n",n); } ⑵下列程序的功能为: 计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个)。 #include main() {intday,x1,x2; day=0; x1=1020; while(【4】) {x2=【5】; x1=x2; day++; } printf("day=%d\n",day); } 3、编程: ⑴输入一个实数x和一个正整数n,输出xn。 要求分别用for、while、do…while语句来实现。 ⑵编程求1到n中能被3或7整除的数之和,n的值由键盘输入。 请分别用for循环语句和while循环语句完成 用for循环用while循环 ⑶任意输入一串字符(敲回车键结束输入)。 分别统计出其中英文字母、数字字符、其它字符的个数。 ⑷(选做)编写程序: 从键盘输入x,利用幂级数展开计算sinx的近似值,要求误差小于10-6。 ⑸(选做)编写程序: 任意输入一串字符(敲回车键结束输入),将其中所有的大写字母均转换为小写,然后将所有字母均用其前面的第3个字母替换,其他字符不变,输出转换后的字符串。 例如: 如果输入AsiaGame2010,输出xpfxdxjb2010. 三、实验小结 简单谈谈本次实验完成的情况。 对三种循环语句掌握的情况如何,目前主要存在哪些问题? 实验6、循环结构程序设计 (2) 一、实验目的 1、掌握break、continue语句的作用、区别及使用方法; 2、掌握循环结构的嵌套(至少两层); 3、掌握用循环的方法实现一些常用算法; 4、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。 二、实验内容 1、程序改错调试: 以下程序的功能是用人机对话的形式进行加、减、乘、除运算。 用户每输入一次运算数和运算符,系统输出相应的计算结果,例如,当用户输入3+5后,系统输出3+5=8.00,进行除法运算时要判断分母是否为0;只有当输入的运算符为“#”时才结束整个程序的运行。 程序中两行存在错误,调试以实现要求的功能。 #include #include main()//1 {inti=1,flag=0;//2//i代表题号,flag作为标志变量进行分类 floata,b,result;//3//a、b分别为参加运算的两个数,result为运算结果 charsym;//4//sym为运算符 printf("请输入操作数1运算符操作数2: \n");//5 while(sym! ='#')//6 {flag=0;//7 printf("第(%d)题: ",i);//8 scanf("%f%c%f",&a,&sym,&b);//9 switch(sym)//10 {case'+': result=a+b;break;//11 case'-': result=a-b;break;//12 case'*': result=a*b;break;//13 case'/': //14 if(b==0)//15 flag=1;//16 else//17 result=a/b;//18 continue;//19 case'#': flag=3;break;//20 default: flag=2;//21 } if(flag==0)//22 {printf("%0.1f%c%0.1f=%0.2f\n\n",a,sym,b,result);//23 i++;//24 } if(flag==1)printf("除数为零! 请重新输入! \n\n");//25 if(flag==2)printf("运算符错误! 请重新输入! \n\n");//26 if(flag==3)printf("结束! \n\n");//27 } 2、程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能) ⑴下列程序的功能为: 对任意输入的一个整数,输出它的位数以及各位数字之和,例如,若输入123,则输出“123的位数为3,各位数字之和为6”。 #include main() {inta,n,len=0,sum=0,num;/*n代表整数a的每一位数字,len代表a的位数*/ printf("请输入一个整数a="); scanf("%d",&a); 【1】; while(a>0) {n=【2】;/*求整数的个位、百位、...位的数字*/ sum+=n; 【3】; len++; } printf("整数%d共有%d位,",num,len); printf("其各位数字之和为%d\n\n",sum); } ⑵以下程序的功能是: 给出年、月、日,计算出该日是该年的第几天。 请填空完善程序。 main() {intyear,month,day,days,i,d; printf("请输入年,月,日: "); scanf("%d,%d,%d",&year,&month,&day); days=0; for(i=1;i {switch(【4】) {case1: case3: case5: case7: case8: case10: case12: d=31;【5】; case4: case6: case9: case11: d=30;【6】; case2: if(year%4==0&&year%100! =0||year%400==0)d=29; elsed=28; } days+=d; } printf("%d年%d月%d日是该年的第%d天。 \n",year,month,day,【7】); } 3、编程: ⑴编程输出如下图所示的下三角形乘法九九表。 ⑵中国古代数学家张丘建提出的“百鸡问题”: 一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。 现在有100个钱,要买1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 实验 指导书