《C语言程序设计》 第5章循环结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章 循环结构
5.1 while语句 5.2 do-while语句
5.3 for语句
5.4 三种循环语句的比较 5.5 循环的嵌套 5.5 break语句和continue语句 5.7 综合实例
1
第5章 循环结构
循环结构又称重复结构,可以完成重复 性、规律性的操作。 如求若干数的和、迭代求根等等。 C语言共有三种类型的循环语句: – while – do-while – for
2
5.1 while语句
While语句的一般格式: 流程图: while(表达式) { 循环体 } 表达式 功能:先判断表达式的值的真假,若 为真(非零)时,就执行循环体的语句 真 系列,否则退出循环结构。 说明:所谓循环是指使用一定条件对 同一个程序段重复执行若干次。被重 复执行的部分(可能由若干语句组成) 称为循环体。
# include "stdio.h" main() { int number=0; while(number++<=1) printf("*%d\n",number); 运行结果为: *1 *2 **3
printf("**%d\n",number);
}
7
5.1 while语句
# include "stdio.h" main() { int number=0; while(number<=1) { number++; printf("%d\n",number); # include "stdio.h" main() { int number=0; while(number++<=1) printf("*%d\n",number); printf("**%d\n",number); }
循环体
假
3
5.1 while语句
【例5.1】编程实现1+2+3+…+100。
# include "stdio.h" 用传统流程图(图5.2)和N-S结构流图 (图 5.3)表示算法。 main() { int i,sum=0; i=1 i=1; 当i<=100 while(i<=100) { sum=sum+i sum+=i; i=i+1 i++; } 图5.3 printf("%d\n",sum); } 图5.2
5.1 while语句
# include "stdio.h" #【例 define IN】输入一正文,统计正文包含的行数,字数和字符数。 1 5.4 # define OUT 0 分析:正文的一行是以 '\n'为结束标志的一串字符,一个 /*count lines,words and characters in input*/ void main(void) 字是以 ' '为结束标志的一串字符。而字符数则是对每个输入 { 的字符(不包含 EOF)进行计数 . int c,nl,nw,nc,state; state=OUT; 算法: nl=nw=nc=0; ⑴将标志state置初值0,表示字符不在字中;各计数器变量均 printf("input a text end of ctrl+z:\n"); 置初值为0。 while((c=getchar())!=EOF) { ⑵ 读一个字符c,如果c不是EOF,则 ++nc; ⑵-1 字符数加1。 if(c=='\n') ++nl; -2 若c是 '\n'则行数加1。 if(c==' ⑵ '|| c=='\n'|| c=='\t') state=OUT; ⑵-3 如果c是空格字符‘ ’、换行字符‘\n’ 或制表字符‘ else if (state==OUT) 将标志置为 0,表示c字符不在字中;否则(c为非空白符),如 { 果标志为0(表示c是字的第一个字符)则将字数加1,并修改标 state=IN; ++nw; 志为1(表示当前字符c是一个字中的字符)。 }/*end⑵ of -4 else-if*/ 转步骤⑵循环. }/*end of while*/ 如果c是EOF ,则循环结束,转步骤⑶ 10 printf("lines=%d words=%d characters=%d\n",nl,nw,nc); } ⑶ 输出计数结果。
4
5.1 while语句
需要注意的是: ⑴循环体如果包含一个以上的语句,应该用 花括号括起来,以复合语句的形式出现。如 果不用花括号,则while语句的范围只到 while 后面第一个分号处。例如本例中 while 语句若 无花括号,则 while 语句范围只到“ sum+=i;” 。
⑵在循环体中应该有使循环趋向于结束的语 句。如无此语句,循环将永不结束。
5
5.1 while语句
【例5.2】看一个简单的印数程序。
# include "stdio.h"
main() {
int number=0;
while(number<=1) { number++;
运行结果为: 1 2
printf("%d\n",number); } }
6
5.1 while语句
【例5.3】 第二个印数程序。
}
} 运行结果为: 1 2
运行结果为: *1 *2 **3
源自文库
8
# include "stdio.h" void main() { char c;】 输入一行字符,按字母、数字和其它分成三类, 【例 5.4 int alpha,digit,other; 分别统计各类字符的数目 (换行符'\n'不在统计范围内)。 alpha=digit=other=0; 字母的条件: c>='a'&&c<= 'z'|| c>= 'A'&&c<= 'Z'成立, printf("input characters end of newline:\n"); 则 c为一个字符。 while(c=getchar()!='\n') 数字的条件: c>=‘ ’&&c<= ‘9’成立,则 if (c>='a'&&c<= 'z'||0 c>= 'A'&&c<= 'Z') c为一个数字。 alpha++; 算法: else if (c>='0'&&c<= '9') 0。 ⑴ 将各计数器变量置初值为 digit++; ⑵ 提示用户输入一行字符。 else ⑶ 读入一个字符。 other++; ⑷ 检查 c是否为换行符‘\n’,如果不是,则检查c符合哪种字 printf("alpha=%d\ndigit=%d\nother= 符条件,并将相应计数器变量的值加 1,然后转步骤⑶(循 %d\n", alpha,digit,other); 环);如果 c是'\n'字符,则结束循环,转步骤⑸。 9 } ⑸ 输出计数结果。
5.1 while语句 5.2 do-while语句
5.3 for语句
5.4 三种循环语句的比较 5.5 循环的嵌套 5.5 break语句和continue语句 5.7 综合实例
1
第5章 循环结构
循环结构又称重复结构,可以完成重复 性、规律性的操作。 如求若干数的和、迭代求根等等。 C语言共有三种类型的循环语句: – while – do-while – for
2
5.1 while语句
While语句的一般格式: 流程图: while(表达式) { 循环体 } 表达式 功能:先判断表达式的值的真假,若 为真(非零)时,就执行循环体的语句 真 系列,否则退出循环结构。 说明:所谓循环是指使用一定条件对 同一个程序段重复执行若干次。被重 复执行的部分(可能由若干语句组成) 称为循环体。
# include "stdio.h" main() { int number=0; while(number++<=1) printf("*%d\n",number); 运行结果为: *1 *2 **3
printf("**%d\n",number);
}
7
5.1 while语句
# include "stdio.h" main() { int number=0; while(number<=1) { number++; printf("%d\n",number); # include "stdio.h" main() { int number=0; while(number++<=1) printf("*%d\n",number); printf("**%d\n",number); }
循环体
假
3
5.1 while语句
【例5.1】编程实现1+2+3+…+100。
# include "stdio.h" 用传统流程图(图5.2)和N-S结构流图 (图 5.3)表示算法。 main() { int i,sum=0; i=1 i=1; 当i<=100 while(i<=100) { sum=sum+i sum+=i; i=i+1 i++; } 图5.3 printf("%d\n",sum); } 图5.2
5.1 while语句
# include "stdio.h" #【例 define IN】输入一正文,统计正文包含的行数,字数和字符数。 1 5.4 # define OUT 0 分析:正文的一行是以 '\n'为结束标志的一串字符,一个 /*count lines,words and characters in input*/ void main(void) 字是以 ' '为结束标志的一串字符。而字符数则是对每个输入 { 的字符(不包含 EOF)进行计数 . int c,nl,nw,nc,state; state=OUT; 算法: nl=nw=nc=0; ⑴将标志state置初值0,表示字符不在字中;各计数器变量均 printf("input a text end of ctrl+z:\n"); 置初值为0。 while((c=getchar())!=EOF) { ⑵ 读一个字符c,如果c不是EOF,则 ++nc; ⑵-1 字符数加1。 if(c=='\n') ++nl; -2 若c是 '\n'则行数加1。 if(c==' ⑵ '|| c=='\n'|| c=='\t') state=OUT; ⑵-3 如果c是空格字符‘ ’、换行字符‘\n’ 或制表字符‘ else if (state==OUT) 将标志置为 0,表示c字符不在字中;否则(c为非空白符),如 { 果标志为0(表示c是字的第一个字符)则将字数加1,并修改标 state=IN; ++nw; 志为1(表示当前字符c是一个字中的字符)。 }/*end⑵ of -4 else-if*/ 转步骤⑵循环. }/*end of while*/ 如果c是EOF ,则循环结束,转步骤⑶ 10 printf("lines=%d words=%d characters=%d\n",nl,nw,nc); } ⑶ 输出计数结果。
4
5.1 while语句
需要注意的是: ⑴循环体如果包含一个以上的语句,应该用 花括号括起来,以复合语句的形式出现。如 果不用花括号,则while语句的范围只到 while 后面第一个分号处。例如本例中 while 语句若 无花括号,则 while 语句范围只到“ sum+=i;” 。
⑵在循环体中应该有使循环趋向于结束的语 句。如无此语句,循环将永不结束。
5
5.1 while语句
【例5.2】看一个简单的印数程序。
# include "stdio.h"
main() {
int number=0;
while(number<=1) { number++;
运行结果为: 1 2
printf("%d\n",number); } }
6
5.1 while语句
【例5.3】 第二个印数程序。
}
} 运行结果为: 1 2
运行结果为: *1 *2 **3
源自文库
8
# include "stdio.h" void main() { char c;】 输入一行字符,按字母、数字和其它分成三类, 【例 5.4 int alpha,digit,other; 分别统计各类字符的数目 (换行符'\n'不在统计范围内)。 alpha=digit=other=0; 字母的条件: c>='a'&&c<= 'z'|| c>= 'A'&&c<= 'Z'成立, printf("input characters end of newline:\n"); 则 c为一个字符。 while(c=getchar()!='\n') 数字的条件: c>=‘ ’&&c<= ‘9’成立,则 if (c>='a'&&c<= 'z'||0 c>= 'A'&&c<= 'Z') c为一个数字。 alpha++; 算法: else if (c>='0'&&c<= '9') 0。 ⑴ 将各计数器变量置初值为 digit++; ⑵ 提示用户输入一行字符。 else ⑶ 读入一个字符。 other++; ⑷ 检查 c是否为换行符‘\n’,如果不是,则检查c符合哪种字 printf("alpha=%d\ndigit=%d\nother= 符条件,并将相应计数器变量的值加 1,然后转步骤⑶(循 %d\n", alpha,digit,other); 环);如果 c是'\n'字符,则结束循环,转步骤⑸。 9 } ⑸ 输出计数结果。