1.while语句
while(表达式) 语句
while语句可简单地记为: 只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句。 “语句”就是循环体。循环体可以是一个简单的语句,可以是复合语句(用花括号括起来的若干语句)。 执行循环体的次数是由循环条件控制的,这个循环条件就是上面一般形式中的“表达式”,它也称为循环条件表达式。当此表达式的值为“真” (以非0值表示)时,就执行循环体语句;为“假” (以0表示)时,就不执行循环体语句。
例如:求1+2+++100的值
#include<stdio.h>
int main()
{
int i=1,sum=0; //定义变量i的初值为1,sum的初值为0
while(i<=100) //当i>100,条件表达式i<=100的值为假,不执行循环体
{ //循环体开始
sum=sum+i; //第1次累加后,sum的值为1
i++; //加完后,i的值加1,为下次累加做准备
} //循环体结束
printf("sum=%d\n",sum); //输出1+2+3…+100的累加和
return 0;
}
注意:不要忽略给i和sum赋初值,否则它们的值是不可预测的,结果显然不正确。
2.do while语句
do
语句
while(表达式);
注意:分号
3.for语句
or(表达式1;表达式2;表达式3)
语句
表达式1: 设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值。 表达式2: 是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。 表达式3: 作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的。
4.break语句
作用:使流程跳到循环体之外,接着执行循环体下面的语句。
注意:break语句只能用于循环语句和switch语句之中,而不能单独使用。
5.continue语句
作用:结束本次循环,即跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行for语句中的“表达式3”,然后进行下一次是否执行循环的判定。
continue语句只结束本次循环,而非终止整个循环。break语句结束整个循环,不再判断执行循环的条件是否成立
键盘输入和屏幕输出
单个字符的输入/输出
4.1
● 字符\n代表一个字符
● ASCII码值小写英文字母比大写英文字母值大32
● 函数getchar()没有参数,函数的返回值就是从终端键盘读入的字符
函数printf()的格式转换说明
%d有符号,%u(unsigned int) %o(八进制) %x(十六进制) %X无符号
%d %u以十进制格式输出,%o以八进制格式输出,%x %X以十六进制格式输出
%o %x %X不输出前导符
单精度的有效位数一般为7位,双精度的有效位数一般为16位
%f适合输出像3.14这样小数位少的,使实数输出的宽度较小
%e适合于输出像1.0e+10这样小数位较多的实数,可以使实数输出的宽度较小
● \n在双引号内语句输出一个字符串,在单引号内语句输出一个字符
● 域宽:存放输出数据的宽度
● 显示精度越高,测量误差越小,测量越准确
● 若域宽小于被打印数据的宽度,数据通常会在域内右对齐。若大于,域宽自动增长
● 小数点也占一个字符,如P50例4.3
4.3
scanf格式转换说明
● 空白字符也作为有效字符输入(包括回车、空格、制表符)
● 输入字符串,遇到空白字符时,系统认为读入结束(但在开始读之前遇到的空白字符会被系统跳过)
● 如果函数scanf()的格式控制字符串中存在除格式说明符以外的其他字符,那么这些字符必须在输入数据时由用户从键盘原样输入
● P52例4.4(5)中函数printf()格式控制字符串中的字符’\”’是转义字符,代表双引号字符
4.4
● scanf()函数的%c格式符存在问题的解决方法:1.用函数getchar()将数据输入时存入缓冲区中的回车符读入,以避免被后面的字符变量作为有效字符读入 2.在%c前面加一个空格,忽略前面数据输入时存入缓冲区中的回车符,避免被后面的字符型变量作为有效字符读入