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

简介: 本节书摘来自华章出版社《C语言程序设计》一 书中的第3章,第3.5节,作者:赵宏 陈旭东 马迪芳,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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为其他值

相关文章
|
2月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
96 16
|
2月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
107 18
|
2月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
70 18
|
2月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
76 13
|
2月前
|
存储 安全 C语言
【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】
分支的语句,这可能不是预期的行为,这种现象被称为“case穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用。编写一个程序,该程序需输入个人数据,进而预测其成年后的身高。根据提示,在右侧编辑器补充代码,计算并输出最终预测的身高。分支下的语句,提示用户输入无效。常量的值必须是唯一的,且在同一个。语句的作用至关重要,如果遗漏。开始你的任务吧,祝你成功!,程序将会继续执行下一个。常量都不匹配,就会执行。来确保程序的正确性。
93 10
|
2月前
|
小程序 C语言
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: 任务描述 相关知识 编程编写一个程序,从键盘输入3个变量的值,例如a=5,b=6,c=7,然后将3个变量的值进行交换,使得a=6,b=7,c=5。面积=sqrt(s(s−a)(s−b)(s−c)),s=(a+b+c)/2。使用输入函数获取半径,格式指示符与数据类型一致,实验一下,不一致会如何。根据提示,在右侧编辑器补充代码,计算并输出圆的周长和面积。
51 10
|
2月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
50 3
|
2月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
34 2
|
2月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
66 6
|
2月前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
64 1

相关实验场景

更多