资源描述:
《for循环程序设计(0909NITL)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1第5章for循环程序设计25.1for循环结构:C语言中的for循环语句比较复杂些,也比较灵活,功能较强,虽然主要用于定数循环,但也可以用于不定数循环,它完全可以替代while循环.1.for循环语句的一般形式:for(表达式1;表达式2;表达式3){循环体}3for(表达式1;表达式2;表达式3){循环体}表达式2求介表达式1内嵌语句真假for语句后下一条语句求介表达式3设置循环变量初值判断表达式循环变量增值4例5.1:求100之内各数之和:#includeintmain(){inti,sum=0;for(i=1;i<=100;i++)sum+=i
2、;printf(“1+2+…100=%d”,sum);return0;}i<=100?i=1sum+=i真假for语句后下一条语句i++{}5例:把100~200之间的不能被3整除的数输出。main(){intn;for(n=100;n<=200;n++){if(n%3==0)continue;/*能被3整除的数,不打印*/printf(“%5d”,n);}}当然函数体也可改成:if(n%3!=0)printf(“%d”,n);使用Continue仅是为了说明其的语法作用。6说明:表达式缺省的for()语句:for()语句中的三个表达式可以省略其中一个,二个,甚至三个。
3、但无论省略几个,其中的二个分号不能省。如果在for语句之前,给循环变量已赋值,表达式1可省去。分号不能省。如:sum=0;i=1;for(;i<=100;i++)sum=sum+i;表达式1可省去73.如果表达式2省略,C编译程序认为其值恒为真,无限循环下去。如:for(i=1;;i++)sum=sum+i;2.表达式3也可省去:如:for(i=1;i<=100;){sum=sum+i;i++;}可把变量增值部分放在循环体内.可在循环体内加break语句跳出循环.表达式3可省去表达式2可省去84.甚至三个表达式都可省略:for(;;)语句;例:intmain(){inti
4、=1,sum=0;for(;;){sum+=i;i++;if(i>10000)break;}}这种无限循环可用break语句来终止循环,避免产生死循环.9补充:逗号运算符(顺序运算符):级别最低的一种。用它将二个表达式联起来。逗号表达式的一般形式:表达式1,表达式2如:a=3*5,a=a*4……逗号表达式先求解3*5,得a的值为15,然后求解第二表达式a*4,得60。求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值为表达式2的值。10一般形式还可扩展:表达式1,表达式2,……,表达式n整个表达式的值为表达式n的值。注:a.在很多情况下,使用逗号表达式的目的
5、只是想得到各个表达式的值,并非一定需要得到或使用整个表达式的值。b.并非任何出现逗号的地方都是逗号运算符.如:printf(“%d,%d,%d”,a,b,c);其中的逗号就不是。115.含逗号运算符的for语句for语句中,表达式1、表达式3可以使用逗号运算符:如:for(i=1,j=20;iintmain(){inti,n,s=1;scanf("%d",&n);for(i=1;i<
6、=n;i++)s*=i;//s=s*iprintf("%d!=%d",n,s);return0;}ch5_5_2.c13例5.3输入一个正整数,逆序输出.#includeintmain(){intnum;intdigit;printf("Inputanumber:t");scanf("%d",&num);for(;num!=0;num=num/10){digit=num%10;printf("%d",digit);}printf("");return0;}14例5.4输入不多于10个实数,求这些数的和及其中正数之和.(若不足10个数,以0为结
7、束标志)#include#includeintmain(){floatsum,psum,x;inti=1;….15for(sum=psum=0.0,i=0;i<10;i++){scanf("%f",&x);if(fabs(x)<1e-4)break;sum+=x;//求这些数的总和if(x<0)continue;psum+=x;//其中正数之和}printf("sum=%f",sum);printf("psum=%f",psum);return0;}ch5_5_4.c16例5.5计算输