您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第五章 循环结构程序设计 > 【5.4 思考与练习】

5.4 思考与练习

 

思考与练习

1选择题

1)语句while(!E);中的条件!E等价于     

AE==0                            BE!=1                      CE!=0               DE

2)以下for循环语句       

for(x=0,y=0;(y!=123)&&(x<4);x++);

A.是无限循环                                               B.循环次数不定       

C.执行4                                                   D.执行3

3C语言中,       

A.不能使用do...while语句构成的循环

Bdo...while语句构成的循环必须用break语句才能退出

C对于do...while语句构成的循环,当while语句中的表达式值非0时,结束循环

D对于do...while语句构成的循环,当while语句中的表达式值为0时,结束循环

4)以下程序的输出结果是         

#include <stdio.h>

main()

{

    int i;

    for (i=1;i<=5;i++)

    {

        if(i%2) printf("*");

        else continue;

        printf("#");

    }

    printf("$\n");

}

A*#*#*#$                 B#*#*#*$                 C*#*#$              D#*#*$

5)有以下程序:

#include <stdio.h>

main()

{

    int c;

    while((c=getchar())!='\n')

    {

        switch(c-'2')

        {

            case 0:

            case 1: putchar(c+4);

            case 2: putchar(c+4); break;

            case 3: putchar(c+3);

            case 4: putchar(c+2); break;

        }

    }

    printf("\n");

}

从第一列开始输入2743<CR>,则程序的输出结果是     

A66877                     B66866                     C6677877          D6688766

6)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int i=1,j=3;

    printf("%d,",i++);

    {

        int i=0;

        i+=j*2;

        printf("%d,%d,",i,j);

    }

    printf("%d,%d\n",i,j);

}

A1,6,3,1,3                 B1,6,3,2,3                 C1,6,3,6,3          D1,7,3,2,3

7)以下程序片段的输出结果是      

int x=23;

do

{

    printf("%2d",x--);

} while(!x);

A.打印出321                                                B.打印出23

C.不打印任何内容                                        D.陷入死循环

8)若xint型变量,以下程序片段的输出结果是     

for(x=3;x<6;x++)printf((x%2)?("**%d"):("##%d\n"),x);

A**3                        B##3                        C##3                 D**3##4

       ##4                 **4                  **4##5           **5

       **5                 ##5

9)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a,b;

    for(a=1,b=1;a<=100;a++)

    {

        if(b>=20) break;

        if(b%3==1)

        {

            b+=3;

            continue;

        }

        b-=5;

    }

    printf("%d\n",a);

}

A7                            B8                            C9                     D10

10)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int num=0;

    while(num<=2)

    {

        num++;

        printf("%d\n",num);

    }

}

A1                          B1                            C1                     D1

             2                              2                                2

             3                              3

             4

11)若执行以下程序时,从键盘上输入3.6 2.4<CR>,则输出结果是     

#include <stdio.h>

#include <math.h>

main()

{

    float x,y,z;

    scanf("%f%f",&x,&y);

    z=x/y;

    while(1)

    {

        if(fabs(z)>1.0)

        { x=y; y=z; z=x/y; }

        else break;

    }

    printf("%f\n",y);

}

A1.500000                     B1.600000                C2.000000         D2.400000

12)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int x=3;

    do

    {

        printf("%d\n",x-=2);

    }while(!(--x));

}

A1                                                             B3

   -2                                                               0

C1                                                             D.程序陷入死循环,无输出结果

13)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int x=023;

    printf(%d\n",--x);

}

A17                        B18                          C23                   D24

14)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int y=9;

    for(;y>0;y--)

    {

        if(y%3==0)

        {

            printf("%d",--y);

            continue;

        }

    }

}

A741                     B852                        C963                 D875421

15)执行以下程序后,a的值为     

#include <stdio.h>

main()

{

    int a,b;

    for(a=1,b=1;a<=100;a++)

    {

        if(b>=20) break;

        if(b%3==1)

        {

            b+=3;

            continue;

        }

        b-=5;

    }

printf ("%d",a);

}

A7                         B8                            C9                     D10

16)以下程序片段的输出结果是     

int x=3;

do

{

    printf("%3d",x-=2);

} while(!(--x));

A1                          B3 0                         C1-2                 D.死循环

17)定义变量为int n=10;,则以下循环语句的输出结果是     

while(n>7)

{

    n--; 

    printf("%d\n",n);

}

A10                        B9                            C10                   D9

         9                  8                     9               8

         8                  7                     8               7

         7                  6

18)若ij已定义为int型变量,则以下程序片段中,内循环体的执行次数是     

for(i=5;i;i--)

    for(j=0;j<4;j++) {…}

A20                        B25                          C24                   D30

19)设xy均为int型变量,则执行以下循环语句后,y值为     

for(y=1,x=1;y<=50;y++)

{

    if(x>=10) break;

    if(x%2==1)

    {

        x+=5;

        continue;

    }

    x-=3;

}

A2                          B4                            C6                     D8

20)设ab均为int型变量,则执行以下程序片段后,b的值为     

a=1; b=10;

do

{

    b-=a;

    a++;

} while(b--<0);

A9                          B-2                          C-1                   D8

21)设jint型变量,则以下for循环语句的执行结果是     

for(j=10;j>3;j--)

{

    if(j%3) j--;

    --j;

    --j;

    printf("%d ",j);

}

A6 3                       B7 4                         C6 2                  D7 3

22)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int i,j;

    for(j=10;j<11;j++)

        for(i=9;i<=j-1;i++)

            printf("%d",j);

}

A11                        B10                          C9                     D10 11

23)在执行以下程序时,如果从键盘上输入ABCdef<CR>,则输出结果为     

#include <stdio.h>

main()

{

    char ch;

    while((ch=getchar())!='\n')

    {

        if(ch>='A' && ch<='Z') ch=ch+32;

        else if(ch>='a' && ch<='z') ch=ch-32;

        printf("%c",ch);

    }

    printf("\n");

}

AABCdef                BabcDEF                  Cabc                  DDEF

24)执行以下程序片段时,     

x=-1;

do

{

    x=x*x;

} while(!x);

A.循环体将执行一次                                  B.循环体将执行两次

C.循环体将执行无限次                               D.系统将提示有语法错误

25)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int y=10;

    do

    {

        y--;

    } while(--y);

    printf("%d\n",y--);

}

A-1                        B1                            C8                     D0

26)以下选项中,没有构成死循环的程序片段是     

Aint i=100                                               Bfor(;;);

          while(1)

          {

             i=i%100+1;

             if(i>100)break;

          }

Cint k=1000;                                           Dint s=36;

          do                                            while(s);

          {                                             --s;

             ++k;

          } while(k>=10000);        

27)执行语句for(i=l:i++<4:);后,变量i的值是     

A3                          B4                            C5                     D.不定

28)运行以下程序后,如果从键盘上输入china#<CR>,则输出结果为     

#include <stdio.h>

main()

{

    int v1=0,v2=0;

    char ch;

    while((ch=getchar())!='#')

        switch(ch)

        {

            case 'a':

            case 'h':

            default: v1++;

            case '0': v2++;

        }

    printf("%d,%d\n",v1,v2);

}

A2,0                       B5,0                         C5,5                  D2,5

29)执行以下程序时,如果从键盘上输入65 14<CR>,则输出结果为     

#include <stdio.h>

main()

{

    int m,n;

    printf("Enter m,n;");

    scanf("%d%d",&m,&n);

    while(m!=n)

    {

        while(m>n) m-=n;

        while(n>m) n-=m;

    }

    printf("m=%d\n",m);

}

Am=3                     Bm=2                       Cm=1                Dm=1

30)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int x=10,y=10,I

    for(i=0; x>8; y=++i)

        printf("%d,%d ",x--,y);

}

A10 1 9 2                B9 8 7 6                   C10 9 9 0           D10 10 9 1

31)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int n=4

    while(n--)

    printf("%d ",--n);

}

A2 0                       B3 1                         C3 2 1               D2 1 0

32)以下程序的输出结果是     

#include <stdio.h>

main( )

{

    int i;

    for(i=1;i<6;i++)

    {

        if(i%2)

        {

            printf("#");

            continue;

        }

        printf("*");

    }

    printf("\n");

}

A#*#*#                   B#####                     C*****              D*#*#*

33)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int i;

    for(i='A';i<'I';i++,i++)

        printf("%c",i+32);

    printf("\n");

}

A.编译不通过,无输出                               Baceg

Cacegi                                                       Dabcdefghi

34)以下程序中,while循环的循环次数是     

#include <stdio.h>

main()

{

    int i=0;

    while(i<10)

    {

        if(i<1) continue;

        if(i==5) break;

        i++;

    }

   

}

A1                                                            B10

C6                                                             D.死循环,不能确定次数

35)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a=0,i;

    for(i=1;i<5;i++)

    {

        switch(i)

        {

            case 0:

            case 3: a+=2;

            case 1:

            case 2: a+=3;

            default: a+=5;

        }

    }

    printf("%d\n",a);

}

A31                        B13                          C10                   D20

36)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int i=0,a=0;

    while(i<20)

    {

        for(;;)

        {

            if((i%10)==0) break;

            else i--;

        }

        i+=11;

        a+=i;

    }

    printf("%d\n",a);

}

A21                        B32                          C33                   D11

37)以下程序的功能是:按顺序读入10名学生的4门课程的成绩,计算出每位学生的平均分并输出。程序如下:

#include <stdio.h>

main()

{

    int n,k;

    float score,sum,ave;

    sum=0.0;

    for(n=1;n<=10;n++)

    {

        for(k=1;k<=4;k++)

        {

            scanf("%f",&score);

            sum+=score;

        }

        ave=sum/4.0;

        printf("NO%d:%f\n",n,ave);

  }

}

以上程序运行后,结果不正确。在调试的过程中,发现有一条语句在程序中的位置不正确,这条语句是     

Asum=0.0;                                                        Bsum+=score;

Cave=sum/4.0;                                            Dprintf("NO%d:%f\n",n,ave);

38)有以下程序片段:

int n=0,p;

do

{

    scanf("%d",&p);

    n++;

} while(p!=12345 &&n<3);

此处do...while循环的结束条件是     

AP的值不等于12345,并且n的值小于3

BP的值等于12345,并且n的值大于等于3

CP的值不等于12345,或者n的值小于3

DP的值等于12345,或者n的值大于等于3

2填空题

1)以下程序片段的输出结果是     

int i=0,sum=1;

do

{

    sum+=i++;

} while(i<6);

printf("%d\n",sum);

2)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int i=10,j=0;

    do

    {

        j=j+i;

        i--;

    }while(i>2);

    printf("%d\n",j);

}

3)以下程序运行时,如果从键盘上输入1298;,则输出结果为     

#include <stdio.h>

main()

{

    int n1,n2;

    scanf("%d",&n2);

    while(n2!=0)

    {

        n1=n2%10;

        n2=n2/10;

        printf("%d",n1);

    }

}

4)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int s,i;

    for(s=0,i=1;i<3;i++,s+=i);

        printf("%d\n",s);

}

5)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int x=15;

    while(x>10 && x<50)

    {

        x++;

        if(x/3) { x++; break; }

        else continue;

    }

    printf("%d\n",x);

}

6)以下程序运行时,如果从键盘上输入Y?N?<CR>,则输出结果为     

#include <stdio.h>

main()

{

    char c;

    while((c=getchar( )) != '?') putchar(--c);

}

7)以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

#include <stdio.h>

main()

{

    float x,amax,amin;

    scanf("%f",&x);

    amax=x;

    amin=x;

    while(      )

    {

        if(x>amax) amax=x;

        if(      )  amin=x;

        scanf("%f",&x);

    }

    printf("\namax=%f\namin=%f\n",amax,amin);

}

8)以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数的方式结束输入。

#include <stdio.h>

main()

{

    float x[1000],sum=0.0,ave,a;

    int n=0,i;

    printf("Enter mark\n"); scanf("%f",&a);

    while(a>=0.0 && n<1000)

    {

        sum+      ;

        x[n]=      ;

        n++;

        scanf("%f",&a);

    }

    ave=      ;

    printf("Output:\n");

    printf("ave=%f\n",ave);

    for(i=0;i<n;i++)

        if(      ) printf("%f\n",x[i]);

}

3上机操作题

1)编写一个程序,求两个整数的最大公约数和最小公倍数。

2)编写一个程序,求1+2+3+99+100的值。

3)编写一个程序,求1+3+5++97+99的值。

4)编写一个程序,判断m是否为素数。

5)编写一个程序,求大于100的且紧靠10010个素数。

6)编写一个程序,输出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。

7)编写一个程序,求 的值。

8)编写一个程序,求的值。

9)编写一个程序,求的值。

10)编写一个程序,求1!+2!+3!++20!的值。