posts - 12,  comments - 21,  trackbacks - 0

 

 

C/C++测试题

循环控制结构

一、选择题

1、若给定条件表达式(M)?(a++):(a--),则其中表达式M( C )

(A)(M==0)等价     (B)(M==1)等价

(C)(M!=0)等价      (D)(M!=1)等价

2、在C/C+语言中,结束while语句循环的条件为( A   )

(A)0    (B)1    (C) true    (D)0

C/C++语言中,结束do-while语句循环的条件为( A )

(A)0    (B)1    (C) true   (D)0

3、若k为整型,以下while循环体中的语句执行( B )

 k=2;

 while(k=0)

 {

     printf("%d",k);

     k--;printf("\n");

   }

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

4以下语句段中,不是无限循环的程序段是( D )C

(A) i=100;                              (B)for(;;);

    while (1)

    {

       i=i%100;i++;

       if(i>100)break;

       }

(C) k=32764;                            (D) s=32764;

     do{                                while((s++%2)||(s%2))s++;

         k++;k++;

       } while(k>0);                               

5C语言中用于结构化程序设计的3种基本结构是(  A )

(A)顺序结构、选择结构、循环结构      (B) if,switch,break

(C) for,while,do-while                   (D) if,for,continue

6、对于下面的程序段

    int t=0;

    while (t=l)

    {...}   

以下叙述正确的是( B   )

(A)循环控制表达式的值为0    (B)循环控制表达式的值为1

(C)循环控制表达式不合法      (D)以上说法都不对


7、在下列选项中,会构成死循环的是( B )

 (A) int i=100;          (B)for(;;);    (C) int k=10000;                  (D) int s=36;

    while(1)                          do {k++;}while(k>10000);           while(s)--s;

    {

       i=i%100+1;

       if(i==100)break;

    }

8、在下面给出的4个语句段中,能够正确表示以下的函数关系的是( A )

         -1    (x<0

    y=   0     (x=0)

         1     (x>0)

 (A)if(x!=0)       (B)y=0;          (C)if(x<0)y=-l;        (D)y=-1;

      if(x>0)y=l;       if(x>=0)         if(x!=0)y=1;         if(x!=0)

      else y=-l;          if(x)y=l;        else y=0;              if(x>0) y=l;

    else y=0;              else y=-l;                           else y=0;

二、读程序分析程序的运行结果

9、设int a=5, b=6, 表达式(++a==b--)?++a:--b的值是   7  

10、以下程序的输出为( B   )

    #include<stdio.h>

    void main( )

    {

      int i,j,x=0;

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

      {

        x++;

        for(j=0;j<=3;j++)

        {

          if(j%2) continue;

          x++;

         }

        x++;

      }

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

    }

    (A)x=4        (B)x=8          (C) x=6        (D) x=12

 11以下程序的输出为( B )

    #include <stdio.h>

    void main( )

    {

       int x=1,y=0,a=0,b=0;

       switch(x)

       {

          case 1:

             switch(y)

           {

               case 0:a++;break;

               case 1:b++;break;

            } //后面没有break,所以继续执行case 2

        case 2:

            a++;b++;break;

        case 3:

            a++;b++;

       }

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

    }

 (A)a=l,b=0    (B)a=2,b=1    (c)a=1,b=l    (D)a=2,b=2

 12、以下程序的输出为( B )

    #include <iostream.h>

    void main( )

    {

       int i,j,k=0,m=0;

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

       {

           for(j=0;j<3;j++)

           k++;

        k-=j; // 外部循环语句,j=3

        }

        m=i+j; //i=2,j=3

        cout<<"k="<<k<<"m="<<m;

    }

 (A)k=0,m=3  (B)k=0,m=5 (C)k=l,m=3  (D)k_l,m=:5

13、以下程序的输出结果为(   B )

    #include<stdio.h>

    void main( )

    {

       int k=0;char c='A';

       do{

          switch(c++)

          {

            case 'A':k++;break;

            case 'B':k--;

            case 'C':k+=2;break;

            case'D':k=k%2;continue;

            case 'E':k=k*10;break;

            default:k=k/3;

          }

          k++;

          }while(c<'G');

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

    }

 (A)k=3    (B)k=4    (C)k=2    (D)k=0

 14、以下程序的输出结果为( C )

    #include <stdio.h>

    void main( )

    {

        int i=0,j=0,a=6;

        if((++i>0)||(++j>0))a++;

        printf(“i=%d,j=%d,a=%d\n”,i,j,a);

    }

 (A)i=0,j=0,a=6    (B)i=l;j=1;a=7    (C)i=1,j=0,a=7    (D)i=0;j=1,a=7

 15、以下程序的输出结果为( A )

    void main( )

    {

        int x=1,a=0,b=0;

        switch(x)

        {

          case 0:b++;

          case 1:a++;

          case 2:a++;b++;

         }

         cout<<"a="<<a<<"b="<<b;

    }

 (A)a=2,b=1    (B)a=l,b=1    (C)a=1,b=0    (D)a=2,b=2

 16、以下程序的输出结果为( C )

    void main( )

    {

       int i=1,j=1,k=2;

       if((j++||k++)&&i++)

         cout<<i<<","<<j<<","<<k;

    }

 (A)1,l,2    (B)2,2,1    (C)2,2,2    (D)2,2,3

 三、读程序回答问题

 17、下面程序的输出是     -1  

    void main( )

    {

        int x=2;

        while(x--);

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

 

    }

18、下列程序运行后的输出结果是   33     

    #include "stdio.h"

    void main( )

    {

       int i,j,p,s;

       s=0;

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

       {

           p=1;

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

           p=p*j;

           s=s+p;

        }

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

    }

19、下列程序的运行结果是    4   

    #include "stdio.h"

    void main()

    {

        int s=0,k;

        for(k=7;k>=4;k--)

        {

           switch(k)

           {

             case 1:case 4:case 7:

                        s++;

                        break;

             case 2:case 3:case 6:

                        break;

             case 0:case 5:

                        s+=2;

                        break;

           }

        }

        printf("s=%d",s);

    }

20、下面程序的运行结果是__8__

    #include "stdio.h"

    void main()

    {

        int i=1,s=3;

        do{

             s+=i;

                   i++

             if(s%7==0)continue;

             else ++i;

           }while(s<15);

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

    }

    四、程序填空

21、下面程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请在程序的空白处填空。

   #include <stdio.h>

    void main()

    {

       float x,amax,amin;

       scanf("%f",&x);

       amax=x;

       amin=x;

       while (     x>=0   )

       {

          if(x>amax)amax=x;

          if(     x<amin    )amin=x;

          scanf("%f",&x);

        }

          }

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

    }

22、下面程序用09之间不同的3个数构成一个3位数,统计出共有多少种方法。请

    填空。

    #include "stdio.h"

    void main()

    {

         int i,j,k,count=0;

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

          { for(j=0;j<=9;j++)

              {if(     j==i )continue;

              else

                for(k=0;k<=9;k++)

                 if(   k!=i && k!=j)count++;

               }

          }

         printf("count %d",count);

    }

23、本程序统计输入字符串中的行数、字数和字符数。字不包括空格、制表及换行符的字符序列,输入‘#’时结束统计。ncnlnw分别为字符、行、字计数器。请填空。

    #include "stdio.h"

    void main()

    {

         int c,nc,nl,nw;

         nc=nl=nw=0;

         printf("Please Input String:");

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

         {

         ++nc;

         if(c==' '||c=='\n'||c=='\t')

                  nw=nc-1    ;

         if(c=='\n')

                   ++nl    ;

       }

         printf("nc=%d\tnl=%d\tnw=%d\n",nc,nl,nw);

       }

五、编写程序

24、输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C/C++语言 表达式:year%4==0&&year%100!=0||year%400==0。若表达式成立(即表达式值为1),则 year为闰年;否则,表达式不成立(即值为0),year为平年。

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main()

{

    int year,month,k;

    cout<<"输入年份和月份:";

    cin>>year>>month;

    //判断是否为闰年

    if(year%4==0&&year%100!=0||year%400==0)

    k=1;

    else

    k=0;

    switch(month)

    {

     case 1:

     case 3:

     case 5:

     case 7:

     case 8:

     case 10:

     case 12:cout<<"该月有31";break;

     case 4:

     case 6:

     case 9:

     case 11:cout<< "该月有30";break;

     case 2:

          {

              if(k==1)

              cout<< "该月有29";

              else

              cout<< "该月有28";

           }break;

       default:cout<<"error\n";

      }

    system("PAUSE");

    return EXIT_SUCCESS;

}


25、编写一个简单计算器程序,输入格式为:datal op data2。其中dataldata2是参 加运算的两个数,op为运算符,其取值只能是+-*/

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main()

{

    double data1,data2;

    char op;

    cout<<"输入数据和运算符:";

    cin>>data1>>op>>data2;

    switch(op)

    {

              case '+':cout<<data1+data2<<'\n';break;

              case '-':cout<<data1-data2<<'\n';break;

              case '*':cout<<data1*data2<<'\n';break;

              case '/':cout<<data1/data2<<'\n';break;

              default:"error\n";

    }

   

    system("PAUSE");

    return EXIT_SUCCESS;

}


26、求解爱因斯坦数学题。有一条长阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶,若每步跨7阶,最后正好一阶不剩。请问,这条阶梯共有多少阶?


#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main()

{

 

int i=7; //i为所设的阶梯数

while(!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)))

i++;

cout<<i<<'\n';

 

 

    system("PAUSE");

    return EXIT_SUCCESS;

}

 

posted on 2011-05-31 22:02 DoubleW 阅读(2106) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年6月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(3)

随笔档案(12)

文章档案(2)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 28570
  • 排名 - 661

最新随笔

最新评论

阅读排行榜

评论排行榜