等于65535以及小于65535的情况)。四、实验内容二(综合及设计类Eg3-3:调试训练一一改正下列程序中的错误,输入参数a,b,c,求一元二次方程ax2+bx+c=0的根。#include<stdio.h>#include<math.h>void main()1double a,b,c,d;printf("Enter a,b,c:");scanf("%lf%lf%lf",&a,&b&c),d=b*b-4*a*c,//断点1if (a==0)if(b=-0)1if (c==0)printf("参数都为零,方程无意义!In");elseprintf("a和b为0,c不为0,方程不成立!In");elseprintf("x=%0.2fin",-c/b);1elseif(d>=0)//断点2printf("x1=%0.2fln",(-b+sqrt(d)/(2*a);printf("x2=%0.2fn",(-b-sqrt(d)/(2*a);3//断点3else1printf("x1=%0.2f+%0.2filn,-b/(2*a),sqrt(d)/(2*a);printf("x2=%0.2f-%0.2filn",-b/(2*a),sqrt(d)/(2*a);112
12 等于 65535 以及小于 65535 的情况)。 四、 实验内容二(综合及设计类) Eg3-3:调试训练——改正下列程序中的错误,输入参数 a,b,c,求一元二次方程 ax2+bx+c=0 的根。 #include <stdio.h> #include <math.h> void main( ) { double a,b,c,d; printf("Enter a,b,c:"); scanf("%lf%lf%lf",&a,&b,&c); d=b*b-4*a*c; //断点 1 if (a==0) { if (b==0) { if (c==0) printf("参数都为零,方程无意义!\n"); else printf("a 和 b 为 0,c 不为 0,方程不成立!\n"); } else printf("x=%0.2f\n",-c/b); } else if (d>=0) //断点 2 { printf("x1=%0.2f\n",(-b+sqrt(d))/(2*a)); printf("x2=%0.2f\n",(-b-sqrt(d))/(2*a)); } else //断点 3 { printf("x1=%0.2f+%0.2fi\n",-b/(2*a),sqrt(d)/(2*a)); printf("x2=%0.2f-%0.2fi\n",-b/(2*a),sqrt(d)/(2*a)); } }
说明:断点的作用是使程序执行到断点处暂停,让用户可以观察当前变量或表达式的值。”按设置断点时,先将光标定位到要设置断点的位置,然后单击编译微型工具的“钮,断点即设置完毕。如果要取消设置的断点,只需要将光标移到要取消的断点处,单击“,按钮,该断点即取消。(1)打开源程序,对程序进行编译和连接,没有出现错误信息。(2)调试开始,设置三个断点,具体位置见源程序的注释。(3)单击Go*按钮,输入a,b,c的值(2.09.03.0)后,程序执行到第一个断点处,在观察窗口输入变量名a,b,c,查看变量a,b,c的值。此时,这些变量的值与输入的值一致。(4)继续单击Go一*按钮,程序运行到第二个断点处,观察到变量d的值为57,说明方程有实根。(5)再次单击Go按钮,程序运行到最后一个断点处,运行窗口显示x1=-0.36,x2=-4.14,符合题目要求。按钮,程序调试结束。(6)单击StopDebuggingEg3-4:输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)。提示:注意c=5/9*(f-32)与c=5.0/9.0*(f-32)的区别五:扩展内容(可选)Eg3-5:从键盘输入两个字符,要求输出这两个字符,并输出它们的ASCII码及其ASCI码的平方和的平方根。(要求用上getchar和putchar函数)提示:字符变量以它的ASCII码值参加运算;求平方根应用函数sqrt,此函数存放在数学函数库中:求出的平方根可能不是整数。Eg3-6:编程求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。在程序中调用scanfO函数通过键盘输入半径,圆柱高,输出计算结果,输出要求有文字说明,答案精确到小数点后两位。提示:1)定义符号常量PI2)计算圆周长、圆面积、圆球表面积、圆球体积、圆柱体积公式分别表示为:circle=2PI *r,area=PI*r*r,surface=4*PI *r*r,globe-PI *r*r*r*4/3,column=area*h13
13 说明:断点的作用是使程序执行到断点处暂停,让用户可以观察当前变量或表达式的值。 设置断点时,先将光标定位到要设置断点的位置,然后单击编译微型工具的“ ”按 钮,断点即设置完毕。如果要取消设置的断点,只需要将光标移到要取消的断点处,单 击“ ”按钮,该断点即取消。 (1)打开源程序,对程序进行编译和连接,没有出现错误信息。 (2)调试开始,设置三个断点,具体位置见源程序的注释。 (3)单击 Go 按钮,输入 a,b,c 的值(2.0 9.0 3.0)后,程序执行到第一个断点 处,在观察窗口输入变量名 a,b,c,查看变量 a,b,c 的值。此时,这些变量的 值与输入的值一致。 (4)继续单击 Go 按钮,程序运行到第二个断点处,观察到变量 d 的值为 57,说明 方程有实根。 (5)再次单击 Go 按钮,程序运行到最后一个断点处,运行窗口显示 x1=-0.36, x2=-4.14,符合题目要求。 (6)单击 Stop Debugging 按钮,程序调试结束。 Eg3-4: 输入一个华氏温度,要求输出摄氏温度。公式为 c=5/9*(f-32)。 提示:注意 c=5/9*(f-32) 与 c=5.0/9.0*(f-32)的区别 五.扩展内容(可选) Eg3-5: 从键盘输入两个字符,要求输出这两个字符,并输出它们的 ASCII 码及其 ASCII 码的平方和的平方根。(要求用上 getchar 和 putchar 函数) 提示:字符变量以它的 ASCII 码值参加运算;求平方根应用函数 sqrt,此函数存放在数 学函数库中;求出的平方根可能不是整数。 Eg3-6: 编程求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。在程序中调用 scanf() 函数通过键盘输入半径,圆柱高,输出计算结果,输出要求有文字说明,答案精确到小 数点后两位。 提示: 1)定义符号常量 PI 2)计算圆周长、圆面积、圆球表面积、圆球体积、圆柱体积公式分别表示为:circle=2* PI *r,area= PI *r*r,surface=4* PI *r*r,globe=PI *r*r*r*4/3,column=area*h
实验四逻辑结构程序设计实验目的1、熟练掌握if语句的3种形式及对应的语法规则、执行流程,switch语句的语法规则、执行流程。2、掌握6个关系运算符、3个逻辑运算符的基本概念、基本属性、运算规则。相关知识点if语句的常见三种形式;switch语句的语法规则及执行过程:break语句和continue语句的使用。三、实验内容一(验证及程序分析)Eg4-1:输入三角形的三边长,判断这个三角形是否是直角三角形。(1)算法分析:直角三角形斜边最长,要先找出三边中最长的边,判断最长边的平方是否等于其余两边的平方和,若相等就是直角三角形。(2)源程序:#include<stdio.h>void main()inta,b,c,t;/*三边设为abc,t是用于交换的中间变量*/scanf("%d,%d,%d",&a,&b,&c),if(a<b)(/*a中放a,b中较长边*t=a,a=b;b=t;1if(a<c)(/*a中放a,b,c中的最长边*/t=a;a-c;c-t;1if(a*a--b*b+c*c)printf("Y"),elseprintf("N"),1(3)在VC++编辑环境下编辑源程序。14
14 实验四 逻辑结构程序设计 一、 实验目的 1、熟练掌握 if 语句的 3 种形式及对应的语法规则、执行流程,switch 语句的语法 规则、执行流程。 2、掌握 6 个关系运算符、3 个逻辑运算符的基本概念、基本属性、运算规则。 二、 相关知识点 if 语句的常见三种形式; switch 语句的语法规则及执行过程; break 语句和 continue 语句的使用。 三、 实验内容一(验证及程序分析) Eg4-1: 输入三角形的三边长,判断这个三角形是否是直角三角形。 (1)算法分析:直角三角形斜边最长,要先找出三边中最长的边,判断最长边的平 方是否等于其余两边的平方和,若相等就是直角三角形。 (2) 源程序: #include <stdio.h> void main( ) { int a,b,c,t ; /* 三边设为 a,b,c,t 是用于交换的中间变量 */ scanf("%d,%d,%d",&a,&b,&c); if(a<b) {/* a 中放 a,b 中较长边 */ t=a ; a=b ; b=t ; } if(a<c) { /* a 中放 a,b,c 中的最长边 */ t=a ; a=c ; c=t ; } if(a*a==b*b+c*c) printf("Y"); else printf("N"); } (3)在 VC++编辑环境下编辑源程序
(4)编译直到程序没有错误。(5)从键盘输入:3,4,5/,运行结果如何?(6)从键盘输入:30,40,90/,运行结果如何?Eg4-2:输入年份和月份,求该月有多少天。(1)算法分析:要考虑大月有31天,小月有30天,闰年的二月有29天以及非闰年的二月有28天这几种情况。(2)源程序:#include<stdio.h>voidmain()1int year, month, days:printf("Enter yearandmonth:");scanf("%d%d",&year,&month);switch (month)1casel:case3:case5:case7:/*处理"大"月*/case8:case10:case12:days=31; break;case6:case9:case ll:/*处理"小"月*/case4:days=30; break;/*处理"平"月*/case2:if(year%4==0&&year%100!=0lyear%400==0)days=29;1*如果是闰年*//*不是闫年*else days=28;break;default:/*月份输入错误*printf("Input error!In"):days=0;if (days!=0) printf("%d,%d is %d daysln",year, month, days);1(3)在VC++编辑环境下编辑源程序。(4)编译直到程序没有错误。(5)从键盘输入2008,9/,运行结果如何?为什么?(6)再输入20106V,输出结果:四、实验内容二(综合及设计类)15
15 (4)编译直到程序没有错误。 (5)从键盘输入:3,4,5↙,运行结果如何? (6)从键盘输入:30,40,90↙,运行结果如何? Eg4-2: 输入年份和月份,求该月有多少天。 (1)算法分析:要考虑大月有 31 天,小月有 30 天,闰年的二月有 29 天以及非闰 年的二月有 28 天这几种情况。 (2)源程序: #include <stdio.h> void main( ) { int year,month,days; printf("Enter year and month:"); scanf("%d%d",&year,&month); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: /*处理"大"月*/ days=31;break; case 4: case 6: case 9: case 11: /*处理"小"月*/ days=30;break; case 2: /*处理"平"月*/ if (year%4==0&&year%100!=0||year%400==0) days=29; /*如果是闰年*/ else days=28; /*不是闰年*/ break; default: printf("Input error! \n"); /*月份输入错误*/ days=0; } if (days!=0) printf("%d,%d is %d days\n",year,month,days); } (3)在 VC++编辑环境下编辑源程序。 (4)编译直到程序没有错误。 (5)从键盘输入 2008,9↙,运行结果如何?为什么? (6)再输入 2010 6↙,输出结果: 四、 实验内容二(综合及设计类)
Eg4-3:有一函数(x<1)X2x-1(1<=x<10)V=73x-11(x>=10)用scanf函输入x的值,求y值。(1)算法提示:1)定义实变量x,y2)提示输入Pleaseenterx:"3)读入x4)判断x所在的区间,对应出y的计算公式并求值(进一步细化)5)打印结果。(2)编写程序:(3)测试结果:xy-1510Eg4-4:给出一个百分制成绩,要求输出成绩等级“A”、“B”“C”、“D”、“E”。90分以上为“A”,81~89分为“B”70~79为“C”,60~69为“D”,60分以下为“E”。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。请分别用if语句和switch语句加以实现。(1)算法提示:1)定义百分制成绩(实变量)score2)提示输入"Pleaseenterscore3)读入score4)判断score所在的区间,对应出score的等级并打印相应等级(进一步细化)。(2)用f语句实现的源程序:(3)用switch语句实现的源程序:(4)测试结果:score打印等级65547716
16 Eg4-3:有一函数 x (x<1) y= 2x-1 (1<=x<10) 3x-11 (x>=10) 用 scanf 函输入 x 的值,求 y 值。 (1)算法提示: 1) 定义实变量 x,y 2) 提示输入"Please enter x:" 3) 读入 x 4) 判断 x 所在的区间,对应出 y 的计算公式并求值(进一步细化) 5) 打印结果。 (2)编写程序: (3)测试结果: x y -1 5 10 Eg4-4: 给出一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。90 分以上为“A”,81~89 分为“B”,70~79 为“C”,60~69 为“D”,60 分以下为“E”。 当输入数据大于 100 或小于 0 时,通知用户“输入数据错”,程序结束。请分别用 if 语 句和 switch 语句加以实现。 (1)算法提示: 1) 定义百分制成绩(实变量)score 2) 提示输入"Please enter score:" 3) 读入 score 4) 判断 score 所在的区间,对应出 score 的等级并打印相应等级(进一步细化)。 (2)用 if 语句实现的源程序: (3)用 switch 语句实现的源程序: (4)测试结果: score 打印等级 65 54 77