38563325.doc (匡珍春制作)
程序跟踪调试实例4-2:单步跟踪下面的程序,每执行完一条语句就观察各变量的值。将程序以debug4_1.c文件名最终保存在实验4文件夹里。(需要存盘)
程序跟踪调试实例4-3:单步跟踪下面的程序,每执行完一条语句就观察各变量的值,调试完后分析程序的执行过程及功能。将程序以debug4_2.c文件名最终保存在实验4文件夹里。(需要存盘)
?(1)先直接编译、连接、运行程序,若输入123,则输出什么?输入987、702呢?你能根据输出分?(2)知道程序的功能后,请分析x1、x2、x3代表什么?为什么?通过单步跟踪程序来找出x1、x2、
x3的值,是否可以分析出它们代表什么?如何利用运算符“/”和“%”来求整数各位上的数字? 程序跟踪调试实例4-4:)以下程序实现:判断用户输入的数是奇数还是偶数,并输出相应的信息。通过跟踪程序、分析程序是如何完成此功能的?将程序以debug4_3.c文件名最终保存在实验4文件夹里。
析出程序的功能吗?
第 6 页 共 14 页
38563325.doc (匡珍春制作)
(注:单词中文对照 remainder—余数、even—偶数、odd—奇数) 运行时,在提示:
Enter your number to be tested.下输入: 2455 输出什么?
再次运行时,在提示:
Enter your number to be tested. 下输入: 1210 输出什么?
同学们不妨再输入一些数据试一试!
程序跟踪调试实例4-5:通过跟踪程序、分析程序执行过程和执行结果。将程序以debug4_4.c文件名最终保存在实验4文件夹里。(需要存盘)
(运行5次,分别输入:1、2、3、4、8。分析每次程序的执行过程(执行路线))
[实验任务二]:通过编写简单的程序达到进一步巩固printf( )函数使用方法的目的。
编程实例4-0:若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=ˊaˊ,c2=ˊbˊ, 想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下,同 时以文件名output.c最终保存在实验4文件夹里。(需要存盘)
第 7 页 共 14 页
38563325.doc (匡珍春制作)
【说明】:
① 如上所示的每一个带颜色的下划线,即每一个蓝色的或红色的下划线均代表一个空格;
② 该题主要考察printf()函数的使用方法;
printf()函数括号里面由两部分组成:其中一部分是由一对双引号括起来的格式化符号串;另一部.............
分是参量表。其中格式化符号串又由两部分组成:即不以%开头的普通字符串和以%开头后跟类似d、c...等的规定字符串。printf()函数括号里面是否有参量表取决于双引号括起来的格式化符号串部分是否有以%开头后跟类似d、c(除%以外,因为printf(“%%”)的含义是输出一个%)等的规定字符串,并且参量表的个数必须与格式化符号串中%的个数一致。
③ 根据题意,程序中所涉及到的变量应定义成如下形式:
④ 输出结果为c1='a' or 97(ASCII)的printf()语句格式为:
在该条语句中:
(1)双引号括起来的格式化符号串中,属于正常字符的有c1=\\'\\' or (ASCII)\\n,其中\\’和\\n属
于转义字符;
(2)%c和%d是两个规定的符号串,所以参量表有两个;
(3)若有c1=ˊaˊ;则printf(“c1=%c”,c1)的输出结果是 c1=a而不是c1=’a’;
[实验任务三]:通过编写简单的程序达到掌握if三种基本结构的目的。
编程实例4-1:简单if语句的用法
编写并调试程序:从键盘输入一个任意大小的实数x,如果满足如下条件:-29.5≤x≤29.5则输出x及其绝对值。并以文件名simple_if.c最终保存在实验4文件夹里。(需要存盘) 【提示】:为正确表示条件,C语言中将数学不等式-29.5≤x≤29.5表示为如下逻辑表达式:
x>=-29.5&&x<=29.5 或 (x>=-29.5)&&(x<=29.5)
也可以使用x的绝对值形式表示,即 fabs(x)<=29.5
注意:要使用fabs(x)函数,必须在程序的前面加上#include
函数的含义是:对浮点数x求绝对值。
编程实例4-2:if-else语句的用法
修改练习1的程序,使得x满足-29.5≤x≤29.5时输出x及其绝对值,否则只输出x。并以文件
名if_else.c最终保存在实验4文件夹里。(需要存盘) 编程实例4-3:if-else if 语句的用法
第 8 页 共 14 页
38563325.doc (匡珍春制作)
编写一个能够进行加减法运算的程序,要求:从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”时对两个数进行加法运算,为“-”时对两个数进行减法运算,其它符号时,只显示输入的符号不进行运算。并以文件名if_else_if.c最终保存在实验4文件夹里。(需要存盘)
[实验任务四]:补充完整程序,了解如何用if语句实现对若干个任意数进行排序。
程序填空实例4-1:本程序用来输入4个整数,按从大到小的顺序输出。(需要存盘)
将完整的程序以文件名sort.c保存在实验4文件夹里。
[实验任务五]:学会设计分支结构的程序,结合程序掌握一些基本的算法。
设计程序实例4-1:1900年元旦是星期一,问1900年7月1日是星期几,将编写好的程序以文件名week.c 最终保存在实验4文件夹里。(需要存盘)
【提示】:① 程序中应首先判断1900年是闰年还是平年;
② 想要求出1900年7月1日是星期几,应该计算出1900年1月1日到1900年7月1日之
间相差了多少天;然后再用相差的天数对7进行模运算,即days%7。
设计程序实例4-2:从键盘输入一个不多于5位的正整数,要求:① 求出它是几位数;② 分别输出每一 位数字;③ 按逆序输出各位数字,例如原数为321,应输出123。并将编写好的程序以文件名fivenum.c 最终保存在实验4文件夹里。(需要存盘) 【说明】:应准备以下测试数据:
(1) 要处理的数为1位正整数; (2) 要处理的数为2位正整数; (3) 要处理的数为3位正整数; (4) 要处理的数为4位正整数; (5) 要处理的数为5位正整数;
除此之外,程序还应当对不合法的输入作必要的处理,例如:
第 9 页 共 14 页
38563325.doc (匡珍春制作)
(1) 输入负数;
(2) 输入的数超过5位(如123456)。
【提示】:① 因为从键盘输入的数(假设是num)可能是五位数,而五位数的最大值为99999,它超过 了无符号整数的最大值65535,所以应该定义num的类型为long int;
② 可以利用if ? GOTO语句来检查输入的数字是否为5位。参考代码如下:
loop: printf(\scanf(\if(num<0||num>99999) {
printf(\
goto loop; /*利用GOTO语句来检查输入的数字是否为5位*/ }
③ 将一个五位数num拆分成每一位数字的方法是: a=(int)(m/10000); /* a 代表万位数字 */ b=(int)(m/1000); /* b 代表千位数字 */ c=(int)(m/100); /* c 代表百位数字 */ d=(int)(m/10); /* d 代表十位数字 */ e=(int)(m); /* e 代表个位数字 */
设计程序实例4-3:编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能,则输出 相应的信息,若能则判断组成的是等边、等腰、直角还是普通三角形。(需要存盘) 【要求】:① 输入一组数据3,4,8,观察程序运行结果;
② 另外再输入几组数据进行测试: 3,4,5
3,3,3 3,3,5
③ 将编写好的程序以文件名triangle.c最终保存在实验4文件夹里。
【提示】:① 能够以三个数a,b,c为边长构成一个三角形的逻辑表达式是: (a+b>c) && (a+c>b) && (b+c>a)
这也就是说三角形的三条边必须满足条件:两边之和大于第三边。
② 为了让运行程序的人能够一目了然的看懂你编写的程序,建议用printf()函数输出结果时 用相应的英文说明,例如,如果输出的结果为等边三角形,则可用如下语句:
printf(\
③ 相应的中英文对应单词如下所示:
等边三角形 equilateral triangle; 等腰三角形 isosceles spherical triangle;
直角三角形 right angled triangle 普通三角形 ordinary triangle
设计程序实例4-4:用if语句实现程序:从键盘输入一个四位正整数,首先分离出该整数中的每一位数字, 然后用分离出的数字组成一个四位最大数和一个最小数(位数没有限定),并显示输出。将编写好的程序
第 10 页 共 14 页