当前位置:
文档之家› 吉林大学远程教育课件 C语言程序计 4
吉林大学远程教育课件 C语言程序计 4
4.5
循
环
我们可以将以上for循环用下面的while循环等价地表 示: e1; 求解表达式e1 while(e2) 0 { 语句 e2 e3; 非0 } 语句 例: i=1; 求解表达式e3 while(i<=10) { sum=sum+i; i++; }
4.5
循
环
2 3 5 7 11 13 17 19 23 ...
9 10
4.5
循
环
例:猴子第一天摘下若干个桃子,当天吃了一半,还不过瘾, 又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了 一个。以后每天都吃前一天剩下的一半零一个。到第10天再 想吃时,只剩下一个桃子了。求第一天共摘下多少个桃子。 设桃子总数为N1,则有: n1=2(n2+1) main() n2=2(n3+1) { int i=1,s=1; n3=2(n4+1) for(;i<=9;++i) ┆ s=2*(s+1); n9=2(n10+1) printf(“%d\n”,s); n10=1 }
函数调用语句也属于表达式语句的一个特例, 如:
printf(“%d\n”,5); ch=getchar(); putchar(ch);
4.1 C语句概述
3.块(复合语句) { 语句组 } 例: { t=a; a=b; b=t; } 4.控制语句: 条件、循环
4.2 关系运算符和关系表达式
一、 关系运算符(6种) <(小于) <=(小于或等于) >(大于) >=(大于或等于) ==(等于) !=(不等于)
4.5
循
环
(3) for语句的循环体由多个语句组成,要形成复合语句 . (4) 在for语句的循环体中使用break和continue语句。例: main( ) { int i; for(i=1;i<=100;++i) 1 { if(i==5) continue; 2 3 printf(“%d\n”,i); 4 if(i==10) break; 6 } 7 8 }
4.5
循
环
isprime(n) int n; { int i=1; while(++i<n) if(n%i==0) { printf(“%d is not prime\n”,n); i=n; } if(i==n)/*是否被自己整除?*/ printf(“%d is prime\n”,n); }
4.5
4.2 关系运算符和关系表达式
二、关系表达式 关系表达式的值是一个逻辑值,即“真”或 “假”。如:“5==3”的值为“假”,“6>3” 的 值为“真”. 三、说明 前4种关系运算符(<,<=,>,>=)的优先级相同, 后两种也相同。且前4种的优先级高于后两种。 C语言没有逻辑型数据,以整数1代表 “真”, 以0代表“假”。如:a=(5>3) 结果将a置为1
a||b: 若a和b皆为“假”,则a||b的值为“假”,否则为“真”。
三、逻辑表达式
表达式的结果最终是由逻辑运算符运算的称为逻辑表达式. 如:a=3,b=2,c=4,d=5 则: (a>b)&&(c<d) 值为 1 !(a>b) (a>b)||(c<d) 值为 0 值为 1
4.3 逻辑运算符和逻辑表达式
4.5
4.break语句 作用:中断循环,例:
循
环
main( ) { int i=0; while (i<1000) { if(i==5) break; else printf(“%d\n”,i); i++ ; } printf(“the loop break out\n”); }
4.5
循
环
如果要让其和最外层if配对,必须用块来显式 地标界如下:
if(a>b) { if(b<c) c=a; } else c=b;
4.4 条 件 分 支
计算 y= 程序:
main() { int x,y; scanf(“%d”,&x); if(x<0) y=x-1; else if(x=0) y=0; else y=x+1; printf(“x=%d,y=%d”,x,y); }
out 0 1 2 3 4 the loop break out break语句通常是和if语句一起使用的。 例: 判别一 个整数n(n≥2)是否为素数.
4.5
循
环
isprime(n) int n; { int i=1; while(++i<n) if(n%i==0) { printf(“%d is not prime\n”,n); break; } if(i==n)/*是否被自己整除?*/ printf(“%d is prime\n”,n); }
4.4 条 件 分 支
二、块if if(表达式) 语句1 else 语句2 例: if(a>b) printf(“%d”,a); else printf(“%d”,b);
0 非0
表达式 语句2 语句1
4.4 条 件 分 支
三、if-else-if语句 if(表达式1) 语句 1 else if(表达式2) 语句 2 ┆ else if(表达式n) 语句 n else 语句 n+1
的值是1(真) 的值是0(假) 的值是0(假) 的值是1(真)
2.逻辑运算符的操作数,可以是任何类型的数据,系 统最终以0和非0来判定它们的逻辑值是“真”还是 “假”。如:
′c′ && ′d′ 的值是1 4 && !a|| 2 的值是1
4.3 逻辑运算符和逻辑表达式
例: 判别某年year是否为闰年,可用如下 逻辑表达式来进行判断:
第Байду номын сангаас章 C语句及控制结构
4.1 C语句概述
C语句可分为四类: 1.空语句: ; 作用:循环体和转向点 2.表达式语句 表达式; 功能:表达式求值 如:1+3; a+b-c;
4.1 C语句概述
常用的表达式语句:
a=3; b++; I=1,j=2,k=3; a+=2; t=a,a=b,b=t; I=3*5+6;
(year%4==0&&year%100!=0)||year%400==0
非闰年的判断条件为:
!(year%4==0&&year%100!=0)||year%400==0)
(year%4!=0||year%100==0)&&year%400!=0 (year%4||!(year%100))&&year%400
4.4 条 件 分 支
C语言提供了三种形式的条件分支语句。 一、简单if if (表达式) 语句 表达式
if(ch>=„a‟&& ch<=„z‟) putchar(ch);
非0
这里语句也可以是块, 如:
0
语句
if(a>b) { t=a; a=b; b=t; } 如果写成 if(a>b) t=a;a=b;b=t;则完全不同。
循
环
isprime(n) int n; { int i=2; while(n%i)i++; if(i==n) printf(“%d is prime\n”,n); else printf(“%d is not prime\n”,n); }
4.5
循
环
5. continue语句 使用continue语句跳出本次循环体直接进入下一轮循 环。continue通常要和if语句一起使用。 main( ) 1 { int i=0; 2 while(++i<10) 3 { 4 6 if(i==5) continue; 7 printf(“%d\n”,i); 8 9 } }
4.4 条 件 分 支
在嵌套使用if语句时,应注意的一点是if和else的 配对关系. 原则:else只和其前面最靠近它的if配对. 例:
if(a>b) if(b<c) c=a; else c=b;
尽管我们在书写程序时,让else和最外层的if对 齐,但它实际上是和内层if配对的。
4.4 条 件 分 支
例:求2至32767之间的所有素数。 main() { int i,n; for(n=2;n<=32767;++n) { for(i=2;n%i;++i); if(i==n) printf(“%d\n”,n); } }
4.5
循
环
说明: (1)for语句中的表达式可以部分省略或全部省略,但分号 不能省略.如果e2省略,则认为测试结果恒为“真”。 故循环将永远执行下去。例: for( ; ; ); for( ; ; ) putchar(„a‟); 但下面循环不会永远执行下去 for( i=1;;i++)sum = sum+i; (2)for语句中e1,e2,e3可以是任何有效的C语言表达式.可 以是逗号表达式 .例: for(i=1,sum=0;i<5;i++,i++) sum+=i;
4.3 逻辑运算符和逻辑表达式
一、逻辑运算符(3种): ! 逻辑非(一元运算符) && 逻辑与(二元运算符) || 逻辑或(二元运算符) 逻辑运算符的操作数为逻辑型量 优先顺序如下: !(非) &&(与) ||(或)
4.3 逻辑运算符和逻辑表达式
二、运算规则
!a: 若a为“真”,则!a的值为“假”,若a为“假”,则!a的值为 “真”。 a&&b: 若a和b皆为“真”,则a&&b的值为“真”,否则为 “假”。