循环结构
11.
代码语言:javascript复制#include "stdio.h"
main()
{
char c;
c=getchar();
while(c!='?')
{
putchar(c);
c=getchar();
}
}
如果从键盘输入abcde?fgh(回车)
按回车后,才将字符串送入缓冲区,之后才开始执行getchar及其后面语句。getchar每次从缓冲区读入一个字符,遇到 ?循环结束。该缓冲机制是的按了回车之后程序才会继续执行,并不是输入一个字符之后立马putchar输出。
运行结果为:abcde
12.
代码语言:javascript复制#include <stdio.h>
main()
{
char c;
while((c=getchar())!=’$’)
{
if(‘A’<=c&&c<=‘Z’)
putchar(c);
else
if(‘a’<=c&&c<=‘z’)
putchar(c-32);
}
}
当输入为ab*AB�#CD$时,运行结果为:ABABCDCD
13. for语句,break,continue语句
代码语言:javascript复制#include <stdio.h>
main()
{
int x, y =0;
for(x=1;x<=10;x )
{
if(y>=10)
break;
y=y x;
}
printf(“%d %d”,y,x);
}
运行结果为:10 5
for( 表达式1;表达式2;表达式3)
{
}
(1) 先求解表达式1
(2) 求解表达式2,若其值为真,执行循环体,然后执行 (3). 若为假,则结束循环,转到(5)
(3) 求解表达式3
(4) 转回上面 (2)继续执行
(5) 循环结束,执行for语句下面的一个语句
break ,跳出循环体;
continue,结束本次循环(第i次循环),继续执行下一次循环(第i 1次循环)
此题 表达式1为x=1,表达式2(循环条件)为x<=10,表达式3为x
初值x为1,y为0,循环条件(即表达式2)x<=10成立,进入循环体
第1次循环
执行if语句。0小于10,if语句的条件表达式不成立,不执行break;
执行y=y x; y=0 1=1
转向表达式3,执行x , x=x 1=1 1=2。循环条件x<=10成立,进入第2次循环
第2次循环
执行if语句。1小于10,if语句的条件表达式不成立,不执行break;
执行y=y x; y=1 2=3
转向表达式3,执行x , x=x 1=2 1=3。循环条件x<=10成立,进入第3次循环
第3次循环
执行if语句。3小于10,if语句的条件表达式不成立,不执行break;
执行y=y x; y=3 3=6
转向表达式3,执行x , x=x 1=3 1=4。循环条件x<=10成立,进入第4次循环
第4次循环
执行if语句。6小于10,if语句的条件表达式不成立,不执行break;
执行y=y x; y=6 4=10
转向表达式3,执行x , x=x 1=4 1=5。循环条件x<=10成立,进入第5次循环
第5次循环
执行if语句。10等于10,if语句的条件表达式成立,执行break,跳出循环。
从break跳出至for语句的下一条语句。执行printf(“%d %d”,y,x);
输出当前的y与x.结果为10 5