while语句的应用
例1
因为n始终大于3,while的表达式永远为真,所以一直执行循环,为死循环3
int n=3;
scanf("%d", &n);
while(n>0)
printf("%d", n);
例2
计算机认为while后面只有一条语句,--n被忽略,也是死循环
int n=3;
scanf("%d", &n);
while(n>0)
printf("%d", n);--n;
要执行--n,有两种方法,输出结果为:321
int n=3;
while(n>0)
printf("%d", n),--n; //第一种
while(n>0)
{ printf("%d", n);--n }; //第二种
又或者
while(n>0)
printf("%d", n--);
但是,如果为--n;结果为:210
while(n>0)
printf("%d", --n);
下例结果也是:210
int n=3;
while(n-- >0)
printf("%d", n);
例3
表达式,输出同时有n--,--n,
其结果为:531-1
int n=7;
while(n-- >0)
printf("%d", --n);
给例3写一个循环过程:
首先 n赋值为 7
第一次循环:n-- = 7,n的值变成了6,然后--n是先改变值再赋值,--n就等于5,然后输出
例4
输出结果都为:43210
while(n) 相当于 while( n!=0 )
int n=5;
while(n)
printf("%d", --n);
while(n--)
printf("%d", n);
注意!
当 while(n--);
while后面有个分号时
结果为:-1
==========================================================
例5 输出奇数
结果为:9
int n=5,s=0;
while(n)
{
if(n%2)
s += n--;
else
n--;
}
printf("%d", s);
输出奇数的错误算法:
输出将结果为:6
n--赋值为5,但是n变成了4,s就被赋值成4......
int n=5,s=0;
while(n)
{
if(n-- %2)
s += n;
}
printf("%d", s);
==============================================================
例6
输入一行字符,统计数字,字母,空格的个数:
需要用到 :
- char类型ch
- int类型计数器,digt,alph,lower,upper,space,other
int main()
{
char ch; //首先定义字符类型 ch 用来接收输入
//初始化计数器
int digt=0,alph=0,upper=0,lower=0,space=0,other=0;
printf( " Enter your values:\n ");
//使用getchar函数接受第一个字符
ch = getchar();
//进入循环,循环条件是 输入的字符不是 换行字符!
while(ch!='\n')
{
/* printf("works!");
ch = '\n';*/
if(ch>='0' && ch <= '9')
digt++;
else if(ch==' ')
space++;
else if(ch>='a'&&ch<='z')
lower++;
else if(ch>='A'&&ch<='Z')
upper++;
else
other++;
ch = getchar();
}
printf("digt = %d, alph =%d,space=%d,other :%d\n",digt,lower+upper,space,other);
}
网友评论