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
C++
32.プログラムを作成して、1行の文字列を入力して、その中の大文字と英語のアルファベットを小文字に変えて、更に出力します
C
C++
33.楊輝三角形(パスカル三角形)を印刷し、10行を印刷する
C
C++
34.九九乗算表を印刷する
C
C++
35.サイコロを10000回投げ、各点数を集計した回数
C
C++
36.関数distanceを記述し、2点(x 1,y 1)と(x 2,y 2)の距離を計算する
C
C++
37.プログラムを書き、体操の採点を行い、10人の審査員が評価した点数を順次入力し、最高点と最低点を1つ取り除き、平均点を選手の得点として算出する
C
C++
38.関数を書き、配列内の要素を反転する
C
C++
39.関数を書き、1つの配列の中で最大要素の位置を探し出す
C++
40.要素が行で最大、列で最小である2次元配列の鞍点を見つける
C
C++
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; //
}