zoukankan      html  css  js  c++  java
  • 程序填空题(一)

    将下面的程序补充完整,以完成指定的功能。

    1.输入10个整数,找出最大数。

        #include <iostream>

        using namespace std;

        int main() 

        {

               int  k,x,max;

               cin>>x;

               max=______;                 // (1)

               for (k=2;  k<=___ ; k++)  {    //  (2)

                    cin>>x;

                    if (_______)  max=x;      //  (3)

               }

               cout<<“Max=“<<max<<endl;

               return 0;    

        }

    2.猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子共摘了几个桃子?

    #include <iostream>

    using namespace std;

    int main()

    {

        int day,x1,x2;

       day=9;

       x2=1;

       while (day>0)

       {

         x1=2*(x2+1);

         _____________ ;        // (1)

         _____________ ;        // (2)

       }

       cout<<"Total="<<x1<<endl;

       return 0;

    }

    3.求符合下列条件的四位数中最大的一个数。条件为:它的千位数字与十位数字之和等于百位数字与个位数字之积,例如,3136,3+3=1*6 ,故3136是符合条件的一个四位数。

    #include <iostream>

    using namespace std;

    int  main()

    {

       int i,a,b,c,d;

       for ( i=9999; i>=1000; i--)

       {

          a= _____________;              // (1)

          b=(i-a*1000)/100;

          c=(i-a*1000-b*100)/10;

          d=i%10;

          if  ( _____________ )             // (2)

          { 

                 cout<<i<<endl;

                 _____________;             // (3)

          }

       }

    }

    4.求所有的水仙花数。所谓水仙花数是指一个三位数的各位数字的立方和等于该数本身。例如:13+53+33=153。

    #include <iostream>

    using namespace std;

    int  main()  

    {

        int  i,j,k;

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

          for (j=_____;j<=9;j++)                    // (2)

             for (k=_____;k<=9;k++)               // (3)

                if (i*i*i+j*j*j+k*k*k==i*100+_______________)       // (4)

                   cout<< i*i*i+j*j*j+k*k*k <<"  ";

         cout<<endl;

         return 0;        

    }

    5.求所有的水仙花数。所谓水仙花数是指一个三位数的各位数字的立方和等于该数本身。例如:13+53+33=153。

    #include <iostream>

    using namespace std;

    int main()

    {

        int i,x,y,z;

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

          {

                  x=i/100;

                  ____________;    // (1)

                  z=i%10;

                  if (____________)     // (2)

                         cout<<i<<endl;

        }

          return 0;

    }

    6.输出1000以内能被3整除且个位数为6的所有整数。

    #include <iostream>

    using namespace std;

    int main() 

    {

        int  i, num;

        for (i=0;_________; i++)               // (1)

        { 

            num=i*10+6;

            if (num %3!=0)  ____________;    // (2)

            cout<<num<<"  ";

        }

        cout<<endl;

        return 0;    

    }

    7.按从小到大的顺序输出用0至9之间的不同的数字组成的全部三位数(从102到987共648个)。

    #include <iostream.h>

    int main()

    {

        int i,j,k,cnt=0;

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

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

            if (_____________) continue;               // (1)

            else

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

                if (____________________)            // (2)

                {

                    cout<<_______________ <<"  ";  //  (3)

                    cnt++; 

                }

        cout<<endl<<cnt<<endl;

        return 0;

    }

    8.按从小到大的顺序输出用0至9之间的不同的数字组成的全部三位数(从102到987共648个)。

    #include <iostream>

    using namespace std;

    int main()

    {

        int i,a,b,c,cnt=0;

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

        {

               a=i/100;

               b=____________;                   //  (1)

               c=____________;                    //  (2)

               if (a==b || a==c || b==c)

                       ____________;               //  (3)

            cout<<i<<"  ";     

            cnt++; 

        }

        cout<<endl<<cnt<<endl;

        return 0;

    }

     

    9.将100元换成10元、5元和1元的组合,共有多少种组合方法

    #include <iostream>

    using namespace std;

    int main()

    {

           int i,j,k,count=0;         // i是10元张数,j是5元张数,k是1元张数

           for (i=0; ___________; i++)                // (1)

              for (j=0;  ___________ ; j++)          // (2)

             {

                        k= ___________ ;                // (3)

                        cout<<i<<' '<<j<<' '<<k<<endl;

                        count++;

            }

           cout<<count<<endl;

           return 0;

    }

     

    10.用1元人民币兑换成1分、2分、5分,共有多少种不同的兑换方法。

    #include <iostream>

    using namespace std;

    int  main()

    {  

         int five,two,count=0;

         for (five=0;five<=__________;five++)           //  (1)

           for (two=0; two<=__________;two++)       //  (2)

                  count++;

         cout<< "共有 " << count << " 种兑换方法" <<endl;

         return 0;

    }

    11.从键盘输入一个非负整数,将它反向显示出来。例如,输入1234,输出4321。

    #include <iostream>

    using namespace std;

    int  main() 

    {

    int number,digit;

    cin>>number;

    cout<< number <<" 的逆序数为 ";

    do  {

         digit=_________________________;             // (1)

         number=________________________;       // (2)

         cout<<digit;

    } while (______________________);                // (3)

    cout<<endl;

           return 0;

    }

    12.数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。例如,24的数根是6,39的数根是3。输入一个正整数,输出它的数根。

    #include <iostream.h>

    #include <math.h>

    int main()

    {

       int n,m,t;

       cin>>n;

       t=n;

       while (__________)           //  (1)

       {

                      m=0;

                      while (__________)             //  (2)

                      {

                          m=m+t%10;

                          t=t/10;

                      }

                      __________;                     //  (3)

       }

       cout<<t<<endl;

       return 0;

    }

    13.输出2至99之间的所有质数(质数是只能被1和它本身整除的正整数)。

    #include <iostream>

    #include<cmath>

    using namespace std;

    int  main()

    {

       int i,n,temp;

       for (n=2; ___________; n++) {           // (1)

           temp=sqrt(n); 

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

               if(n%i==0)  ______________;  // (2)

           if(i>temp) cout<<n<<" ";

       }

       cout<<endl;

       return 0;

    }

    14.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果为“37”。

    #include <iostream>

    using namespace std;

    int main()

    {

        int x;

        cout<<"请输入一个整数,若小于3则重输:";

        do cin>>x; while (___________);               // (1)

        int i=2;

        do {

             while (___________) {                  // (2)

                     cout<<i<<" ";

                     x/=i;

             }

            __________;                           // (3)

         } while(i<x);

         if (x!=1)   cout<<x;

         cout<<endl;

        return 0;

    }

    15.求1―1/3+1/5―1/7+1/9…的前100项的和。

    #include <iostream>

    using namespace std;

    int main()

       int  n,sign=1;

       double  s=0;

       for ( n=1;___________;n++)            // (1)

       {   

                s=s+_____________;            // (2)

                sign=___________;             // (3)

        }

        cout << “s=" << s << endl;

        return 0;

    }

     16.利用公式π/4=1-1/3+1/5-1/7+…求π 的近似值,最后一项的绝对值小于10-6 为止。

    #include <iostream>

    using namespace std;

    int main()

    {  

         long  int i;     

         double  pi,t;     

         int  s;

         pi=0;     t=1 ;     i=1;     s=_______;           // (1)

         while  ( t>1e-6)

         {  

            pi=pi+_________;                           // (2)

            i=__________;                             // (3)

            s=-s;

            t=1.0 / i;

        }

        pi=___________;                              // (4)

        cout << “PI=" << pi << endl;

        return 0;

    }

     17.程序利用公式e = 1 + 1/1! + 1/2! + 1/3! + … + 1/10! 求e的近似值。

    #include <iostream>

    using namespace std;

    int main()

    {

        int i,n=1;

        double e=1;

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

       {

             ___________;                       // (1)

             ___________;                        // (2)

       }

       cout<<e<<endl;

        return 0;

    }

    18.求一个二维整型数组中的最小值,并指明它是数组的第几行第几列的元素(约定:下标为[0][0]的元素是第1行第1列的元素)。

    #include <iostream>

    using namespace std;

    int main()

    {

        int a[3][4]={10,2,3,4,5,99,7,8,9,10,56,23},k,m,min,i,j;

        min=a[0][0];

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

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

            if (________________  )         // (1)

            {

                   ____________________  ;   // (2)     

                   m=i ; 

                   k=j;

             }

       cout<< "最小值="<<min<<" , 是第"<<m+1<<" 行第" <<k+1<<" 列 ";

    }

    19.有3*4的整数数组,求出最大的那个元素的值以及其所在的行列号。

    #include <iostream.h>

    int main()

    {  

        int  a[3][4]= {34,18,23,89,39,15,56,14,48,24,17,63};

        int   i, j , row, col, max;

        max=_____________;    row=0; col=0;             // (1)

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

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

                if  (____________________)              //  (2)

                 {  max=____________;  row=i;  col=j; }  // (3)

        cout<<"Max="<<max<<"  ";

        cout<<"Row="<<row<<"  ";

        cout<<"Col="<<col<<endl;

        return 0;

    }

    20.用数组构造Fibnacci序列的前20个数。

    #include <iostream>

    using namespace std;

    int main()

    int  i,fib[20]={1,1};

    for (i=_____;i<=19;i++)                      //  (1)

            fib[i]=_____+ ______;                  //  (2)、(3)

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

           cout<<fib[i]<<“  ";

    cout<<endl;

    return 0;

    }

    21.从键盘上输入若干个学生的成绩,统计计算出平均成绩(取整数),并输出低于平均分的学生成绩,用输入负数结束输入。

    #include <iostream>

    using namespace std;

    int  main( )

    {  

        int  score[1000],sum=0,n=0,ave,x,i;

       cout<<"Enter mark:";   cin>>x;

       while (x>0)

       {   

           sum=___________;               // (1)

           score[n]=__________;            // (2)

           n++;    __________;            // (3)

       }

       if  (n!=0)ave= ___________;       // (4)

       else   ave=0;

       cout<<"Average="<<ave<<endl;

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

          if  (__________________)  cout<<score[i]<<"  ";    // (5)

       cout<<endl;

       return 0;    

    }

    22.用冒泡排序方法将输入的n个整数按从小到大的顺序排列输出。

    #include <iostream>

    using namespace std;

    int  main()

     int a[10],i,j,temp,n=10;

        for (i=0;i<n;i++)   cin>>a[i];

        for (i=1;i<=__________;i++)                        // (1)

        {   for (j=0;j<=__________;j++)                    // (2)

               if (______________________)             // (3)

               {    temp=a[j];  a[j]=a[j+1];   a[j+1]=temp;   }

        }   

       for (i=0;i<n;i++)   cout << a[i] <<" ";

       cout <<endl;

       return 0;

    }

    23.从键盘输入一个字符串(设其最大长度为80个字符),判断其是否是回文。若是输出“Yes”,否则输出“No”。回文是指正向、反向的拼写都一样。例如:ABCBA、aaaa等是回文;china、ABC等不是回文。

    #include <iostream>

    using namespace std;

    int  main( )

    {

        char str[81];

        int i,j,n;

        cin>>str;

        n=strlen(str);

        for (________________;i<j;i++,j--)             // (1)

             if (________________)  break;          // (2)

        if (___________)   cout<<"Yes! ";           // (3)

        else   cout<<"No! ";

        return 0;

    }

     24.输出二维数组b的最小值。

    #include <iostream>

    using namespace std;

    int fun(int a[][4]);

    int main()

    {

        int b[3][4]={{1,3,-5,7},{2,4,-6,8},{10,20,-30,40}};

        cout<<fun(________)<<endl;                  // (1)

        return 0;

    }

    int fun(int a[][4])

    {  

        int i,j,tem;

        tem=a[0][0];

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

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

              if(___________________)  tem=a[i][j];   // (2)

        return(tem);

    }

    25.计算数组中各元素的平均值。

    #include <iostream>

    using namespace std;

    float average (int *p, int n);

    int  main()

    {

        int i,a[5]={2,4,6,8,10};

        float avg;

        avg=average(_______,5);              // (1)

        cout<<"平均值="<<avg<<endl;

        return 0;

    }

    float average (int *p, int n)

    {  

        int i;

        float sum=0.0;

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

             sum=sum+_____________ ;        // (2)

         return  (__________);               // (3)

    }   

     26.函数int hextodec(char c[])的功能是将字符串c中保存的十六进制整数转换为十进制整数。

    int hextodec(char c[])

    {

    int  n=0 , i ;

    _________________;                  // (1)

    while(c[i]!='')

    {

    if (c[i]>='0' && c[i]<='9')

           n=n*16+___________;        // (2)

    if (c[i]>='A' && c[i]<='F')

           n=n*16+___________;        //  (3)

    if (c[i]>='a' && c[i]<='f')

          n=n*16+___________;        //  (4)

            i++;

    }

    ______________;                   //  (5)

    }

     27.将从键盘上输入的十进制数(long型)以二到十六进制形式输出。

    #include <iostream>

    using namespace std;

    int  main( )

    {

        char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

        int  c[64],base,i;

        long   n;

        cout<<"Enter a number:";  cin>>n;

        cout<<"Enter new base:";  cin>>base;

        i=0;

        do   {

               c[i]=______________;           // (1)

               i++;

               n=_________________;          // (2)

        } while(n!=0);

        cout<<"Transmite new base:";

        for(--i;i>=0;--i)

            cout<<__________________;           // (3)

        cout<<endl;

        return 0;

    }

    28.从4个人中选2个人参加活动,一共有6种选法。从n个人中选m个人参加活动,一共有多少种选法?

    #include <iostream>

    using namespace std;

    int f(int n, int m)

    {

        if(m>n)   return 0;

        if(m==0)  ___________;                      // (1)

        return  f(____________) + f(___________);      // (2)、 (3)

    }

    int main()

    {

        int m, n;

        cin>>n>>m;

        cout<<f(n, m)<<endl;

        return 0;

    }

    29.删除字符串s中指定的字符ch。编程实现该函数的定义,使得程序运行后,输出:Iamaboy!

    #include <iostream>

    using namespace std;

    void fun(char *s,char ch)

    {

       char *p=s;

       while (__________)                 // (1)

       {

          if (*s!=ch)

           {  *p=*s;  __________;  }       // (2)

          s++;

       }

       __________;                       // (3)

    }

    int main()

    {

        char str[]="I  am  a  boy!";

        func(str,' ');

        cout<<str<<endl;

          return 0;

    }

     30.函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。例如,函数fun(2016,10,1)的返回值为275,表示2016年10月1日是该年的第275天。请填空将函数补充完整。

    int fun(int year,int month,int day)

    {

    int table[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

    int s=0,i;

    for (i=1;i<__________; i++)               // (1)

              s=s+__________;                   // (2)

    s=s+day;

    if ((________________________________________) && month>2)        // (3)

          s=s+1;

    return s;

    }

     31.函数int  fun(int x)的功能是求正整数x的逆序数。例如,函数fun(1234)的返回值为4321。

    int fun(int x)

    {

    int sum = 0;

    while (x != 0)

    {

            ______________________;              // (1)

           ______________________;              // (2)

    }

    _____________________________;                 // (3)

    }

    32.把一个整数的每个数位都平方后求和,又得到一个整数,我们称这个整数为位平方和。对新得到的整数仍然可以继续这一运算过程。比如,给定整数为4,则一系列的运算结果为:16,37,58,89,....。已知一个整数x,求第n步的运算结果。

    #include <iostream.h>

    int digitSum(int x)

    {

           int s=0,d;

           while (__________________)             // (1)

           {   __________________;                   // (2)

                  s=s+d*d;

                  x=x/10;

           }

           __________________;                 // (3)

    }

    int main()

    {

       int x,n,i;

       cin>>x>>n;

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

              x=digitSum(x);

       cout<<x<<endl;

       return 0;

    }

    参考答案:

    1.(1)x             (2)10      (3)x>max
    2.(1)x2=x1     (2)day—(或 day=day-1)
    3.(1)i/1000    (2)a+c==b*d       (3)break
    4.(1)1     (2)0    (3)0    (4)j*10+k (或k*10+j)
    5.(1)y=i/10%10    (2)x*x*x+y*y*y+z*z*z==i
    6.(1)i<100            (2) continue
    7.(1)j==i       (2)k!=i && k!=j       (3)100*i+10*j+k
    8.(1)i/10%10    (2)i%10             (3)continue
    9.(1)i<=10        (2) j<=(100-10*i)/5    (3)100-10*i-5*j
    10.(1)20      (2)(100-five*5)/2
    11.(1)number%10     (2)number/10      (3)number>0
    12.(1)t>=10    (2)t!=0 或 t       (3)t=m
    13.(1)n<100      (2)break
    14.(1)x<3      (2)x%i==0     (3)i++
    15.(1)n<=100         (2)sign*1.0/(2*n-1)      (3)-sign
    16.(1)1     (2)s*t     (3)i+2     (4)pi*4
    17.(1)n=n*i     (2)e=e+1.0/n
    18.(1)a[i][j]<min     (2)min=a[i][j]
    19.(1)a[0][0]     (2)a[i][j]>max     (3)a[i][j]

    20.(1)2      (2)fib[i-1]     (3)fib[i-2]

    21.(1)sum+x       (2)x           (3)cin>>x       (4)sum/n     (5)score[i]<ave
    22.(1)n-1     (2)n-1-i     (3)a[j]>a[j+1]
    23.(1)i=0,j=n-1     (2)str[i]!=str[j]     (3)i>=j
    24.(1)b     (2)a[i][j]<tem
    25.(1)a     (2)*(p+i) (或 p[i])     (3)sum/n
    26.(1)i=0     (2)c[i]-48或c[i]-'0'     (3)c[i]-55或c[i]-‘A’+10    (4)c[i]-87 或c[i]-‘a’+10     (5)return n

    27.(1)n%base     (2)n/base     (3)b[c[i]]

    28.(1)return 1     (2)n-1,m-1     (3)n-1,m

    29.(1)*s!=''     (2)p++     (3)*p=''

    30.(1)month     (2)table[i]     (3)year%4==0 && year%100!=0 || year%400==0
    31.(1)sum = sum * 10 + (x% 10)     (2)x =x / 10     (3)return sum

    32.(1)x!=0    (2)d=x%10     (3)return s

  • 相关阅读:
    NPS平台,WCF学习
    QQ机器人Java版
    C#Linq To Entry
    C# AD域操作
    中国象棋软件制作感想
    WPF DataGrid 绑定BitmapSource
    DNN Tips
    Tools tips
    TRANSACTSQL Tips
    【阶段试题分析】阶段一试题总结
  • 原文地址:https://www.cnblogs.com/cs-whut/p/10989899.html
Copyright © 2011-2022 走看看