前言
C 语言具有五种基本语句:
1. 程序流程控制语句:用于根据条件来控制程序的执行流程。主要包括if语句、switch语句和循环语句(如while、do-while、for等)。这些语句允许程序在满足特定条件时执行不同的操作。
2. 函数调用语句:通过调用函数来执行特定的操作。函数调用语句需要提供函数名和相应的参数,可以将函数的返回值赋给变量或者直接使用函数的返回值。
3. 表达式语句:通过表达式完成某种计算操作并产生结果。这种语句的形式简单,通常以分号结尾。例如,a = b + c; 将表达式 b + c 的结果赋给变量 a。
4. 空语句:也称为空语句或者空操作语句,它是一条什么都不做的语句,只有一个分号。空语句通常用于程序结构的占位或者在某些循环中不需要执行任何操作的情况下。
5. 复合语句:由一对花括号括起来的语句序列,也称为代码块或语句块。复合语句可以包含多个语句,并且可以嵌套使用。复合语句的主要用途是创建局部作用域并将相关语句组织在一起。
以下是顺序结构程序设计的五个步骤:
1. 分析出程序的输入量和输出量:根据问题的需求,确定程序需要接受哪些数据作为输入,以及需要输出哪些数据作为结果。例如,一个计算圆的周长和面积的程序,其输入量可能是圆的半径,而输出量可能是周长和面积。
2. 确定输入和输出的变量:命名、类型和格式:为了方便程序的理解和编写,需要为输入和输出的变量命名,并指定其类型和格式。例如,对于上面的计算圆的程序,可以使用“r”表示圆的半径,使用“c”和“a”分别表示圆的周长和面积。
3. 确定输入和输出的算法:为了计算输入数据的结果并输出,需要明确计算的算法和逻辑。例如,计算圆的面积和周长的算法分别为A = πr²和C = 2πr,其中“π”为圆周率,可以使用预定义的常量或变量存储。
4. 模块化编程:将程序拆分为多个独立的模块,每个模块负责执行特定的任务。这有助于简化程序的复杂度,提高程序的可维护性和可重用性。例如,可以使用一个函数计算圆的面积,另一个函数计算圆的周长,主函数则负责接受输入数据和输出结果。
5. 调试程序:在编写完成程序之后,需要测试和调试程序,以确保程序的正确性和稳定性。可以使用调试工具或日志记录等方法,发现和解决程序中的错误和异常,确保程序能够运行如预期。
一、程序阅读
在阅读并理解程序思路的基础上,练习强制类型转换运算符的使用,补充注释内容,并上机运行程序,验证运行结果与自己分析的结果是否相符。
#include <stdio.h> int main() { int d; // 将3除以2,得到1,因为是整数除法 // 强制转换为 double 类型,得到 1.0 // 注意,此处并不是将分子和分母都转换为 double 类型再相除 // 而是先进行整数除法,再将结果转换为 double 类型 double result1 = (double)(3/2); // 将 result1 加上 0.5,得到 1.5 // 因为 0.5 是 double 类型,所以 result1 也会自动转换为 double 类型进行运算 double result2 = result1 + 0.5; // 将 1.99 强制转换为 int 类型,得到 1 int result3 = (int)1.99; // 将 2 乘以 result3,得到 2 // 因为 result3 是 int 类型,所以运算结果也会是 int 类型 int result4 = 2 * result3; // 将 result2、result4 相加,得到 3.5 // 因为 result2 是 double 类型,result4 是 int 类型,所以运算结果会是 double 类型 double result5 = result2 + result4; // 强制转换将 result5 转换为 int 类型,得到 3 // 强制转换会舍弃小数部分,只保留整数部分 d = (int)result5; printf("d=%d\n", d); return 0; }
运行结果:
二、程序改错
程序中有4处错误,上机调试程序,修改有错误的语句行,并输出正确的运行结果。
第1句: #include<stdio.h>
第2句:int main()
第3句:{ float x=2,y ;
第4句: y=3;
第5句: z=2x +y;
第6句: printf("%d\n",y);
第7句: printf("%f\n,z");
第8句: return 0;}
修正后的代码:
#include <stdio.h> int main() { float x = 2, y; y = 3; float z = 2 * x + y; printf("%f\n", y); printf("%f\n", z); return 0; }
修改后的程序中,修复了以下错误:
1.第3句:修复了变量声明中缺少分号的错误,在 float x=2,y ;
语句中添加了分号。
2.第5句:修复了乘法运算符的错误,将 2x
更正为 2 * x
。
3.第6句:修复了错误的格式化字符串,变量 y
是浮点型,应该使用 %f
进行格式化输出。
4.第7句:修复了字符串格式化错误,在 printf
语句中,将 z
作为 %f
的参数并用逗号分隔,修正为 "%f\n"
。
运行结果:
三、程序设计
编写程序,将China译成密码,译码规律是:用原来字母后面的第5个字母代替原来的字母。
实现代码:
#include <stdio.h> #include <string.h> int main() { char str[100] = "China"; int len = strlen(str); for (int i = 0; i < len; i++) { if ('A' <= str[i] && str[i] <= 'Z') { // 对于大写字母,将字母后移5个位置,并取模,保证在字母表范围内 str[i] = (str[i] - 'A' + 5) % 26 + 'A'; } else if ('a' <= str[i] && str[i] <= 'z') { // 对于小写字母,同理 str[i] = (str[i] - 'a' + 5) % 26 + 'a'; } } printf("加密后的密文为: %s\n", str); return 0; }
运行结果:
总结
通过学习顺序结构程序设计,我们可以了解到程序的执行顺序是从上到下依次执行的,这为我们编写简单而有效的程序提供了基础。掌握顺序结构程序设计的基本思想和技巧对于学习和理解其他复杂的程序控制结构(如条件语句和循环语句)至关重要。