第3章for 循 环 同一件事情要重复做数次,则用循环。循环在程序设计中很重要。 3.1 一重循环的定义和应用 for循环语句的格式为: 初值 条件 步长 │││ for(i=0; i<10; i=i+1) { 循环语句体; }先判后做, 若条件满足, 则执行循环体, 循环变量 i加步长, 进入下一次循环……; 若条件不满足,则退出循环。 3.1.1 一重循环的通常用法 /ex34_0.c 用循环语句输出10个字符/ main() { int i; for(i=0; i<10; i++) printf("%c",'A'); getch(); } /运行结果: AAAAAAAAAA / 3.1.2 不要改变循环变量的值 /ex34_1.c不要改变循环变量的值/ main() { int i; for(i=0; i<10; i++) printf("%2d",i); /输出循环变量的值/ getch(); } /运行结果: 0 1 2 3 4 5 6 7 8 9 /说明: %2d的功能是占2个字符位置,数据右对齐。 3.1.3 用循环计算1+2+3+…+100的值 /ex34_2.c 用循环计算 1+2+3+…+100 的值/ main() { int i,sum=0; for(i=1; i <=100; i++) sum=sum+i; printf("sum=%d\\n",sum); getch(); } /运行结果: sum=5050 /说明: sum=sum+i是加法表达式,sum的初值为0. t=ti 是乘法表达式,t的初值为1. C语言程序设计实例解析第3章 for循环 3.1.4 用循环计算2+4+…+100的值 /ex34_3.c 用循环计算 2+4+…+100 的值/ main() { int i,sum=0; for(i=2; i <=100; i=i+2) sum=sum+i; printf("sum=%d\\n",sum); getch(); } /运行结果: sum=2550 /说明: i=i+2步长为2. 3.1.5 用循环计算1+3+5+…+99的值 /ex34_4.c 用循环计算 1+3+5+…+99 的值/ main() {int i,sum=0; for(i=1; i <=99; i=i+2) sum=sum+i; printf("sum=%d\\n",sum); getch(); } /运行结果: sum=2500 /3.1.6 用循环计算 10! /ex34_5.c 用循环计算 10!/ main() { int i; long t=1; for(i=1;i<=10;i++) t=ti; printf("t=%ld\\n",t); getch(); } /运行结果: t=3628800 /说明: 用长整型long,以防溢出。 3.1.7 输出ASCII字符 /ex7_0.c 输出ASCII字符/ main() { unsigned int i; printf("---------------------------------------------\\ ------------------------------------------------------------\\n"); /序行符 '\\'/ for(i=0;i<256;i++) printf("%2c",i);/%c 字符输出/ getchar(); }说明: 序行符'\\'后不能有空格符(转义符'\\'后没有任何字符). ASCII字符与ASCII值一一对应。 3.1.8 用循环计算1+2+3+…+100的值(用+=运算符) /ex42.c用循环计算1+2+3+…+100 的值(用+=运算符)/ main() { int i,sum=0; for(i=1; i<=100; i++) sum+=i; printf("sum=%d\\n", sum); getchar(); } /运行结果: sum=5050 /3.1.9 用循环计算1+2+3+…+100的值(将i放入循环) /ex43.c用循环计算1+2+3+…+100 的值(将i放入循环)/ main() { int i,sum; for(i=1,sum=0; i <=100; i++) sum+=i; printf("sum=%d\\n", sum); getchar(); } /运行结果: sum=5050 /说明: for内可以用逗号运算符,for内必须有两个分号。 3.1.10 用循环计算1+2+3+…+100的值(将i和sum放入循环) /ex44.c 用循环计算1+2+3+…+100 的值(将i和sum放入循环)/ main() { int i,sum; for(i=1,sum=0; i <=100; sum+=i,i++); printf("sum=%d\\n", sum); getchar(); } /运行结果: sum=5050 /3.1.11 矩形法求定积分 /ex53.c 矩形法求定积分/ #include main() { int i,n; float a,b; double h, s=0, f, x; printf("请输入积分区间a,b及划分积分区间隔的份数(用逗号分开): "); scanf("%f,%f,%d", &a, &b, &n); h=(b-a)/n; /矩形高=积分区间/n/ x=a;/积分起点 x/ f=x;/函数 y=f(x)=x/ for(i=1; i main() { int i,n; float a, b, x; double h, s=0, f1,f2; printf("请输入积分区间a,b和将积分区间分成多少份(用逗号分开): "); scanf("%f,%f,%d", &a, &b, &n); f1=x; /f1=f(a) 小梯形的上底/ h=(b-a)/n;/小梯形形高/ for(i=1; i<=n; i++)/n 个小梯形/ {f2=(a+ih);/f2=f(a+ih) 小梯形的下底/ s=s+(f1+f2)h/2;/小梯形面积累加/ f1=f2;/小梯形的上底/ } printf("积分区间的面积=%f\\n", s); getchar(); getchar(); } /运行结果: 请输入积分区间a,b和将积分区间分成多少份(用逗号分开): 0,1,100 积分区间的面积=0.500000 /说明: 不是用解析法求准确值,而是用矩形法求近似值。n 越大,积分值越准确。 3.2 二重循环的定义和应用 二重循环是在一重循环的基础上再加上一个一重循环,分别叫外循环和内循环。外循环和内循环的循环变量不能同名。在循环体内不要改变循环的值。 3.2.1 用二重循环显示图案1 /ex34_6.c 用循环显示图案1. (10个)    / main() { int i,j; for(i=0;i<10;i++) /外循环(行数)/ { for(j=0;j<10;j++)/内循环(一行10个'')/ printf("%c",''); printf("\\n");/回车+换行/ } getch(); }说明: 内循环变量j和外循环变量i不要同名。执行的过程如下。 i=0(j=0,1,2,…,9) i=1(j=0,1,2,…,9)  i=9(j=0,1,2,…,9)3.2.2 用循环显示图案2 /ex34_7.c 用循环显示图案2.     (10个) / main() { int i,j; for(i=0;i<10;i++) { for(j=0;j=0; i--)/行数/ { for(j=0;j=0;i--) /行数/ { for(j=0;j<=i;j++) printf("%c",''); printf("\\n"); } getch(); }3.2.5 用ASCII字符画一个矩形 /ex7_1.c 用 ASCII 字符画一个矩形/ main() { unsigned int i,j; printf("\\n"); printf("%c",218); /左上角/ for(i=0;i<70;i++) printf("%c",196);/横线/ printf("%c\\n",191);/右上角/ for(j=0;j<20;j++) {printf("%c",179);/|/ for(i=0;i<70;i++) printf("%c",32);/空格/ printf("%c\\n",179); /|/ } printf("%c",192);/左下角/ for(i=0;i<70;i++) printf("%c",196);/横线/ printf("%c\\n",217);/右下角/ getch(); }说明: 218、179、192、196和217等ASCII值,是矩形角的特殊ASCII字符值。 3.2.6 用 ASCII 字符画表格 /ex7_2.c 用 ASCII 字符画表格/ main() { unsigned int i,j; printf("\\n"); /以下画表头线/ printf("%c",218);/左上角/ for(i=0;i<70;i++) printf("%c",196);/横线/ printf("%c\\n",191);/右上角/ /以下画表中横线和空行/ for(j=0;j<20;j++)/表格行数/ {////////////////////////////// printf("%c",179);/|/ for(i=0;i<70;i++)/横线/ printf("%c",32);/空格/ printf("%c\\n",179);/|/ printf("%c",195);/|-/ for(i=0;i<70;i++) printf("%c",196);/横线/ printf("%c\\n",180);/-|/ }////////////////////////////// printf("%c",179); /以下画表底线/ for(i=0;i<70;i++) printf("%c",32);/空格/ printf("%c\\n",179);/|/ printf("%c",192);/左下角/ for(i=0;i<70;i++) printf("%c",196);/横线/ printf("%c\\n",217);/右下角/ getch(); } 3.2.7 输出乘法表 /ex45.c输出乘法表/ main() { int i,j; for(i=1; i<=9; i++) { for(j=1; j<=9; j++) printf("%d%d=%2d ", i, j, ij ); printf("\\n"); } getchar(); } /运行结果: 11=1 12=2 13=3 … 19=9 21=2 22=4 23=6 … 29=18 31=3 32=6 33=9 … 39=27  91=9 92=18 93=27 … 99=81 /