寒假牛客cpp语法刷题日志

寒假第一题:数组首位元素交换

思路:1 定义左右数组的下标 left 和right 

           2  首尾元素依次交换  

           3  交换后 左下标+1 右下标-1

        直至 左下标 < = 右边的下标

接下来看代码

#include <iostream>
using namespace std;

int main() {

    int arr[6] = { 0 };

    int len = sizeof(arr) / sizeof(int);
    
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }

    cout << "[";
    for (int i = 0; i < len; i++) {
        if (i == len - 1) {
            cout << arr[i] << "]" << endl;
            break;
        }
        cout << arr[i] << ", ";
    }

   
    int  left = 0;
    int right  = len-1;
    while(left <= right)
    {//交换首尾元素
        int  tmp = arr[left];
        arr[left] = arr[right];
        arr[right] = tmp;
        left++;
        right--;
    }
    

    cout << "[";
    for (int i = 0; i < len; i++) {
        if (i == len - 1) {
            cout << arr[i] << "]" << endl;
            break;
        }
        cout << arr[i] << ", ";
    }

    return 0;
}

第二题 冒泡排序

思路

*
    * 1 n个数字有n-1个相邻的 比价相邻的
    * 2 如果第一个比第二个大,那么就交换
    * 3 重复上述操作 每次比的次数-1  
    * 
    * 
    *外层循环 排序的总轮数 = 元素的个数-1
    * 内层循环 每轮对比的次数 = 元素的个数-排序轮数-1
    */

#include <iostream>
using namespace std;

int main() {

    int arr[6] = { 0 };
    int len = sizeof(arr) / sizeof(int);
    
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }
    
    
    //n个数字比较n-1次
    for(int i = 0 ; i< len -1 ; i++ )
    {
        for( int j = 0; j< len-1- i ; j++)
        {
            if(arr[j]>arr[j+1])
            {
                arr[j] ^= arr[ j+1];
                arr[j+1] ^= arr [ j];
                arr[ j] ^= arr[j+1] ;
            }
        }
    }
    
    for(int n = 0 ;n <len; n++)

    cout<<arr[n]<<" ";
    return 0;
}

第三题 选择排序

思路:

1 选择一个最小值和后面的值进行比较 如果比后面值大 进行交换

2 循环迭代完后 最小值更新 直至循环结束

选择排序和冒泡排序的对比

    选择排序是从数组中选取一个数和其他作比较 如果该数较小就放在数组的首元素

    而冒泡排序是从数组的首元素和后面的依次对比  外层比较n-1 次 内层比较n-1-i次

#include <iostream>
using namespace std;

int main() {

    int arr[6] = { 0 };
    int len = sizeof(arr) / sizeof(int);
    
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }
    
    
    for(int i = 0 ; i< len ; i++ )
    {
        int tmp =arr[i];//选取第一个数字
        for( int j = i+1 ; j< len;j++)
        {
            //选择的数和后面的一个数作比较
            if(tmp>arr[j])
            {
                int n = tmp;
                tmp = arr[j];
                arr[ j] = n;
            }
        }
        arr[i] = tmp;//比较完之后最小的更新
    }

        for(int i = 0; i<len ;i++)
        {
            cout<<arr[i]<<" ";
        }
    return 0;
}
第四题:某公司按照季度和每个季度对应3个月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
请使用二维数组保存这些数据,并计算公司年销售总额。

思路:直接使用二维数组的性质存储这些数据即可

#include <iostream>
using namespace std;

int main() {

    int arr[4][3] = {
        // write your code here......
        {22,66,44},{77,33,88},{25,45,65},{11,66,99}
    };
    
    int sum = 0;
    
    for(int i = 0; i < 4; i++) {
        for(int j = 0; j < 3; j++) {
            sum += arr[i][j];
        }
    }
    
    cout << sum << endl;
    
    return 0;
}

第五题

描述

键盘输入两个字符串,将这两个字符串进行拼接后输出。

输入描述:

键盘输入两个字符串

输出描述:

输出两个字符串拼接后的结果

思路: 可以直接使用+符号将两个字符串拼接在一起

#include <cstring>
#include <iostream>
#include <string>
using namespace std;

int main() {
        
    string s1, s2;
    getline(cin, s1);
    getline(cin, s2);
 
    // write your code here......
    cout<<s1+s2<<endl;
   

    return 0;
}

第六题 关于结构体的简单使用

计一个学生结构体,该结构体具有三个成员,分别是:姓名name、年龄age、身高height。

键盘依次输入姓名、年龄和身高数据,将数据保存到学生结构体变量上,并输出学生信息。

输入描述:

键盘依次输入学生的姓名name、年龄age、身高height

输出描述:

输出学生的信息,例如:

张三 20 182.5

#include <iostream>
#include <string>
using namespace std;

 struct student {
    // write your code here......
    string name;
    int age;
    float  height;
    
};

int main() {

    // write your code here......
    struct student  s1;
    cin>>s1.name;
    cin>>s1.age;
    cin>>s1.height;
           
    cout<<s1.name<<" "<<s1.age<<" "<<s1.height;
    return 0;
}

第7题

描述

键盘随机输入 6 个整数,将这些数据保存到数组中,利用指针遍历数组中的元素并打印。

输入描述:

键盘随机输入 6 个整数

输出描述:

输出数组中的所有元素,每个元素中间使用空格隔开

例如:10 20 30 40 50 60

#include <iostream>
using namespace std;

int main() {

    int arr[6] = { 0 };
    int* ptr = arr;

    int len = sizeof(arr) / sizeof(int);

    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }

    // write your code here......
    for(int i = 0;i<len;i++)
    {
        cout<<*ptr<<" ";
        ptr++;
    }

    return 0;
}
第八题

描述

键盘输入一个字符串,编写代码获取字符串的长度并输出,要求使用字符指针实现。

输入描述:

键盘输入一个字符串

输出描述:

输出字符串的长度

#include <cstring>
#include <iostream>
using namespace std;

int main() {

    char str[100] = { 0 };
    cin.getline(str, sizeof(str));

        cout<<strlen(str);
    return 0;
}

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值