C++ 演習ワークブック (C++ 基本文法上級演習)

レベル 1: 同じ数字の異なる数字の合計

ミッション詳細

このレベルの課題: 同じ数の異なる数字の合計を計算できる小さなプログラムを作成します。

プログラミング要件

s=a+aa+aaa+aaaa+aa...a の値を見つけます。a は数字で、最後の項目は n 桁です。

たとえば、ユーザーが a=1, n=3 と入力した場合、1+11+111 が必要であることを意味します。

その効果は次のとおりです。 入力:1 2出力:12


ミッションを開始しましょう。成功を祈っています。

コード:

#include <iostream>
using namespace std;

size_t Sum(size_t a, size_t n)
{
	size_t sum = a, tmp = a;
	size_t i = 0;
	for (i = 1; i < n; i++)
	{
		tmp = tmp * 10 + a;
		sum += tmp;
	}
	return sum;
}

int main()
{
	int a = 0, n = 0;
	cin >> a >> n;
	cout << Sum(a, n);
	return 0;
}

レベル 2: 平均を求める

ミッション詳細

このレベルのタスク: n 個の整数の平均を計算できる小さなプログラムを作成します。

プログラミング要件

キーボードから n 個の整数を入力し、それらのすべての整数の平均を計算するプログラムを作成します。入力は 2 行で構成されます。最初の行には入力された整数の数 n を表す整数が含まれ、2 番目の行にはスペースで区切られた n 個の整数が含まれます。

効果は次のとおりです。 入力:6 -1 3 6 0 -5 4

出力:1.16667


ミッションを開始しましょう。成功を祈っています。

コード:

#include <iostream>
using namespace std;

int main()
{

    //获取参数方式 cin
    //int x =0;
    //cin >> x;

    //结果输出使用 cout
    //cout<<"1";

     // 请在此添加你的代码
    /********** Begin ********/
    int a,b;        
    float sum,s;    
    cin>>a;    
    for(int i=1;i<=a;i++)
    {        
	    cin>>b;        
	    sum=sum+b;           
    }    
    s=(sum)/a;    
    cout<<s;
    return 0;
    /********** End **********/
}

レベル 3: ISBN13 コードを生成する

ミッション詳細

このレベルのタスク: ISBN13 コードを生成できる小さなプログラムを作成します。

関連情報

SBN13 番号は 2007 年に正式に開始されました。各書籍の ISBN13 番号は 5 つの部分で構成されています。

  • 978 (または 979);
  • 発行国または言語コード。
  • 出版社コード;
  • ブックコード;
  • チェックサム。

たとえば、「C++ プログラミング (第 2 版)」の ISBN13 番号は 978-7-302-21897-5 で、5 はチェック コードです。

アルゴリズム

デモデータ:7-5080-2710-8

  • 末尾のチェック コード 8 を削除し、前に 978 (中国) を追加します。つまり、978750802710 です。
  • コード位置番号 2 から始めて、すべての偶数番号のデジタル コードの合計は a、7 + 7 + 0 + 0 + 7 + 0 = 21 です。
  • a を 3 倍して a を取得します。21 * 3 = 63
  • コード位置番号 1 から開始して、すべての奇数番号のデジタル コードの合計は b、9 + 8 + 5 + 8 + 2 + 1 = 33 です。
  • a と b を c に足すと、63 + 33 = 96
  • c の 1 桁の d を取ります (最後に計算された 1 桁の d が 0 の場合、チェック値の値は 0 です)。ユニット: 6
  • 10 から d を引いた値がチェック ディジットの値で、最後の桁に入れます。10 - 6 = 4
  • バーコード: 9 7 8 7 5 0 8 0 2 7 1 0 4

プログラミング要件

入力 ISBN13 の最初の 4 つの部分と検証アルゴリズムに従って、完全な ISBN13 コードが生成され、出力されます。

: 機械によって自動的に判断されるため、入力の最初の 4 つの部分の各数字はスペースで区切られていることに同意します。

たとえば、9 7 8 7 3 0 2 2 1 8 9 7 を入力し、9787302218975 を出力します。

その効果は次のとおりです。 入力:9 7 8 7 3 0 2 2 1 8 9 7出力:9787302218975


ミッションを開始しましょう。成功を祈っています。

コード:

#include <iostream>
using namespace std;

int main()
{

    //获取参数方式 cin
    //int x =0;
    //cin >> x;

    //结果输出使用 cout
    //cout<<"1";

     // 请在此添加你的代码
    /********** Begin ********/
    int a,b,c,d,e,f,g,h,i,j,k,l,s,m,n;                      
    cin>>a>>b>>c>>d>>e>>f>>g>>h>>i>>j>>k>>l;
    s=a*1+b*3+c*1+d*3+e*1+f*3+g*1+h*3+i*1+j*3+k*1+l*3;     
    m=s%10;   
    n=10-m;   
    if(n==10)       
        cout<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<k<<l<<'0';   
    else 
        cout<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<k<<l<<n;    
    return 0;  
    /********** End **********/
}

レベル 4: ISBN13 と ISBN10 の変換

ミッション詳細

このレベルのタスク: ISBN13 と ISBN10 を変換できる小さなプログラムを作成します。

関連情報

2007 年以前は、ISBN10 コードが国際標準図書番号に使用されていました。ISBN10 コードは、発行国コードまたは言語コード、出版社コード、図書コード、チェック コードの 4 つの部分で構成されていました。また、ISBN10の検証アルゴリズムはISBN13とは異なります。

アルゴリズム

10桁のISBNのチェックコードの計算式:

  • ISBN番号の右端の1桁がチェックディジットで、上9桁から計算式で計算されると同時に、ISBN番号が正しいかどうかのチェックにも使用できます。チェックデジットの計算式は左から9桁、1桁ごとに重み付けして10から2までの9個の数字を足し、足し算と11の余りを計算し、最後に11と11の差を求めます。残り、差はチェック ISBN: 7802253217  11-((7*10+8*9+0*8+2*7+2*6+5*5+3*4+2*3+1*2)%11)=7  コード10; チェックコードはX; 差が の場合11、チェックコードは0.

13 桁の ISBN のチェック コードを計算する式:

  • ISBN番号の右端の1桁がチェックディジットで、最初の12桁から計算式で計算されると同時に、ISBN番号が正しいかどうかをチェックすることができます。チェック ディジットの計算式は、左から右に次のように与えられます. 12 桁、各桁は重み付けされ、2 つの数字 1 と 3 を順番に合計し、合計の余りと 10 を計算し、最後に 10 と 10 の差を求めます。が残り、差がチェック コードです。たとえば、差が の場合 ISBN: 9787802253216  10-((9*1+7*3+8*1+7*3+8*1+0*3+2*1+2*3+5*1+3*3+2*1+1*3)%10)=6  、10チェック コードは です0

プログラミング要件

要件: 前のレベルの演習に基づいて、ISBN13 コードを入力し、最初に検証アルゴリズムによって合法かどうかを判断し、対応する ISBN10 コード (途中にスペースを入れない) を出力し、そうでない場合は "Error" を出力します。

詳細と検証アルゴリズムについては、添付のウィキペディアのドキュメントを参照してください。: 機械によって自動的に判断されるため、入力の最初の 4 つの部分の各数字はスペースで区切られていることに同意します。

効果は次のとおりです。

入力:9 7 8 7 3 0 2 2 1 8 9 7 5出力:7302218974


ミッションを開始しましょう。成功を祈っています。

コード:

#include <iostream>
using namespace std;

int main()
{

    //获取参数方式 cin
    //int x =0;
    //cin >> x;

    //结果输出使用 cout
    //cout<<"1";

     // 请在此添加你的代码
    /********** Begin ********/
    int a,b,c,d,e,f,g,h,i,j,k,l,m,S,N,M;           
    cin>>a>>b>>c>>d>>e>>f>>g>>h>>i>>j>>k>>l>>m;    
    int checksum = 10-(a*1+b*3+c*1+d*3+e*1+f*3+g*1+h*3+i*1+j*3+k*1+l*3)%10;    
    if(checksum == m)    
        {        
int finnal_bit = 11-(10*d+9*e+8*f+7*g+6*h+5*i+4*j+3*k+2*l)%11;        
        if(finnal_bit == 10)                    
        cout<<d<<e<<f<<g<<h<<i<<j<<k<<l<<'x';        
        else if(finnal_bit == 11)               
        cout<<d<<e<<f<<g<<h<<i<<j<<k<<l<<0;        
        else          
        cout<<d<<e<<f<<g<<h<<i<<j<<k<<l<<finnal_bit;          
        }    
    else    
    {       
    cout<<"Error";    
    }    
    return 0;
    /********** End **********/
}

おすすめ

転載: blog.csdn.net/weixin_62174595/article/details/127140441