(39)C++ 实例

    技术2022-07-11  95

    C++ 实例

    C++ 实例 - 输出 "Hello, World!"C++ 实例 - 标准输入输出C++ 实例 - 实现两个数相加C++ 实例 - 求商及余数C++ 实例 - 查看 int, float, double 和 char 变量大小C++ 实例 - 交换两个数不使用临时变量,使用异或的方法: C++ 实例 - 判断一个数是奇数还是偶数可以用与运算判断: C++ 实例 - 判断元音/辅音C++ 实例 - 判断三个数中的最大数可以使用临时变量记录最大值也可以使用三元运算符,更为简单参考方法 C++ 实例 - 求一元二次方程的根C++ 实例 - 计算自然数之和C++ 实例 - 判断闰年C++ 实例 - 求一个数的阶乘阶乘可以用递归来实现 C++ 实例 - 创建各类三角形图案以下图形另一种写法 C++ 实例 - 求两数的最大公约数当输入两个数相等时,最大公约数还是其本身,等于说不受输入数值影响。 C++ 实例 - 求两数最小公倍数求 gcd 我们可以使用辗转相除法,即 gcd(a,b)=gcd(b,a%b)。 C++ 实例 - 实现一个简单的计算器参考方法 猴子吃桃问题参考方法使用递归可以很好的解决此问题....使用递归算法,方便又直观注意 for 循环的次数

    C++ 实例 - 输出 “Hello, World!”

    使用 C++ 输出字符串 “Hello, World!”,只是一个简单的入门实例,需要使用 main() 函数及标准输出 cout:

    实例

    #include <iostream> using namespace std; int main() { cout << "Hello, World!"; return 0; }

    以上程序执行输出结果为:

    Hello, World!

    C++ 实例 - 标准输入输出

    使用 C++ 获取用户的输入,并输出到屏幕:

    实例

    #include <iostream> using namespace std; int main() { int number; cout << "输入一个整数: "; cin >> number; cout << "输入的数字为: " << number; return 0; }

    以上程序执行输出结果为:

    输入一个整数: 12 输入的数字为: 12

    C++ 实例 - 实现两个数相加

    使用 C++ 获取用户的输入两个数字,并将两个数字相加,然后输出到屏幕:

    实例

    #include <iostream> using namespace std; int main() { int firstNumber, secondNumber, sumOfTwoNumbers; cout << "输入两个整数: "; cin >> firstNumber >> secondNumber; // 相加 sumOfTwoNumbers = firstNumber + secondNumber; // 输出 cout << firstNumber << " + " << secondNumber << " = " << sumOfTwoNumbers; return 0; }

    以上程序执行输出结果为:

    输入两个整数: 4 5 4 + 5 = 9

    C++ 实例 - 求商及余数

    使用 C++ 获取用户的输入两个数字,并将两个数字相除,然后将商和余数输出到屏幕:

    实例

    #include <iostream> using namespace std; int main() { int divisor, dividend, quotient, remainder; cout << "输入被除数: "; cin >> dividend; cout << "输入除数: "; cin >> divisor; quotient = dividend / divisor; remainder = dividend % divisor; cout << "商 = " << quotient << endl; cout << "余数 = " << remainder; return 0; }

    以上程序执行输出结果为:

    输入被除数: 13 输入除数: 4= 3 余数 = 1

    C++ 实例 - 查看 int, float, double 和 char 变量大小

    使用 C++ sizeof 运算符来计算 int, float, double 和 char 变量占用的空间大小。

    sizeof 运算符语法格式:

    sizeof(dataType);

    注意:不同系统计算结果可能不一样。

    实例

    #include <iostream> using namespace std; int main() { cout << "char: " << sizeof(char) << " 字节" << endl; cout << "int: " << sizeof(int) << " 字节" << endl; cout << "float: " << sizeof(float) << " 字节" << endl; cout << "double: " << sizeof(double) << " 字节" << endl; return 0; }

    以上程序执行输出结果为:

    char: 1 字节 int: 4 字节 float: 4 字节 double: 8 字节

    C++ 实例 - 交换两个数

    以下我们使用两种方法来交换两个变量:使用临时变量与不使用临时变量。

    实例 - 使用临时变量

    #include <iostream> using namespace std; int main() { int a = 5, b = 10, temp; cout << "交换之前:" << endl; cout << "a = " << a << ", b = " << b << endl; temp = a; a = b; b = temp; cout << "\n交换之后:" << endl; cout << "a = " << a << ", b = " << b << endl; return 0; }

    以上程序执行输出结果为:

    交换之前: a = 5, b = 10 交换之后: a = 10, b = 5

    实例 - 不使用临时变量

    #include <iostream> #include <iostream> using namespace std; int main() { int a = 5, b = 10; cout << "交换之前:" << endl; cout << "a = " << a << ", b = " << b << endl; a = a + b; b = a - b; a = a - b; cout << "\n交换之后:" << endl; cout << "a = " << a << ", b = " << b << endl; return 0; }

    以上程序执行输出结果为:

    交换之前: a = 5, b = 10 交换之后: a = 10, b = 5

    不使用临时变量,使用异或的方法:

    #include <iostream> using namespace std; int main() { int a=9, b=4; cout << "a: " << a << endl; cout << "b: " << b << endl; a = a ^ b; b = a ^ b; a = a ^ b; cout << "a: " << a << endl; cout << "b: " << b << endl; return 0; }

    C++ 实例 - 判断一个数是奇数还是偶数

    以下我们使用 % 来判断一个数是奇数还是偶数,原理是,将这个数除于 2 如果余数为 0 为偶数,否则Wie奇数。

    实例 - 使用 if…else

    #include <iostream> using namespace std; int main() { int n; cout << "输入一个整数: "; cin >> n; if ( n % 2 == 0) cout << n << " 为偶数。"; else cout << n << " 为奇数。"; return 0; }

    以上程序执行输出结果为:

    输入一个整数: 5 5 为奇数。

    实例 - 使用三元运算符

    #include <iostream> using namespace std; int main() { int n; cout << "输入一个整数: "; cin >> n; (n % 2 == 0) ? cout << n << " 为偶数。" : cout << n << " 为奇数。"; return 0; }

    以上程序执行输出结果为:

    输入一个整数: 5 5 为奇数。

    可以用与运算判断:

    #include <iostream> using namespace std; int main() { int n = 1; cout << "输入一个整数: "; cin >> n; if ( ( n & 1 ) == 0) cout << n << " 为偶数。"; else cout << n << " 为奇数。"; return 0; }

    C++ 实例 - 判断元音/辅音

    英语有 26 个字母,元音只包括 a、e、i、o、u 这五个字母,其余的都为辅音。y是半元音、半辅音字母,但在英语中都把他当作辅音。

    实例

    #include <iostream> using namespace std; int main() { char c; int isLowercaseVowel, isUppercaseVowel; cout << "输入一个字母: "; cin >> c; // 小写字母元音 isLowercaseVowel = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'); // 大写字母元音 isUppercaseVowel = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U'); // if 语句判断 if (isLowercaseVowel || isUppercaseVowel) cout << c << " 是元音"; else cout << c << " 是辅音"; return 0; }

    以上程序执行输出结果为:

    输入一个字母: G G 是辅音

    C++ 实例 - 判断三个数中的最大数

    通过屏幕我们输入三个数字,并找出最大的数。

    实例 - 使用 if

    #include <iostream> using namespace std; int main() { float n1, n2, n3; cout << "请输入三个数: "; cin >> n1 >> n2 >> n3; if(n1 >= n2 && n1 >= n3) { cout << "最大数为: " << n1; } if(n2 >= n1 && n2 >= n3) { cout << "最大数为: " << n2; } if(n3 >= n1 && n3 >= n2) { cout << "最大数为: " << n3; } return 0; }

    以上程序执行输出结果为:

    请输入三个数: 2.3 8.3 -4.2 最大数为: 8.3

    实例 - 使用 if…else

    #include <iostream> using namespace std; int main() { float n1, n2, n3; cout << "请输入三个数: "; cin >> n1 >> n2 >> n3; if((n1 >= n2) && (n1 >= n3)) cout << "最大数为: " << n1; else if ((n2 >= n1) && (n2 >= n3)) cout << "最大数为: " << n2; else cout << "最大数为: " << n3; return 0; }

    以上程序执行输出结果为:

    请输入三个数,以空格分隔: 2.3 8.3 -4.2 最大数为: 8.3

    实例 - 使用内嵌的 if…else

    #include <iostream> using namespace std; int main() { float n1, n2, n3; cout << "请输入三个数: "; cin >> n1 >> n2 >> n3; if (n1 >= n2) { if (n1 >= n3) cout << "最大数为: " << n1; else cout << "最大数为: " << n3; } else { if (n2 >= n3) cout << "最大数为: " << n2; else cout << "最大数为: " << n3; } return 0; }

    以上程序执行输出结果为:

    请输入三个数,以空格分隔: 2.3 8.3 -4.2 最大数为: 8.3

    可以使用临时变量记录最大值

    #include <iostream> using namespace std; int main() { float n1, n2, n3, max; cout << "请输入三个数: "; cin >> n1 >> n2 >> n3; if(n1 >= n2) { max = n1; }else{ max = n2; } if(n3 >= max) { max = n3; } cout << "最大数为: " << max; return 0; }

    也可以使用三元运算符,更为简单

    #include <iostream> using namespace std; int main(){ int a,b,c,MAX; cout<<"please enter three number"; cin>>a>>b>>c; MAX=a?b:a,b; MAX=MAX?c:MAX,c; cout<<"big number is"<<MAX; return 0; }

    参考方法

    #include <iostream> using namespace std; int main(int argc, char *argv[]) { float a,b,c,MAX; cout << "请输入三个数, 用空格隔开" << endl; cin >> a >> b >> c; MAX = a > b ? a : b; MAX = MAX > c ? MAX : c; cout <<"最大数是 " << MAX; return 0; }

    C++ 实例 - 求一元二次方程的根

    二次方程 ax2+bx+c = 0 (其中a≠0),a 是二次项系数,bx 叫作一次项,b是一次项系数;c叫作常数项。

    x 的值为:

    根的判别式

    实例

    #include <iostream> #include <cmath> using namespace std; int main() { float a, b, c, x1, x2, discriminant, realPart, imaginaryPart; cout << "输入 a, b 和 c: "; cin >> a >> b >> c; discriminant = b*b - 4*a*c; if (discriminant > 0) { x1 = (-b + sqrt(discriminant)) / (2*a); x2 = (-b - sqrt(discriminant)) / (2*a); cout << "Roots are real and different." << endl; cout << "x1 = " << x1 << endl; cout << "x2 = " << x2 << endl; } else if (discriminant == 0) { cout << "实根相同:" << endl; x1 = (-b + sqrt(discriminant)) / (2*a); cout << "x1 = x2 =" << x1 << endl; } else { realPart = -b/(2*a); imaginaryPart =sqrt(-discriminant)/(2*a); cout << "实根不同:" << endl; cout << "x1 = " << realPart << "+" << imaginaryPart << "i" << endl; cout << "x2 = " << realPart << "-" << imaginaryPart << "i" << endl; } return 0; }

    以上程序执行输出结果为:

    输入 a, b 和 c: 4 5 1 实根不同: x1 = -0.25 x2 = -1

    C++ 实例 - 计算自然数之和

    计算 1+2+3+…+n 的和。

    实例

    #include <iostream> using namespace std; int main() { int n, sum = 0; cout << "输入一个正整数: "; cin >> n; for (int i = 1; i <= n; ++i) { sum += i; } cout << "Sum = " << sum; return 0; }

    以上程序执行输出结果为:

    输入一个正整数: 50 Sum = 1275

    C++ 实例 - 判断闰年

    用户输入年份,判断该年份是否为闰年。

    实例

    #include <iostream> using namespace std; int main() { int year; cout << "输入年份: "; cin >> year; if (year % 4 == 0) { if (year % 100 == 0) { // // 这里如果被 400 整数是闰年 if (year % 400 == 0) cout << year << " 是闰年"; else cout << year << " 不是闰年"; } else cout << year << " 是闰年"; } else cout << year << " 不是闰年"; return 0; }

    以上程序执行输出结果为:

    输入年份: 1990 1990 不是闰

    C++ 实例 - 求一个数的阶乘

    一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

    实例

    #include <iostream> using namespace std; int main() { unsigned int n; unsigned long long factorial = 1; cout << "输入一个整数: "; cin >> n; for(int i = 1; i <=n; ++i) { factorial *= i; } cout << n << " 的阶乘为:"<< " = " << factorial; return 0; }

    以上程序执行输出结果为:

    输入一个整数: 12 12 的阶乘为: = 479001600

    阶乘可以用递归来实现

    #include <iostream> using namespace std; long fact(int); int main() { int n = 12; unsigned long long factorial = 1; factorial = fact(n); cout<<n<<"!="<<factorial<<endl; return 0 ; } long fact(int ip) { if (ip == 1) { return 1; } else { return ip * fact(ip - 1); } }

    C++ 实例 - 创建各类三角形图案

    创建各类三角形图案。

    实例

    #include <iostream> using namespace std; int main() { int rows; cout << "输入行数: "; cin >> rows; for(int i = 1; i <= rows; ++i) { for(int j = 1; j <= i; ++j) { cout << "* "; } cout << "\n"; } return 0; }

    以上程序执行输出结果为:

    * * * * * * * * * * * * * * *

    实例

    #include <iostream> using namespace std; int main() { int rows; cout << "输入行数: "; cin >> rows; for(int i = 1; i <= rows; ++i) { for(int j = 1; j <= i; ++j) { cout << j << " "; } cout << "\n"; } return 0; }

    以上程序执行输出结果为:

    1 1 2 1 2 3 1 2 3 4 1 2 3 4 5

    实例

    #include <iostream> using namespace std; int main() { char input, alphabet = 'A'; cout << "输入最后一个大写字母: "; cin >> input; for(int i = 1; i <= (input-'A'+1); ++i) { for(int j = 1; j <= i; ++j) { cout << alphabet << " "; } ++alphabet; cout << endl; } return 0; }

    以上程序执行输出结果为:

    A B B C C C D D D D E E E E E

    实例

    #include <iostream> using namespace std; int main() { int rows; cout << "输入行数: "; cin >> rows; for(int i = rows; i >= 1; --i) { for(int j = 1; j <= i; ++j) { cout << "* "; } cout << endl; } return 0; }

    以上程序执行输出结果为:

    * * * * * * * * * * * * * * *

    实例

    #include <iostream> using namespace std; int main() { int rows; cout << "输入行数: "; cin >> rows; for(int i = rows; i >= 1; --i) { for(int j = 1; j <= i; ++j) { cout << j << " "; } cout << endl; } return 0; }

    以上程序执行输出结果为:

    1 2 3 4 5 1 2 3 4 1 2 3 1 2 1

    实例

    #include <iostream> using namespace std; int main() { int space, rows; cout <<"输入行数: "; cin >> rows; for(int i = 1, k = 0; i <= rows; ++i, k = 0) { for(space = 1; space <= rows-i; ++space) { cout <<" "; } while(k != 2*i-1) { cout << "* "; ++k; } cout << endl; } return 0; }

    以上程序执行输出结果为:

    * * * * * * * * * * * * * * * * * * * * * * * * *

    实例

    #include <iostream> using namespace std; int main() { int rows, count = 0, count1 = 0, k = 0; cout << "输入行数: "; cin >> rows; for(int i = 1; i <= rows; ++i) { for(int space = 1; space <= rows-i; ++space) { cout << " "; ++count; } while(k != 2*i-1) { if (count <= rows-1) { cout << i+k << " "; ++count; } else { ++count1; cout << i+k-2*count1 << " "; } ++k; } count1 = count = k = 0; cout << endl; } return 0; }

    以上程序执行输出结果为:

    1 2 3 2 3 4 5 4 3 4 5 6 7 6 5 4 5 6 7 8 9 8 7 6 5

    实例

    #include <iostream> using namespace std; int main() { int rows; cout << "输入行数: "; cin >> rows; for(int i = rows; i >= 1; --i) { for(int space = 0; space < rows-i; ++space) cout << " "; for(int j = i; j <= 2*i-1; ++j) cout << "* "; for(int j = 0; j < i-1; ++j) cout << "* "; cout << endl; } return 0; }

    以上程序执行输出结果为:

    * * * * * * * * * * * * * * * * * * * * * * * * *

    实例

    #include <iostream> using namespace std; int main() { int rows, coef = 1; cout << "Enter number of rows: "; cin >> rows; for(int i = 0; i < rows; i++) { for(int space = 1; space <= rows-i; space++) cout <<" "; for(int j = 0; j <= i; j++) { if (j == 0 || i == 0) coef = 1; else coef = coef*(i-j+1)/j; cout << coef << " "; } cout << endl; } return 0; }

    以上程序执行输出结果为:

    1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

    实例

    #include <iostream> using namespace std; int main() { int rows, number = 1; cout << "输入行数: "; cin >> rows; for(int i = 1; i <= rows; i++) { for(int j = 1; j <= i; ++j) { cout << number << " "; ++number; } cout << endl; } return 0; }

    以上程序执行输出结果为:

    1 2 3 4 5 6 7 8 9 10

    以下图形另一种写法

    * * * * * * * * * * * * * * * * * * * * * * * * * #include <iostream> using namespace std; int main() { int space, rows = 5; for(int i = 1; i <= rows; ++i) { for(space = 1; space <= rows-i; ++space) { cout <<" "; } int k = 2*(i-1)+1; while(k>0) { cout << "* "; --k; } cout << endl; } return 0; }

    C++ 实例 - 求两数的最大公约数

    用户输入两个数,求这两个数的最大公约数。

    实例

    #include <iostream> using namespace std; int main() { int n1, n2; cout << "输入两个整数: "; cin >> n1 >> n2; while(n1 != n2) { if(n1 > n2) n1 -= n2; else n2 -= n1; } cout << "HCF = " << n1; return 0; }

    以上程序执行输出结果为:

    输入两个整数: 78 52 HCF = 26

    实例

    #include <iostream> using namespace std; int main() { int n1, n2, hcf; cout << "输入两个整数: "; cin >> n1 >> n2; // 如果 n2 大于 n1 交换两个变量 if ( n2 > n1) { int temp = n2; n2 = n1; n1 = temp; } for (int i = 1; i <= n2; ++i) { if (n1 % i == 0 && n2 % i ==0) { hcf = i; } } cout << "HCF = " << hcf; return 0; }

    以上程序执行输出结果为:

    输入两个整数: 78 52 HCF = 26

    当输入两个数相等时,最大公约数还是其本身,等于说不受输入数值影响。

    找公约数的前提是,输入为整型,等于说受输入类型影响。

    最大公约数计算:两数能同时被 i 整除。

    最小公倍数计算:两数相乘 / 最大公约数。

    #include <iostream> #include <typeinfo> #include <iomanip> using namespace std; int main() { int a,b; int MAX,MIN,i; cout <<"输入两个数: "; cin >> a >> b; cout<<"检查输入数据类型"<<typeid(a).name()<<setw(6)<<typeid(b).name()<<endl; //建议输入数据非法时,做异常抛出 throw // 找到两个数中,最大的 MAX=a?b:a,b; // 确定除数,被除数 if(a==MAX) MIN=b; else MIN=a; // 求最大公约数, for(i=MIN;i>1;i--) { if((MAX%i==0)&&(MIN%i==0)) break; else continue; } cout<<"最大公约数"<<i<<endl; cout<<"最小公倍数"<<(a*b)/i; return 0; }

    C++ 实例 - 求两数最小公倍数

    用户输入两个数,其这两个数的最小公倍数。

    实例

    #include <iostream> using namespace std; int main() { int n1, n2, max; cout << "输入两个数: "; cin >> n1 >> n2; // 获取最大的数 max = (n1 > n2) ? n1 : n2; do { if (max % n1 == 0 && max % n2 == 0) { cout << "LCM = " << max; break; } else ++max; } while (true); return 0; }

    以上程序执行输出结果为:

    输入两个数: 12 18 LCM = 36

    实例

    #include <iostream> using namespace std; int main() { int n1, n2, hcf, temp, lcm; cout << "输入两个数: "; cin >> n1 >> n2; hcf = n1; temp = n2; while(hcf != temp) { if(hcf > temp) hcf -= temp; else temp -= hcf; } lcm = (n1 * n2) / hcf; cout << "LCM = " << lcm; return 0; }

    以上程序执行输出结果为:

    输入两个整数: 78 52 HCF = 26

    求 gcd 我们可以使用辗转相除法,即 gcd(a,b)=gcd(b,a%b)。

    那么程序就是用递归实现:

    int gcd(int x,int y){ return y?gcd(y,x%y):x; }

    C++ 实例 - 实现一个简单的计算器

    使用 C++ 创建一个简单的计算器,可以实现 +, -, *, / 。

    实例

    #include <iostream> using namespace std; int main() { char op; float num1, num2; cout << "输入运算符:+、-、*、/ : "; cin >> op; cout << "输入两个数: "; cin >> num1 >> num2; switch(op) { case '+': cout << num1+num2; break; case '-': cout << num1-num2; break; case '*': cout << num1*num2; break; case '/': cout << num1/num2; break; default: // 如果运算符不是 +, -, * 或 /, 提示错误信息 cout << "Error! 请输入正确运算符。"; break; } return 0; }

    以上程序执行输出结果为:

    输入运算符:+-*/ : + 输入两个数: 1 2 3

    参考方法

    #include <iostream> using namespace std; float add(float num1,float num2){return num1+num2;} float mns(float num1,float num2){return num1-num2;} float tms(float num1,float num2){return num1*num2;} float div(float num1,float num2){return num1/num2;} map<char,(*float)(float,float)>fun; int main() { char op; float num1, num2; cout << "输入运算符:+、-、*、/ : "; cin >> op; cout << "输入两个数: "; cin >> num1 >> num2; try { if(fun.count(op))fun(num1,num2); else cout << "Error! 请输入正确运算符。"; } catch(ZeroDivisionError){cout << "Error! 不能除以0。";} return 0; }

    猴子吃桃问题

    一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。

    实例

    #include <iostream> using namespace std; int main() { int x, y, n; for (x=1, n=0; n<9; y=(x+1)*2, x=y, n++); cout<<"第一天共摘的桃子数量为 "<<x<<endl; return 0; }

    以上实例输出结果为:

    第一天共摘的桃子数量为 1534

    参考方法

    #include <iostream> int main() { for (int x = 1, n = 9; n > 0; n--) { std::cout << "第" << n << "天吃之前有" << (x + 1) * 2 << "个桃子" << std::endl; std::cout << "第" << n << "天吃完后有" << x << "个桃子" << std::endl; x = (x + 1) * 2; } return 0; }

    使用递归可以很好的解决此问题…

    #include <iostream> using namespace std; int returnPeach(int day, int peach) { if(day > 1) { peach = peach * 2 + 2; day -= 1; return returnPeach(day, peach); } else { return peach; } } int main(void) { int peach = returnPeach(10,1); cout<<"第一天共摘桃子的数量为:"<<peach<<endl; system("pause"); return 0; }

    使用递归算法,方便又直观

    #include <iostream> using namespace std; int num(int n) { int i; if(n==1) i=1; else i=2*(num(n-1)+1); return i; } int main() { cout<<"桃子一共有:"<<num(10)<<"个"<<endl; return 0; }

    注意 for 循环的次数

    #include <iostream> using namespace std; int main() { int z = 0; for(int i = 1, n=9; n > 0; n--,i=(i+1)*2,z=i) { } cout << z << endl; for(int i = 1, n=10; n > 0; n--,i=(i+1)*2) { z=i; } cout << z << endl; return 0; }
    Processed: 0.010, SQL: 9