50道C/C++プログラミング練習問題復習必須(31-40)

79343 ワード

C/C++プログラミング練習問題(31-40)
  • 31. プログラムを編集して、1行の文字列を入力して、その中の小文字の英語のアルファベットの個数の
  • を統計します
  • 32. プログラムを編んで、1行の文字列を入力して、その中の大文字の英語のアルファベットを小文字に変えて、更に
  • を出力します
  • 33. 印刷楊輝三角形(パスカル三角形)、印刷10行
  • 34. 九九乗算表
  • を印刷
  • 35. サイコロを10000回投げ、各点数を集計した回数
  • 36. 関数distanceを記述し、2点(x 1,y 1)と(x 2,y 2)の距離
  • を計算する.
  • 37. プログラムを書き、体操の採点を行い、10人の審査員が評価した点数を順次入力し、最高点と最低点を1つ取り除き、平均点を選手の得点として
  • と算出する.
  • 38. 関数を書き、配列内の要素を
  • に反転します.
  • 39. 関数を書き、1つの配列の中で最大要素の位置
  • を見つけます.
  • 40. 2 D配列の鞍点、すなわち要素が行で最も大きく、列で最も小さい
  • を見つけます.
    C/C++の2つの言語を使って50のテーマを完成して、2つの言語の間の違いを体得します.コンパイル環境はいずれもVS 2019であり、完了時間は2020.06.21-2020.06.2である.C++のCに対する互換性のため、一部のmain()関数はreturn 0を書かなくても成功することができますが、提唱しないで、プラスしたほうがいいです.そうしないと、他のコンパイラが間違っている可能性があります.C言語は厳密に整列する必要がないので、CSDNのフォーマットをあまり修正しません.
    31.プログラムを作成して、1行の文字列を入力して、その中の小文字の英語のアルファベットの個数を統計します
    C
    #include
    int main()
    {
     char st[100];
     printf("      :");
     scanf_s("%s", st, 100);
     int i = 0, num = 0;
     while (st[i] != '\0')
     {
      if (st[i] >= 'a' and st[i] <= 'z')
       num=num+1;
      i++;
     }
     printf("%d",num);
    }

    C++
    #include
    using namespace std;
    int main()
    {
     char s[100];
     cin.getline(s,100);
     int i = 0, num = 0;
     while (s[i]!='\0')
     {
      if (s[i] >= 'a' and s[i] <= 'z')
       num++;
      i++;
     }
     cout << num;
    }

    32.プログラムを作成して、1行の文字列を入力して、その中の大文字と英語のアルファベットを小文字に変えて、更に出力します
    C
    #include
    int main()
    {
     char s[100];
     scanf_s("%s", s, 100);
     int i = 0, num = 0;
     while (s[i] != '\0')
     {
      if (s[i] >= 'A' and s[i] <= 'Z')
       s[i] += 32;
      i++;
     }
     i = 0;
     while (s[i]!='\0')
     {
      printf("%c", s[i]);
      i++;
     }
    }
    

    C++
    #include
    using namespace std;
    int main()
    {
     char s[100];
     cin.getline(s, 100);
     int i = 0, num = 0;
     while (s[i] != '\0')
     {
      if (s[i] >= 'A' and s[i] <= 'Z')
       s[i]+=32;
      i++;
     }
     cout << s<<endl;
    }
    

    33.楊輝三角形(パスカル三角形)を印刷し、10行を印刷する
    C
    #include
    int main()
    {
     int a[10][10] = { 0 };
     for (int i = 0; i < 10; i++)
     {
      a[i][0] = 1;
      a[i][i] = 1;
     }
     for (int i = 1; i < 10; i++)
      for (int j = 1; j < i; j++)
       a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
     for (int i = 0; i < 10; i++)
     {
      for (int j = 0; j <= i; j++)
       printf("%d \t", a[i][j]);
      printf("
    "
    ); } }

    C++
    #include
    #include 
    using namespace std;
    int main()
    {
     int a[10][10] = { 0 };
     for (int i = 0; i < 10; i++)
     {
      a[i][0] = 1;
      a[i][i] = 1;
     }
     for (int i = 1; i < 10; i++)
      for (int j = 1; j < i; j++)
       a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
     for (int i = 0; i < 10; i++)
     {
      for (int j = 0; j <= i; j++)
       cout << setw(4) << a[i][j];
      cout << endl;
     }
    }

    34.九九乗算表を印刷する
    C
    #include
    int main()
    {
     int i, j;
     for (i = 1; i < 10; i++)
     {
      for (j = 1; j <= i; j++)
      {
       printf("i*j=%d\t", i * j);
      }
      printf("
    "
    ); } return 0; }

    C++
    #include
    using namespace std;
    int main()
    {
     int i, j;
     for (i = 1; i < 10; i++) 
     {
      for (j = 1; j <= i; j++)
      {
       cout << i<<"*"<< "="<< i*j<< " ";
         }
      cout << endl;
        }
    }

    35.サイコロを10000回投げ、各点数を集計した回数
    C
    #include
    #include
    #include
    int main()
    {
     int a[7] = { 0 };
     srand(time(0));
     for (int i = 1; i <= 10000; ++i)
        a[1 + rand() % 6]++;
     for (int i = 1; i <= 6; i++)
        printf("%d : %d
    "
    , i, a[i]); }

    C++
    #include
    using namespace std;
    #include
    #include
    int main()
    {
     int a[7] = { 0 };
     srand(time(0));
     for (int i = 1; i <= 10000; ++i)
      a[1 + rand() % 6]++;
     for (int i = 1; i <= 6; ++i)
      cout << i << ": " << a[i] << endl;
    }

    36.関数distanceを記述し、2点(x 1,y 1)と(x 2,y 2)の距離を計算する
    C
    #include
    #include
    double dis(double, double, double, double);
    int main()
    {
     double(d);
     double x1 = 0, x2 = 4, y1 = 0, y2 = 3;
     d = dis(x1, x2, y1, y2);
     printf("%lf",d);
    }
    double dis(double x1, double x2, double y1, double y2)
    {
     double d = sqrt((y1 - y2) * (y1 - y2) + (x1 - x2) * (x1 - x2));
     return d;
    }

    C++
    #include
    using namespace std;
    double dis(double, double,double, double);
    int main()
    {
     double(d);
     double x1 = 0, x2 = 4, y1 = 0, y2 = 3;
     d = dis(x1, x2, y1, y2);
     cout << d;
    }
    double dis(double x1, double x2, double y1,double y2)
    {
     double d = sqrt((y1 - y2) * (y1 - y2) + (x1 - x2) * (x1 - x2));
     return d;
    }

    37.プログラムを書き、体操の採点を行い、10人の審査員が評価した点数を順次入力し、最高点と最低点を1つ取り除き、平均点を選手の得点として算出する
    C
    #include
    int main()
    {
     int a, max1, min1;
        float total, ave;
     printf("          ");
     scanf_s("%d",&a);
     max1 = min1 = total = a;
     for (int i = 0; i < 9; i++)
     {
      scanf_s("%d", &a);
      if (max1 < a) max1 = a;
      if (min1 > a)  min1 = a;
      total = total + a;
     }
     total = total - min1 - max1;
     ave = total / 8;
     printf( "%lf",ave);
     return 0;
    }

    C++
    #include
    using namespace std;
    int main()
    {
     float a,max, min, total, ave;
     cout << "          " << endl;
     cin >> a;
     max = min =total= a;
     for (int i=0;i<9;i++)
     {
      cin >> a;
      if (max < a) max = a;
      if (min > a)  min = a;
      total = total + a;
     }
     total = total - min - max;
     ave = total / 8;
     cout << ave;
    }

    38.関数を書き、配列内の要素を反転する
    C
    #include
    void  reverse(int*, int);
    int main()
    {
     int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
     int n = sizeof(a) / sizeof(a[0]);
     reverse(a, n);
     for (int i = 0; i < 10; i++)
       printf("%d ",a[i]);
    }
    void  reverse(int* a, int n)
    {
     int temp;
     for (int i = 0; i < n / 2; i++)
     {
      temp = a[i];
      a[i] = a[n - 1 - i];
      a[n - 1 - i] = temp;
     }
    }

    C++
    #include
    using namespace std;
    void  reverse(int *,int);
    int main()
    {
     int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
     int n = sizeof(a)/sizeof(a[0]);
     reverse(a,n);
     for (int i = 0; i < 10; i++)
      cout << a[i]<<" ";
    }
    void  reverse(int* a,int n)
    {
     int temp;
     for (int i = 0; i < n / 2; i++)
     {
      temp = a[i];
      a[i] = a[n - 1 - i];
      a[n - 1 - i] = temp;
     }
    }

    39.関数を書き、1つの配列の中で最大要素の位置を探し出す
    C++
    #include
    using namespace std;
    void  findmax(int*, int);
    int main()
    {
     int a[10] = { 1,2,3,4,25,16,97,8,9,10 };
     int n = sizeof(a) / sizeof(a[0]);
     findmax(a, n);
    }
    void findmax(int * a,int n)
    {
     int max = a[0];
     int k=0;
     for (int i = 1; i < n; i++)
     {
      if (a[i] > max) 
      {
       max = a[i];
       k = i;
      }
     }
     cout << "    " << k + 1<<" ";
    }

    40.要素が行で最大、列で最小である2次元配列の鞍点を見つける
    C
    #include 
    #include 
    int main()
    {
     int a[3][3];
     int i, j, k, p, q, max, min;
     for (i = 0; i < 3; i++) {
      for (j = 0; j < 3; j++)
       scanf_s("%d", &a[i][j]);               //    
     }
     for (i = 0; i < 3; i++) {
      for (j = 0, max = 0, p = 0; j < 3; j++) {         //           
       if (a[i][j] > max) {
        max = a[i][j];
        p = j;
       }
       else {
        max = max;
        p = p;
       }
      }
      for (k = 0, min = a[i][p], q = i; k < 3; k++) {   //              
       if (a[k][p] < min) {
        min = a[k][p];
        q = k;
       }
       else {
        min = min;
        q = q;
       }
      }
      if (i == q) {
       printf("%d is the saddle point!
    "
    , a[i][p]); // , break; } } if (i == 3 && i != q) printf("There is no saddle point!
    "
    ); // system("pause"); return 0; }

    C++
    #include
    using namespace std;
    int main()
    {
     int a[3][3];
     int i, j, k, p, q, max, min;
     for (i = 0; i < 3; i++) {
      for (j = 0; j < 3; j++)
       cin>>a[i][j];               //    
     }
     for (i = 0; i < 3; i++) {
      for (j = 0, max = 0, p = 0; j < 3; j++) {         //           
       if (a[i][j] > max) {
        max = a[i][j];
        p = j;
       }
       else {
        max = max;
        p = p;
       }
      }
      for (k = 0, min = a[i][p], q = i; k < 3; k++) {   //              
       if (a[k][p] < min) {
        min = a[k][p];
        q = k;
       }
       else {
        min = min;
        q = q;
       }
      }
      if (i == q) {
       cout << a[i][p] <<" is the saddle point!";  //            ,    
       break;
      }
     }
     if (i == 3 && i != q)
      cout<<"There is no saddle point!"<<endl;             //      
    }