循环结构,复合的赋值运算符
8.
代码语言:javascript复制#include <stdio.h>
main( )
{
int sum=10,n=1;
while(n<3)
{
sum=sum-n;
n ;
}
printf(“%d,%d”,n,sum);
}
运行结果为:3,7
当循环条件n<3成立的时候,执行循环体{sum=sum-n; n ; }中的语句。
循环初值sum为10,n为1;
循环条件n<3成立
第1次循环:执行sum=sum-n=10-1=9;
执行n ,即将n中的值加1,执行后n为2;
此时n中的值为2,sum中的值为9,循环条件n<3成立,继续执行循环
第2次循环:执行sum=sum-n=9-2=7;
执行n ,即将n中的值加1,执行后n为3;
输出此时n,sum中的值,即为3,7。需要注意,在printf(“%d,%d”,n,sum); 中要求输出的数据彼此间用逗号间隔,因此结果的两个数据间一定要有逗号
9.
代码语言:javascript复制#include <stdio.h>
main()
{
int num,c;
scanf("%d",&num);
do {
c=num;
printf("%d",c);
}while( (num/=10)>0 );
printf("n");
}
从键盘输入23,则运行结果为:32
do{ }while(表达式);
先无条件执行循环体,再判断循环条件。注意while(表达式)后有分号
定义整型变量num,c;
为num赋一个整型值;
执行{c=num; printf("%d",c); }直到循环条件(num/=10)>0不成立;
输出换行
已知为num赋值23
第1次执行循环体
执行c=num=23=3;
执行printf("%d",c);输出3
判断循环条件 num/=10等价于num=num/10; 因此num=23/10=2, 2大于0,因此循环条件(num/=10)>0成立,继续执行循环体。执行完第1次循环时,num为2,c为3
第2次执行循环体
执行c=2=2;
执行printf("%d",c);再输出2
判断循环条件num=2/10=0,0等于0,因此循环条件(num/=10)>0不成立。结束循环
10.
代码语言:javascript复制#include <stdio.h>
main()
{
int s=0,a=5,n;
scanf("%d",&n);
do{
s =1;
a=a-2;
}while(a!=n);
printf("%d,%dn",s,a);
}
若输入的值1,运行结果为:2,1
执行{ s =1; a=a-2; }直到循环条件a!=n不成立;
已知为n赋值1,s为0,a为5
第1次执行循环体
执行s =1;等价于s=s 1=0 1
执行a=a-2; a=5-2=3
判断循环条件,3不等于1,因此循环条件a!=n成立,继续执行循环体。
执行完第1次循环时,s为1,a为3
第2次执行循环体
执行s =1;等价于s=s 1=1 1=2
执行a=a-2; a=3-2=1
判断循环条件,1等于1,因此循环条件a!=n不成立,结束循环。
执行完第2次循环时,s为2,a为1
输出此时s,a中的值,结果为2,1