C++经典案例

C++经典案例,第1张

C++学习过程中的经典案例

文章目录
  • C++学习过程中的经典案例

  • 一、水仙花数


  • 二、乘法口诀表


  • 三、数组

    • 1、数组元素倒置
    • 2、冒泡排序



一、水仙花数

案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^3 + 5^3+ 3^3 = 153

#include
using namespace std;

/*
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^3 + 5^3+ 3^3 = 153
*/

int main()
{
    int num = 100;
    int a,b,c;      //用a,b,c,分别取三位数num的个位、十位、百位
    while(num < 1000)
    {
        a = num % 10;
        b = num / 10 % 10;
        c = num / 100;

        //判断num是否是水仙花数
        if(a*a*a + b*b*b + c*c*c == num)
        {
            cout << num << "是水仙花数!" <<endl;
        }

        num++;
    }

    system("pause");

    return 0;
}

二、乘法口诀表

练习案例:乘法口诀表
案例描述:利用嵌套循环,实现九九乘法表

#include
using namespace std;

int main()
{
    for (int i = 1; i < 10; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            cout << j << "*" << i << "=" << j*i << "\t" ;
        }
        cout << endl;
    }

    system("pause");

    return 0;
    
}

三、数组 1、数组元素倒置

案例描述:请声明一个5个元素的数组,并且将元素逆置.
(如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1)

#include
using namespace std;
 
int main()
{
    int arr[] = {1,2,4,3,5};
    cout << "元素逆置前数组为:" << endl;
    //遍历输出整个数组
    for(int i = 0 ; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;

    //记录第一个元素和最后一个元素位置
    int start = 0;
    int end = sizeof(arr) / sizeof(arr[0]) - 1;

    //元素逆置
    while (start < end)
    {
         //交换元素
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;

        //更新下标
        start++;
        end--;
    }
    
    cout << "元素逆置后数组为:" << endl;
    //遍历输出整个数组
    for(int i = 0 ; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
   
    system("pause");

    return 0;

}
2、冒泡排序

作用: 最常用的排序算法,对数组内元素进行排序

  1. 比较相邻的元素。


    如果第一个比第二个大,就交换他们两个。


  2. 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。


  3. 重复以上的步骤,每次比较次数-1,直到不需要比较
#include
using namespace std;

int main()
{
    int arr[] = {1,3,0,2,4,6,9,7,8,5};
    //冒泡排序前数组为
    cout << "冒泡排序前数组为:" << endl;
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]) ; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;

    //冒泡排序开始,外部循环次数 = 排序总轮数 = 元素个数  - 1
    for(int i = 0; i < sizeof(arr) / sizeof(arr[0]) - 1; i++)
    {
        //内部循环次数 = 每轮对比次数 = 元素个数 -排序轮数 - 1
        for(int j = 0 ; j < sizeof(arr) / sizeof(arr[0]) - i - 1 ; j++)
        {
            //比较相邻的元素。


如果第一个比第二个大,就交换他们两个 if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } //冒泡结束 cout << "冒泡排序后数组为:" << endl; for (int i = 0; i < sizeof(arr) / sizeof(arr[0]) ; i++) { cout << arr[i] << " "; } cout << endl; system("pause"); return 0; }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/569826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存