《C语言程序设计》一3.5 编程体会

编程技巧与实践
本文介绍了编程中常见的逻辑错误及预防措施,包括正确使用关系和逻辑运算符、理解if-else语句的匹配规则、掌握switch结构的应用场景,并通过实验帮助读者巩固选择结构程序设计的知识。

3.5 编程体会

1)关系表达式中不要将关系运算符“==”写成赋值运算符“=”,否则会造成逻辑错误。例如

if(x = 4)
  printf("x equal 4");
else
  printf("x is not equal 4");

此代码总是导致输出“x equal 4”,因为将4的值赋给了x,条件表达式永远为真。
2)逻辑运算符“&&”和“||”不要写成“&”和“|”,“&”和“|”是位运算符,尽管不会产生语法错误,但含义完全不同。
3)在计算表达式时注意关系运算符和逻辑运算符的优先级,如果不能确定,使用括号能使表达式更加清晰。
4)一个if-else语句可以包含其他的if-else语句,在缺少大括号时else与最接近的未配对的if匹配。
5)当if或else语句块是复合语句时,必须用大括号括起来,否则会产生逻辑或语法错误。例如:

if(x > y)
  temp = x;
  x = y;
  y = temp;

此代码出现逻辑错误,不管x是否大于y,x=y和y=temp都被执行,如果希望条件成立,执行3条语句,就需要将这3条语句用大括号括起来。
下面的代码会出现语法错误:

if(x > y)
  temp = x;
  x = y;
  y = temp;
else
  printf("x>y");

语法错误是else没有与之匹配的if语句。
6)switch结构中表达式的值必须是整型、字符型或枚举型,否则会发生编译错误。例如,定义double x=4.5,switch(x)是错误的。
7)switch结构中的default是可选项,如果省略了default,当表达式的值与任何case中的常量表达式都不相符时,就什么都不执行。
8)switch结构中多个case可以执行同一语句序列。例如程序prg3-8.c中

case 1: case 3: case 5: case 7: case 8: case 10: case 12:  
      day = 31;
      break;

9)每个case语句的结尾都要加break,否则后面的case就不再判断,直接执行其后的所有case和default后的语句。
上机实验3——选择结构程序设计
【实验目的】
1.掌握关系表达式和逻辑表达式的使用。
2.熟练使用if语句和switch语句实现选择结构。
3.练习调试与修改程序。
【实验内容】 
1.编程实现输入三角形的三条边,确定三角形是什么三角形:等腰、等边、直角或普通。
实验步骤与要求:
(1)所有变量定义为大于0的整数。
(2)输入前要加提示语句。
(3)输出结果前要有必要的文字说明。
说明:首先要判断是不是三角形,然后再判断是什么三角形。
2.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则计算三角形面积。
实验步骤与要求:
(1)输入一组数据3,4,8,观察程序运行结果,并与上机实验2中的第3题进行比较。
(2)另外再输入几组数据进行测试:

3,4,5
3,3,3
3,3,5

(3)如果程序有误,可采用“跟踪打印”的调试方法,确定错误的出处。
说明:所谓“跟踪打印”,就是在程序中不同的地方插入输出语句,跟踪程序运行的过程。
3.编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。

奖金     税率

a<500       0.00
500≤a<1000    0.05
1000≤a<2000   0.08
2000≤a<5000   0.10
     5000≤a      0.15

实验步骤与要求:
(1)用switch语句编程,自变量和函数值均为双精度类型。
(2)用scanf函数输入奖金数a,输出结果采用以下形式:

   a=具体值
   rate=税率值  tax=应缴税款   profit=实得奖金数

(3)分别输入a=280,512,1000,4250,5100,运行该程序。
说明:double型数据在输入函数中使用%lf格式符(f前是字母l)。
习题3
3.1 编程实现输入3个整数,找出其中的最大值和最小值。
3.2 编写如下选择菜单,查询银行定期存款的年利率。分别用if多分支结构和switch多分支结构实现。

[1] three month interest rate
[2] half year interest rate
[3] one year interest rate
[4] two years interest rate
[5] three years interest rate
[6] five years interest rate

银行年利率如下表所示:

定 期 存 款 年 利 率
三个月 3.10
半年 3.30
一年 3.50
二年 4.40
三年 5.00
五年 5.50

3.3 从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。学生的成绩可分为5个等级,这5个等级是:90~99分为A级,80~89分为B级,70~79分为C级,60~69分为D级,0~59分为E级。学生的考试成绩为0~99分。分别用if多分支结构和switch多分支结构实现。
3.4 输入x的值,编程计算相应的函数值y。

     y=x2     1≤x<2
     y=-x    2≤x<3
y=   y=y/x    3≤x<4
  y=1+x+x2  x为其他值

CSU 大上 C语言实验报告 (1)教材第2章编程题第2题:编写计算球体体积的程序。 说明:本题声明适当变量,用户键入数据,运算并输出结果,较简单。 (2)教材第2章编程题第8题:编写程序计算第、第二、第三月还贷后剩余贷款金额。 说明:本题要求用户输入总额、利率、每月还贷净额,输出每月剩余,对输入输出、类型定义考查。 (3)教材第3编程题第2题:编写程序实现对用户输入的产品信息进行格式化。 说明:本题考查格式化输入输出、转义字符的运用。 (4)教材第4章编程题第4题:编写程序实现将输入的整数按八进制输出。 说明:本题重在考查简单的运算符和表达式运用。 (5)用户输入个三位数,输出各位数字之和。 说明:本题重在考查如何从个整数中取出每个数字。 (6)教材第5编程题第5题:编写程序计算用户输入所得额的税金。 说明:本题考查简单的选择结构。 (7)教材第5编程题第11题:编写程序实现将用户输入的两位数转化为英文。 说明:本题考查switch语句的应用。 (8)教材第6章编程题第8题:编写程序显示单月日历,用户指定这个月的天数和该月起始日是星期几。 说明:本题考查循环结构和选择结构的综合应用,判断是否个星期最后天,换行符。 (9)教材第6章编程题第11题:编程序实现利用无穷级数法估计e的值。 说明:本题考查根据公式设计循环结构并实现。 (10)因子之和等于其本身的数称为完数,如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28为完数。编程序找出2~5000中的完数。 说明:本题利用变量i在2~5000中变化,判断其是否是完数。 (11)教材第7章编程题第12题:编程计算从左至右求值的表达式的值。 说明:本题考查对运算符和操作数的判断。 (12)教材第7章编程题第14题:编程序用牛顿计算法计算浮点数平方根。 说明:本题考查对循环结构的掌握,对表达式的合理运用,对基本类型的理解。 (13)教材第8章编程题第14题:编写程序颠倒句子中单词的顺序。 说明:本题考查对字符数组的处理,对些循环选择结构的理解。 (14)教材第8章编程题第15题:编写程序实现凯撒密码加密。 说明:本题考查对字符数组的掌握,对字符处理的理解。 (15编程序实现将用户输入的数字字符串转化为整数输出。 说明:本题考察对字符、整数关系的掌握与理解,对循环结构的熟练运用。 (16)教材第9章编程题第1题:编写选择排序的函数,并递归调用。 说明:本题利用函数简化程序、使得结构更清晰、熟练掌握。 (17)教材第9章编程题第7题:编写计算xn的函数。 说明:本题考查函数定义、调用,并初步考察递归运用。 (18)教材第10章编程题第6题:编写程序实现逆波兰运算。 说明:本题考查对程序每部分的理解、掌握,外部、内部变量,主函数,小函数的编写与应用。初步了解栈的些实现函数。 (19)编程序找出2~5000中满足条件的数x:x是素数且x的每位数字是素数、每位数字之和是素数,如23、223、2333等。 说明:本题考查函数方法与循环选择结构的综合运用。 (20)教材第11章编程题第3题:用指针变量编写简化个分数的函数。 说明:本题用来解决函数无法传回传递的实际参数,指针变量。 (21)教材第12章编程题第2题:编写函数读入用户输入的条消息,检测是否是回文,分别用数组、指针来解决。 说明:本题可以体会到数组与指针的特点,利用指针的便利。 (22)利用指针编写程序,实现从键盘键入字符串,将此字符串从m个字符开始的n个字符复制成另个字符串。 说明:本题用指针指向字符串,进行跟踪和复制操作。 (23)教材第13编程题第5题:编写程序实现对输入命令行参数求和。 说明:本题加深对命令行参数的理解、考查知识的综合应用。 (24)教材第16章编程题第5题:用结构变量解决搜索离用户输入时间最近的航班信息,并输出。 说明:本题考查结构与数组的结合运用,有助于理解结构。首先,定义个存储起飞、到达时间的结构,再定义个该类型的数组,循环搜索即可。 (25)教材第17章编程题第5题:用指针数组存储键入的字符串,对数组排序。 说明:本题应用动态分配内存、数组排序,考查综合能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值