2019二级C题库及解析(8)

2020-06-04 17:39:16 浏览数 (1)

循环结构,复合的赋值运算符

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

sum

0 人点赞