加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

第三次随堂测试:新增三题

(2009-04-08 11:28:34)
标签:

for

表达式

stdio.h

if

杂谈

分类: C语言程序设计

【题3.1】若i为整型变量,则以下循环执行次数是    

for(i=2;i==0;) printf(“%d”,i--);

A)无限次       B)0次      C)1次      D)2次

【题3.2】下面有关for循环的正确描述是    

A)for循环只能用于循环次数已经确定的情况

B)for循环是先执行循环体语句,后判断表达式

C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

【题3.3】以下for循环的执行次数是    

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

A)是无限循环       B)循环次数不定         C)执行4次         D)执行3次

【题3.4】执行语句for(i=1;i++<4;);后变量i的值是    

A)3         B)4              C)5              D)不定

【题3.5】有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。

       #include <stdio.h>

       main()

       {

                     int i;

                     for(i=100;i<200;i++)

                            if((i-2)%4= =0)

                                   if(!((i-3)%7))

                                          if(【1】)

                                                 printf(“%d”,i);

       }

    A)i%9=5      B)i%9!=5     C)(i-5)%9!=0      D)i%9= =5

【题3.6】以下程序运行后,a和b的值分别为:

       #include <stdio.h>

       main()

              int a,b;

                     a=10%3,b=5;

                     printf(“%%%d,%%%%d”, a , b);

       }

       A)%%1,%%%5       B)%1,%%d       C)%%3,%%5   D)1,5

分析:两个%%在一起时,合并为一个%输出。

【题3.7】下面程序的运行结果是    

       #include <stdio.h>

       main()

       {

                     int i;

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

                            switch(i%5)

                            {

                                   case 0: printf(“*”); break;

                                   case 1: printf(“#”); break;

                                   default: printf(“\n”);

                                   case 2: printf(“&”);

                            }

       }

                     A)#&&&*    B)#&           C)#       D)#&

                                                 &

                                    &*                      *

                                                    &

                                                    *

【题3.8】下面程序的运行结果是    

       #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);

       }

   A)7              B)8              C)9              D)10

【题3.9】下面程序段的运行结果是    

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

【题3.10】以下正确的描述是(     )。

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循坏体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出,只能使用goto语句

【题3.11】分析以下程序的输出结果是      

#include<stdio.h>

main()

{

int a,y;

a=10;y=0;

do

{a+=2;y+=a;

if(y>50)break;

}

while(a=14);

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

分析:因为do {} while();是先执行后判断!上题中while条件中是a=14始终为真,而且每循环一次后就赋值为14,直到y>50时才跳出循环! 本题的关键点在于do...while语句不是靠while(a=14)条件跳出循环的,而是靠break语句跳出,因为while(a=14)是赋值语句而不是判断语句,它是一个永真式。

【题3.12】对for(表达式1;;表达式3)可理解为    

            A)for(表达式1;0;表达式3)           

            B)for(表达式1;1;表达式3)

            C)for(表达式1; 表达式1;表达式3)

            D)for(表达式1; 表达式3;表达式3)

 

参考答案:第1-10题:BDCCD  BBBDB

          第11题:a=16,y=60

          第12题:B

 

【题3.13】执行以下程序后,输出结果是多少?

main()
 {int j,k,s;
   for(k=2;k<6;k++,k++)
    {s=1;
      for(j=k;j<6;j++) s+=j;
     }
  printf("%d",s);
}

答案:10

分析:

当k=2,k<6时,执行语句{s=1;for(j=k;j<6;j++) s+=j;},因为后面的for语句总是执行s=1,可以不管s的值;

当k=4,k<6时,执行语句{s=1;for(j=k;j<6;j++) s+=j;},得出s=4,j=5;条件成立,继续执行s+=j;那么s=5+5=10;当j=6时,条件不成立,结束本次循环;

当k=6时,条件不成立,整个循环结束。

所以s的值为10。

【题3.14】执行以下程序后,结果是多少?

main()
 {int j,i,m=0;
  for(i=1;i<=15;i+=4)
   for(j=3;j<=19;j+=4) m++;
    printf("%d",m);
}

答案:20

分析:

for的嵌套是最内层的变化次数最多。用变量跟踪法分析以上程序:

     m

第一次循环如下:

     1

     2

   11   3

   15   4

   19   5

第二次循环如下:

     6

     7

   11   8

   15   9

   19   10

第三次循环如下:

     11

     12

   11   13

  15   14

   19   15

第四次循环如下:

13      16

13      17

13    11   18

13    15   19

13    19   20

也就是说,第一个for循环了4次,每循环一次里面的第二个for就循环5次,共循环了20次,m的初值为0,那输出m的值就为20了。

【题3.15】分析以下程序的运行结果。

main()
 {int i,j,k;
  for(i=0;i<2;i++)
   for(j=0;j<2;j++)
    for(k=0;k<2;k++)
  printf("%d %d %d\n",i,j,k);
 }

答案:

   0

   1

   0

   1

   0

   1

   0

   1

分析:

   k

   第一个for第一次循环,第二个for第一次循环,第三个for第一次循环

   第一个for第一次循环,第二个for第一次循环,第三个for第二次循环

   第一个for第一次循环,第二个for第二次循环,第三个for第一次循环

   第一个for第一次循环,第二个for第二次循环,第三个for第二次循环

   第一个for第二次循环,第二个for第一次循环,第三个for第一次循环

   第一个for第二次循环,第二个for第一次循环,第三个for第二次循环

   第一个for第二次循环,第二个for第二次循环,第三个for第一次循环

   第一个for第二次循环,第二个for第二次循环,第三个for第二次循环

 

以上程序等同于以下写法,这样会容易看些:

 main()
 {int i,j,k;
   {for(i=0;i<2;i++)
      {for(j=0;j<2;j++)
         {for(k=0;k<2;k++)
            {printf("%d %d %d\n",i,j,k);}

          }

       }

    }
 }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有