目录
数据结构 + 算法 = 程序
算法是程序的灵魂
1、算法的特征
1:有穷性;包含有限的操作步骤,不能无限制地执行下去;
2:可行性;算法中的每一条指令必须是切实可执行的;
3:确定性;算法中的每一条指令必须有确切的含义,不能产生歧义:
举例:计算:s = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
可以使用三种循环结构进行计算,也可以使用等差数列的求和公式来计算
#include<stdio.h>
int main()
{
//for循环实现计算
int sum=0;
for(int i=0;i<=10;i++)
sum += i;
printf("for循环实现结果:%d\n",sum);
sum = 0;
//while循环实现该计算
int i = 0;
while(i<=10)
{
sum += i;
i++;
}
printf("while循环实现结果:%d\n",sum);
sum = 0;
i = 0;
//do-while循环实现该计算
do
{
sum += i;
i++;
}while(i<=10);
printf("do-while循环实现结果:%d\n",sum);
sum = 0;
//使用等差数列求和公式来实现
sum = (1 + 10) * 10 / 2;
printf("差数列求和公式实现结果:%d\n",sum);
return 0;
}
2、顺序结构
各操作是按先后顺序执行的。是最简单的一种基本结构。
其中A和B两个框是顺序执行的。即在完成A框所指定的操作后,必然接着执行B框所指定的操作。
#include <stdio.h>
int main() {
// 打印一个消息
printf("Hello, World!\n");
// 声明一个变量
int number = 10;
// 打印变量的值
printf("The value of number is: %d\n", number);
// 返回成功状态码
return 0;
}
这段代码首先引入了标准输入输出库stdio.h,这是使用printf函数输出时需要的。然后在main函数中,先后执行了三个步骤:打印一个欢迎消息,声明并初始化一个变量,然后打印这个变量的值。最后,程序以返回值0结束,表示执行成功。这是C语言中最基本的顺序结构代码
3、选择结构
又称分支结构。根据是否满足给定条件而从两组操作中选择执行一种操作。虚线框内是一个选择结构。
(1)、无论P条件是否成立,只能执行A操作或B操作中的一个;
(2)、无论执行完哪一个分支后,就结束了;
(3)、两个操作可以有,另一个是空操作;
#include <stdio.h>
int main() {
int number;
printf("请输入一个数字: ");
scanf("%d", &number);
if (number > 0) {
printf("这是一个正数。\n");
} else if (number < 0) {
printf("这是一个负数。\n");
} else {
printf("这是零。\n");
}
return 0;
}
这段代码首先会提示用户输入一个数字,然后根据输入的数字是正数、负数还是零,使用if-else
结构来执行不同的操作。如果输入的数字大于0,它会打印出“这是一个正数”;如果输入的数字小于0,它会打印出“这是一个负数”;如果输入的数字是0,它会打印出“这是零”。
4、循环结构
又称重复结构,即在一定条件下,反复执行某一部分的操作。有两种类型:
名称 | 当型循环 | 直到型循环 |
流程图 | | |
执行过程 | 当给定条件P成立时,执行S操作,然后再判断P条件是否成立,如果仍成立,再执行S操作,然后再判断..,如此反复,直到某一次P条件不成立为止,此时不再执行S,结束循环。 | 执行S操作,然后判断条件P是否成立,如果成立,再执行S操作,然后再判断,..…,如此反复,直到某一次P条件不成立不再执行S,结束循环。 |
特点 | 先判断,后执行,S有可能一次也不执行 | 先执行,后判断,S最少要执行一次。 |
#include<stdio.h>
int main()
{
//当型循环(while循环或者for循环):只要条件为真,
//循环就会继续。循环中的代码块会被重复执行,直到条件变为假
int i = 0;
while(i < 5) {
printf("%d\n", i);
i++;
}
//直到型循环(Do-While循环):条件在循环体的末尾检查,
//所以循环体至少执行一次,然后再判断条件是否为真。
//如果条件为真,循环会再次执行,否则循环结束
int j = 0;
do {
printf("%d\n", j);
j++;
} while(j < 5);
return 0;
}
5、语句的分类
1.控制语句: 选择结构和循环结构, 改变程序执行顺序的关键字
选择语句:if语句,switch语句
循环语句:for, while, do...while
改变程序执行顺序的关键字:
return
continue
break
goto
2.函数的调用
login();
3.表达式语句
23+89;
a * 23 / b;
4.空语句
;
5.复合语句: 用大括号将某些代码行扩起来,作为一个整体,这个整体称为复合语句
特点:
1,限定变量的作用范围
2.复合语句中的变量和其他变量重名时,采用就近原则
6、复杂格式化输出符
1、整数
%d :将整型数据对应的格式化符
%md :m是一个正整数,用m个空间显示数据,如果数据长度不够m个,就在前面补空格(右对齐);如果超过,m不起作用,数据原样输出
2、字符串
%s :将字符串显示到屏幕上--字符串对应的格式化符
%ms :m是一个正整数,用m个空间显示数据,如果数据长度不够m个,就在前面补空格(右对齐);如果超过,m不起作用,数据原样输出
%m.ns :m代表显示占用的空间, n表示取数据前n个字符
取字符串前n个字符,如果m比n小,此时m不起作用,n个字符原样输出(左对齐)
取字符串前n个字符,如果m比n大,就在n个字符前补空格,占满m个空间(右对齐)
%-m.ns :-代表在字符右侧补空格(左对齐),m代表显示占用的空间, n表示取数据前n个字符
取字符串前n个字符,如果m比n小,此时m不起作用,n个字符原样输出
取字符串前n个字符,如果m比n大,就在n个字符后补空格,占满m个空间(左对齐)
%.ns :n表示取数据前n个字符
取字符串中前n个字符显示(左对齐)
3、浮点型数据
%f :数据的小数点后默认保留6位(左对齐),如果数据小数部分超过6位,就四舍五入
%.nf :n是一个正整数,表示小数点后保留n位(四舍五入) --左对齐
%m.nf :m,n都是正整数,m表示空间(小数点也占1个空间),n表示保留小数点后n位(四舍五入);
如果数据保留n小数点后n位的结果比m小,就在数据的左侧补空格(右对齐)
如果数据保留n小数点后n位的结果比m大,m就不起作用,数据正常显示(左对齐)
%-m.nf :m,n都是正整数,m表示空间(小数点也占1个空间),n表示保留小数点后n位(四舍五入)
如果数据保留n小数点后n位的结果比m小,就在数据的右侧补空格(左对齐)
如果数据保留n小数点后n位的结果比m大,m就不起作用,数据正常显示(左对齐);算法中的每一条指令必须是的每一条指令必须有确切的含义,不能产生