算法
算法的性质:
- 有穷性
- 确定性:算法的每一步必须是确切定义的,使算法的执行者或阅读者都能明确其含义及如何执行,并且在任何条件下,算法都只有一条执行路径。
- 可行性
- 有输入
- 有输出
算法的评价标准:
- 正确性:有理论依据
- 可读性:容易理解
- 健壮性(鲁棒性):容错能力强
- 高效率与低储存量需求:运行时间短且低消耗
常用的算法有流程图、结构图、伪代码和PAD图等,如:
流程图:
【例1】求3个整数的和。
【例2】求两个正整数的最大公约数。
N-S结构流程图:
程序的基本结构
C语言程序可分为3种基本结构,即顺序结构、选择结构和循环结构。
顺序结构
选择结构
循环结构
循环结构有两种形式:当型循环和直到型循环。
当型循环
直到型循环
C语言提供了3种循环语句,即while循环、do-while循环和for循环。
顺序结构程序
C语言的语句可分为5类:控制语句、表达式语句、函数调用语句、复合语句和空语句。除了控制语句外,其余4类都属于顺序执行语句。
表达语句
要在各个表达式后加一个分号(;)形成一个表达式语句。
空语句
空语句直接由(;)组成,常用于控制语句中必须出现语句之处,不做任何操作。
函数调用语句
例:
scanf("%f",&r); /* 输入实型 */
printf("%f",r); / * 输出实型 */
复合语句
用花括号括{}起来的语句,例:
{
z=x;
x=y;
y=z;
}
控制语句
控制语句有条件判断语句(if、switch)、循环语句(for、while、do-while)、转移语句(goto、continue、break、return)。
数据的输入与输出
字符输出函数putchar()
每调用putchar()函数一次,就向显示器输出一个字符。例:
#include<stdio.h>
int main()
{
char a,b;
a='r';
b='e';
putchar(a);
putchar(b);
putchar('\n');
}
运行结果:
red
字符输入函数
C语言提供了getchar()、getch()、getche()函数进行单个字符输入
注:getch()函数不将键盘上输入的字符回显在屏幕上,常用于密码输入或菜单选择。getcha()将输入的字符直接回显在屏幕上。getchar()用户在键盘上输入一个字符需要按一次回车键,才能被计算机接受。使用getch()和getche()函数时,只能接受一次输入。
例:
#include<stdio.h>
int main()
{
char ch;
ch=getch();
putchar(ch-32);
}
若从键盘输入b(注意,屏幕上不显示b),在屏幕上显示:
B
字符串输入/输出函数
gets()为输入函数,puts()为输出函数。gets()函数在输入字符串后,必须用回车作为输入结束。该回车符并不属于这串字符,由一个“字符串结束标志(’\0’)在串的最后来代替它。
例:
#include<stdio.h>
int main()
{
char str[80];
gets(str);
puts(str);
}
当输入为“How are you?”,输出为:
How are you?
格式的输入与输出
格式输出函数
printf(“格式控制字符串”,输出项表);
例:“%d”表示按十进制整型输出;“%ld”表示按十进制长整型输出;“%c”表示按字符型输出等。
printf()函数的格式说明:
附加格式说明符:
例如,可在%和格式字符之间加入形如“m.n”(m,n均为整数)的修饰。其中,m为宽度修饰,n为精度修饰。例如,%8.2f表示用实型格式输出,附加格式说明符“8.2”表示输出宽度为8,输出2位小数。
不同类型数据的输出
#include<stdio.h>
int main()
{
int x=28;
unsignded y;
long z;
float sum;
y=567;z=234678;sum=388.78;
printf("Example :\n");
printf("x=%d,%5d,%-6,z=%ld\n",x,x,x,z);
printf("y=%o,%x,%u \n",y,y,y);
printf("sum=%f,%8.1f,%e \n",sum,sum,sum);
}
运行结果:
Example :
x=28, 28,28 ,z=234678
y=1067,237,567
sum=388.779999, 388.8,3.887800e+02
格式输入函数
C语言用不同的格式字符描述:
C语言还提供附加格式字符用于输入数据格式的进一步描述: