一套C++練習題(含答案)供大家參考!作者:yaozheng

來源:互聯網
上載者:User
今天幫別人做的,有些題目比較有代表性,在此連答案全部貼出來,給需要的朋友做參考。全部程式在VISUAL C++ 6.0環境下均調試通過。如果您對其中某個程式有更好的解答方法,歡迎跟貼交流。因為時間有限,沒有寫注釋,如果您哪段程式不理解,也可以跟貼交流。

一、    選擇題:
1、C++來源程式檔案的副檔名是:A
A) .CPP        B) .C        C) .DLL         D) .EXE

2、將小寫字母n賦值給字元變數one_char,正確的操作是:C
A) one_char = ‘/n’;      B) one_char = “n”;
C) one_char = 110;      D) one_char = ‘N’;

3、整型變數i定義後賦初值的結果是:B
   int i=2.8*6;
A) 12     B) 16     C) 17    D) 18

4、下列運算式的值為false的是:C
A) 1<3 && 5<7      B) !(2>4)     C) 3&0&&1    D) !(5<8)||(2<8)

5、設int a=10, b=11, c=12;運算式(a+b)<c&&b==c的值是:B
A) 2       B) 0       C) –2      D) 1

6、下列程式執行完後,x的值是:C
  int x=0;
  for (int k=0;k<90; k++)
if (k)  x++;
A) 0         B) 30      C) 89     D) 90

7、下列程式段迴圈次數是:A
  int x = -10;
  while (++x)  cout<<x<<endl;
A) 9        B) 10      C) 11         D) 無限

8、表示“大於10而小於20的數“,正確的是:D
A) 10<x<20   B) x>10||x<20   C) x>10&x<20     D) !(x<=10||x>=20)

9、若整型變數x=2,則運算式x<<2的結果是:D
A) 2        B) 4     C) 6      D) 8

10、設a=1, b=2,則(a++)+b與a+++b這兩個運算式的值分別為:A
A) 3, 3    B) 3, 4     C) 4, 3    D) 4,4

二、程式填空題。
1、下列程式計算1000以內能被3整除的自然數之和。
#include <iostream.h>
void main( )
{   int x=1, sum;
sum=0_______;
while (true)
{   if (x>1000)  break;
    if (x%3==0) sum+=x;
    x++;
}
cout<<sum<<endl;
}
三、假定輸入10個整數:32,64,53,87,54,32,98,56,98,83。下列程式的輸出結果是?
#include <iostream.h>
void main( )
{   int a,b,c,x;
   a=b=c=0;
   for (int k=0; k<10; k++)
   {   cin>>x;
switch(x%3)
{   case 0:  a+=x; break;
    case 1:  b+=x; break;
    case 2:  c+=x; break;
}
   }
cout<<a<<”,”<<b<<”,”<<c<<endl;
}
結果:
141,64,452

四、寫出下列程式運行結果。
#include <iostream.h>
void main( )
{   int j,k;
for (j=5; j>0; j--)
{  for (k=j; k>0; k--)
     cout<<”*”;
  cout<<endl;
}
}
結果:
*****
****
***
**
*

五、寫出下列程式的運行結果。
#include <iostream.h>
#include <iomanip.h>
void main()
{   
cout<<”x_width=”<<cout.width()<<endl;
cout<<”x_fill=”<<cout.fill()<<endl;
cout<<”x_precision=”<<cout.precision()<<endl;
cout<<123<<” ”<<123.45678<<endl;
cout<<”***x_width=10,x_fill=&,x_precision=8***”<<endl;
cout.width(10);
cout.fill(‘&’);
cout.precision(8);
cout<<123<<” “<<123.45678<<endl;
cout.setf(ios::left);
cout<<123<<” “<<123.45678<<endl;
cout.width(10);
cout<<123<<” “<<123.45678<<endl;
cout<<”x_width=”<<cout.width()<<endl;
cout<<”x_fill=”<<cout.fill()<<endl;
cout<<”x_precision=”<<cout.precision()<<endl;
}
結果:
x_width=0
x_fill=
x_precision=6
123 123.457
***x_width=10,x_fill=&,x_pre
&&&&&&&123 123.45678
123 123.45678
123&&&&&&& 123.45678
x_width=0
x_fill=&
x_precision=8

六、程式題。
1、    編寫程式,求解方程ax2+bx+c=0的根。
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
    int a,b,c;
    float x1,x2,z;
    cin>>a>>b>>c;
    z=b*b-4*a*c;
    if(z>0)
    {
        x1=((-b)+sqrt(z))/(2*a);
        x2=((-b)-sqrt(z))/(2*a);
        cout<<"The result: x1="<<x1<<"  x2="<<x2<<endl;
    }
    else
        if(z==0)
        {
            x1=-b/(2*a);
            cout<<"The result: x1="<<x1<<endl;
        }
        else
            cout<<"no result";
}

2、    編寫程式輸出所有的水仙花數。所謂水仙花數是指一個三位元,其各位元的立方和等於該數。例如:153=13+53+33。
#include <iostream>
using namespace std;
void main()
{
    int a,b,c;
    for(int i=100;i<=999;i++)
    {
        a=i/100;
        b=i%100/10;
        c=i%10;
        if(a*a*a+b*b*b+c*c*c==i)
            cout<<i<<endl;
    }
}

3、    編寫程式,計算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
#include <iostream>
using namespace std;
void main()
{
    int n,s,sum=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        s=0;
        for(int j=1;j<=i;j++)
            s+=j;
        sum+=s;
    }
    cout<<sum<<endl;
}

4、某百貨公司為了促銷,採用購物打折的辦法。
(1)    在1000元以上者,按九五折優惠;
(2)    在2000元以上者,按九折優惠;
(3)    在3000元以上者,按八五折優惠;
(4)    在5000元以上者,按八折優惠。
編寫程式,輸入購物款數,計算並輸出優惠價。(要求用switch語句編寫)
#include <iostream>
using namespace std;
void main()
{
    int cost;
    double price,d;
    cin>>cost;
    if(cost>5000)
        d=0.8;
    switch(cost/1000)
    {
    case 0:d=1.0;break;
    case 1:d=0.95;break;
    case 2:d=0.9;break;
    case 3:case 4:d=0.85;break;
    }
    price=cost*d;
    cout<<price<<endl;
}

4、    將一張一元紙幣兌換成一分、二分和五分的硬幣,假定每種至少一枚,計算共有多少種兌換法並列印出各種兌換法。
#include <iostream>
using namespace std;
void main()
{
    int a,b,c,count=0;
    for(a=1;a<100;a++)
        for(b=1;b<100;b++)
            for(c=1;c<100;c++)
                if(c*5+b*2+a==100)
                {
                    count++;
                    cout<<"1分:"<<a<<",2分:"<<b<<",5分:"<<c<<endl;
                }
    cout<<"Counts:"<<count<<endl;
}

6、“同構數”是指這樣的整數:它恰好出現在其平方數的右端。如:376*376=141376。請找出10000以內的全部“同構數”。
#include <iostream>
using namespace std;
void main()
{
    for(int i=1;i<10000;i++)
    {
    if(i<10&&i==i*i%10)
        cout<<i<<endl;
    else
        if(i<100&&i==i*i%100)
            cout<<i<<endl;
        else
            if(i<1000&&i==i*i%1000)
                cout<<i<<endl;
            else
                if(i==i*i%10000)
                    cout<<i<<endl;
    }
}


本人擇偶標準:
select top 100 ppmm from girl where age between 20 and 24 AND height between 155 and 165 AND area = 'shanghai' AND wedlock = null AND program in hobby order by beautiful desc

歡迎光臨編程愛好者網站
http://www.programfan.com/

以下是跟帖

#include <iostream>
using namespace std;
void main()
{
    int n,s=0,sum=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        s=s+i;
        sum+=s;
    }
    cout<<sum<<endl;
}

#include <stdio.h>
void main()
{
  int i,n,s,sum,counter;
  sum=0;
  s=0;
  counter=1;
  printf("/ninput a number!/n");
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  {
    s+=counter;
    sum+=s;
    counter++;
  }
  pritnf("result is : %d/n",sum);
}
這個程式是我在C語言中實現的,
比答案少了一個迴圈,
可能效率要高一些吧!

//3、 編寫程式,計算 s = 1 + (1+2) + (1+2+3) + … + (1+2+3+…+n) 的值
//    如果誰把公式用|, ^,<<, >>,& 等等計算,我真的是佩服到家了!

#include <iostream>
using namespace std;

void main(){
    int    n;
    cin >> n;

    cout << "Result: "
         << (n*(n+1)*(n+2))/6
         << endl;
}

// 我想這個應該效率最高了

 

我剛學C++,不對請大家指點!

#include <iostream.h>
long fun(int a )
{
     s += a;
   sum += s;
   if(a=1)
     returm sum;
   else
     returm fun(a-1);   //這樣調函數對不對?

}
void main( )
{
  long fun(int a)
  int x, s, sum;
   s = 0 ;
   sum = 0;

  long y;
  cout << "請輸入一個整數:";
  cin >> x;
  y = fun (x);
  cout <<"sum=" << y;
  returm;
}

小弟剛學C語言,做了一下LO幾又VE大哥的題目,做得不好,但我想凡事重在參與嗎,就把它粘上來了。莫笑:
#include<stdio.h>
main()
{
    int n,s=0,j=1,i;
    printf("please input num:/n");
    scanf("%d",&n);
    for(i=n;i>=0;i--)
    {
        s+=j*i;
        j++;
    }
    printf("%d",s);
}

 

LO幾又VE

的方法說不定比我 6樓 還強呢! 呵呵,還是請他來公布他的答案吧

// 下面再貼一個效率低的,遞迴實現。
#include <iostream>
using namespace std;

long Cal(int n){
    return (n==1)?1:Cal(n-1)+n*(n+1)/2;
}
void main(){
    int    i;
    cin >> i;
    cout << "Result: " << Cal(i) << endl;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.