循环语句
- while
while( 循环条件 ) //1 先判断循环条件 如果条件为真 执行循环体语句;否则执行}后面的语句
{
//循环体语句
dosomething..... //2 执行完循环体语句之后再次执行 1
}
如果循环体语句只有一条语句,那么循环体语句外面的{ }可以省略。
while ( 没有得到答案 )
printf("你有男朋友吗?\n");
continue
单词本义
继续
,表示本轮循环不再执行,下一轮继续。break
单词本义
打破
,表示打破(跳出)语句所在的循环。注意如果有多层循环,break语句只能跳出当前这一层循环。
for
//1先执行for循环中的 初始化表达式 然后 执行2
for( 初始化表达式 ;循环条件表达式 ; update-expr) //2 判断循环条件 如果循环条件为真 执行3;否则执行}后面的语句
{
//循环体语句
dosomething..... //3 执行完循环体语句之后再次执行 2
}
update-expr 从字面来看叫 更新表达式,用以 表示下一轮循环和本轮循环 有哪些值是需要被更新的。
C99的for改进
C89、C99、C11为何物
美国国家标准协会(ANSI)
国际电工委员会(IEC)
国际标准化组织(ISO)
1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了UNIX。此时,编程的乐趣使他们已经完全忘记了那个"Space Travel",一门心思地投入到了UNIX和C语言的开发中。随着UNIX的发展,C语言自身也在不断地完善。直到今天,各种版本的UNIX内核和周边工具仍然使用C语言作为最主要的开发语言,其中还有不少继承Thompson和Ritchie之手的代码。
在开发中,他们还考虑把UNIX移植到其他类型的计算机上使用。C语言强大的移植性(Portability)在此显现。机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在Alpha,SPARC和ARM等机器上运行。而C语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。
1977年,Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译程序《可移植的C语言编译程序》。
1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商,编译器及其他软件工具生产商,软件设计师,顾问,学术界人士,C语言作者和应用程序员组成。
1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159—1989,简称“C89”,不过人们也习惯称其为“ANSI C”。C89在1990年被国际标准组织ISO(International Organization for Standardization)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被简称为“C90”。
1999年,基于C89做了修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。
2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899: 2011,简称为“C11”。
在C89中for只能写成这样的
int i = 0;
for( ;i < 1000; ++i)
{
printf("i = %d\n",i);
}
C99及以后则可以写成这样
for( int i = 0; i < 1000; ++i)
{
printf("i = %d\n",i);
}
可以看出C99及之后的语法更加简洁。C++语言也支持这两种写法,而且在C++中第二种写法更加常用。
指定编译器以c99方式编译我们的C代码
linux command-gcc
gcc src.c -std=c99
Qt IDE
在Qt项目的pro文件中加上 QMAKE_CFLAGS += -std=c99
- Microsoft Visual Studio
MSVC是一个C++编译器,因此我们不需要指定即可直接编译部分C99标准
的代码。
循环嵌套
演示多个循环循环嵌套时,break的使用。
新增案例:99乘法表
1_1= 1
1_2= 2 2_2= 4
1_3= 3 2_3= 6 3_3= 9
1_4= 4 2_4= 8 3_4=12 4_4=16
1_5= 5 2_5=10 3_5=15 4_5=20 5_5=25
1_6= 6 2_6=12 3_6=18 4_6=24 5_6=30 6_6=36
1_7= 7 2_7=14 3_7=21 4_7=28 5_7=35 6_7=42 7_7=49
1_8= 8 2_8=16 3_8=24 4_8=32 5_8=40 6_8=48 7_8=56 8_8=64
1_9= 9 2_9=18 3_9=27 4_9=36 5_9=45 6_9=54 7_9=63 8_9=72 9*9=81
1.思路
1>
X_X=X
X_X=X X_X=X
X_X=X X_X=X X_X=X
X_X=X X_X=X X_X=X X_X=X
X_X=X X_X=X X_X=X X_X=X X_X=X
X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X
X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X
X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X
X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X X_X=X X*X=X
2>
@
@ @
@ @ @
@ @ @ @
@ @ @ @ @
@ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @
3>
把符号替换成等式。
#include <stdio.h>
int main()
{
for (int i = 1; i < 10; i++)
{
for (int j = 1; j<i+1; j++)
{
// printf("*");
// printf("* ");
// \t 制表符 --- 每次打印会空出4个空格
// printf("*\t");
// printf("X*X=X\t");
// 打印几行的时候,第二个数恰好是几,而行数是i控制的
// printf("%d*%d=%d\t",j,i,i*j);
printf("%d*%d=%2d\t",j,i,i*j);
}
printf("\n");
}
return 0;
}