程序填空題(一)


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

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<<'\t'<<j<<'\t'<<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<<" 列\n";

}

 

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!\n";           // (3)

    else   cout<<"No!\n";

    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]!='\0')

{

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!='\0'     (2)p++     (3)*p='\0'

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM