《实验3选择结构程序设计.doc》由会员分享,可在线阅读,更多相关《实验3选择结构程序设计.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流实验3选择结构程序设计.精品文档.C语言程序设计实验报告实验3选择结构程序设计一实验目的 1.了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 2.学会正确使用逻辑运算符和逻辑表达式 3.熟练掌握if语句和switch语句; 4.结合程序掌握一些简单的算法。 5.学习调试程序 二实验内容和步骤1.基础知识和概念(1)分析下面程序,掌握关系表达式的运算规则。#include int main()char ch=w;int a=2,b=3,c=1,d,x=10;printf(%d,ab=c);printf(%d,d=ab);pri
2、ntf(%d,cha+1);printf(%d,d=a+bc);printf(%d,3=x=5);printf(%dn,b-1=a!=c);return 0;总结与反思:1.运用关系运算符比较的结果,真为1,假为0;2.注意掌握运算符的优先顺序;3. (3=x)=5结果为真=1,(1=1)!=1结果为假=0(2)分析运行下面的程序,掌握逻辑表达式的运算规则。#include int main()char ch=w;int a=2,b=0,c=0;float x=3.0;printf(%d,a&b);printf(%d,a|b&c); printf(%d,!a&b);printf(%d,a|3+
3、10&2);printf(%d,!(x=2);printf(%d,!x=2);printf(%dn,ch|b);return 0;总结与反思:1.运用逻辑运算符比较的结果,真为1,假为0;2.逻辑与&优先级11大于逻辑或|优先级12(3)分析运行下面的程序,掌握关系及逻辑混合表达式的运算规则。#include int main()int a=3,b=5,c=8;if(a+3&c-!=0) b=b+1;printf(a=%dtb=%dtc=%dn,a,b,c);return 0;总结与反思:该程序中的条件判断表达式“a+3&c-!0”是一个逻辑表达式,关系表达式“a+3”的值为假,因此后一部分“
4、c-!=0”不再计算。2.程序改错和填空(1)给定程序c3-4.c的功能是,对于以下函数:y=x(x1)y=2x-1(1=x=10)用scanf函数输入x的值,求y的值。#include int main()int x,y;scanf(%d,&x);if (x1) y=x; else if (1=x&x10) y=2*x-1;else y=3*x-11;printf(y=%dn,y);return 0;反思与总结:1.在紧跟着if选择语句的条件表达式的圆括号之后没有分号;2.定义的x是int型,键入的x=0.5时,y就会向零取整等于0,而不是0.5!(2)以下给定程序c3-5.c的功能是输入一
5、个年份,判断该年是否为闰年。#include int main()int year,leap;printf(Please enter a year:);scanf(%d,&year);if (year%4!=0) leap=0;else if (year%100)!=0) leap=1;else if (year%400)!=0) leap=0;else leap=1; if(leap)printf(%d is a leap yearn,year);elseprintf(%d is not a leap yearn,year);return 0;总结与反思:1.错误不一定只在语法结构上,也可能
6、在逻辑思维上;2.能被4整除但不能被100整除的year或者能被400整除的year是闰年。(3)以下给定程序c3-6.c的功能是实现两个浮点数的四则运算。#include main()float d1,d2;char op;printf(输入d1 op d2);scanf(%f%c%f,&d1,&op,&d2); switch(op)float temp;case + :temp=d1+d2;printf(%f %c %f=%fn,d1,op,d2,temp);break;case - :temp=d1-d2;printf(%f %c %f=%fn,d1,op,d2,temp);break;
7、case * :temp=d1*d2;printf(%f %c %f=%fn,d1,op,d2,temp);break;case / :temp=d1/d2;printf(%f %c %f=%fn,d1,op,d2,temp);break;default:printf(错误!n);return 0;总结与反思:在本题中op代表了四则运算运算符号,temp代表了浮点数结果。3.程序设计题 (1)从键盘上输入某学生的考试成绩,要求输出成绩等级A、B、C、D、E。学生的成绩可分成5个等级,90100分为A级,8089分为B级,7079分为C级,6069分为D级,059分为E级,要求在输出负数时,给出
8、错误提示。#includeint main()int x;scanf(%d,&x);if(x100|x0) printf(输入数据错n);else switch(x/10) 如果漏写了else,运行结果就变成:case 6:printf(Dn);break; case 7:printf(Cn);break;case 8:printf(Bn);break; case 9: case 10:printf(An);break;default:printf(En);break; 正确的运行结果应为:return 0;总结与反思:1.先判断数据是否合理,再switch,正好解决了100与101的区别问题
9、。2.case后面的表达式一定是常量表达式,其值的类型一般为整型或可自动转为整型的类型(例如字符型)(2)根据输入的三角形的三条边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。#include#includeint main()float a,b,c,p,s;scanf(%f,%f,%f,&a,&b,&c);p=0.5*(a+b+c);s=sqrt(p*(p-a)*(p-b)*(p-c);if(a+b=c|a+c=b|b+c=a) printf(不能构成三角形n);else if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a) printf(是直角三角形n
10、s=%fn,s);else if(a=c&b=c) printf(是等边三角形ns=%fn,s);else if(a=b|a=c|b=c) printf(是等腰三角形ns=%fn,s);else printf(是一般三角形ns=%fn,s);return 0;总结与反思:1.n的位置是放在格式说明部分的引号里面2.运用数学公式别忘了#include3.第一步要把所有需要用到的变量先全部定义出来,才能进行下一步(比如scanf)(3)输入某职工的工资,根据不同档次扣除工资所得税,然后计算实发工资。#includeint main()float fs,rs;scanf(%f,&fs);if(fs8
11、50) rs=fs;else if(fs=1500) rs=fs-0.01*fs; else if(fs=2000) rs=fs-0.015*fs;else rs=fs-0.02*fs;printf(rs=%.2fn,rs);return 0;总结与反思:1.用scanf输入,&总是忘记!2.在界定ifelse语句后的复合语句时别忘了加花括号;(4)对于一个不多于5位的正整数,1.求出它是几位数;2.分别打印出每一位数字;3.按逆序打印出各位数字。#include int main()int a,b,c,d,e,n;printf(请输入一个五位数以下的正整数n);scanf(%d,&n);a=
12、n/10000;b=(n-a*10000)/1000;c=(n-a*10000-b*1000)/100;d=(n-a*10000-b*1000-c*100)/10; e=(n-a*10000-b*1000-c*100-d*10);if (n99999) printf(输入错误n);else if (9999n) printf(这是五位数n%d%d%d%d%dn,e,d,c,b,a);else if (999n) printf(这是四位数n%d%d%d%dn,e,d,c,b);else if (99n) printf(这是三位数n%d%d%dn,e,d,c);else if (9n) printf(这是两位数n%d%dn,e,d);else printf(这是一位数n%dn,e);return 0;总结与反思:注意取各个位数的方法。