[Aura-van]青州智学4月C++语法基础笔记

青州自学感悟

代码的等价替换

    // TODO 计算每个月的销量
    // 第一种写法,依次计算每个元素
    // sales[1] = 2 * sales[0]; // 第2个月的销量
    // sales[2] = 2 * sales[1]; // 第3个月的销量
    // ...
    // sales[11] = 2 * sales[10]; // 第12个月的销量

    // 第二种写法:用循环依次计算
    for (int i = 1; i < 12; i ++)
        sales[i] = 2 * sales[i-1];

人对标准的输入输出其实是抵抗的,这是一种生命的占用和范式的繁衍。 不能理解背后的精神和思想,就无法得到个人行为的解释和超脱,也不能得到前进的意义和动力。

数组

//对数组无脑的声明
#include <bits/stdc++.h>
using namespace std; 

int main() {
    // 请补全代码,实现题目功能
    int x;
    cin>>x;
    int y;
  	
    for(int i=0;i<=x;i++){
        cin>>y;
        int num[i]=y;
    }

    int z;
    cin>>z;
    for(int i=0;i<x;i++){
        if(num[i]==z){
            cout<<i;
            return 0;
        }
    }
    cout<<"Not Found";
    return 0;
}


//ac
#include <bits/stdc++.h>
using namespace std; 

int main() {
    // 请补全代码,实现题目功能
    int x;
    cin>>x;
    int y;
    int num[x];
    for(int i=0;i<x;i++){
        cin>>y;
         num[i]=y;
    }

    int z;
    cin>>z;
    for(int i=0;i<x;i++){
        if(num[i]==z){
            cout<<i+1;
            return 0;
        }
    }
    cout<<"Not Found";
    return 0;
}
//int[]声明和初始化 要么你不初始化 给个范围 要不你不用给范围,直接初始化

多维数组

#include <bits/stdc++.h>
using namespace std; 

int main() {
    // 请补全代码,实现题目功能
    //声明并初始化一个m,n维数组
    int m,n;
    cin>>m>>n;
    int num[m][n];
    int y;
    for(int i=0;i<m;i++){
        for(int j= 0;j< n;j++){
            cin>>y;
            num[i][j]=y;
        }
    }
    // int num1[n][m];不用定义了 直接输出
    for (int i =0;i<n;i++){
        for(int j = 0;j<m;j++){
            // cin>>y;
            cout<<num[j][i]<<' ';
        }
        cout<<endl;
    }
    return 0;
}
//一遍过 秀儿
答案
  #include <iostream>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    int nums[m][n];
    
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
            cin >> nums[j][i];
    
    for (int i=0; i<m; i++) {
        for (int j=0; j<n; j++)
            cout << nums[i][j] << " ";
        cout << endl;
    }
    return 0;
}

好像有哪里不对

字符串

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TY1XtuTe-1650022455242)(/Users/nitro-blow/Library/Application Support/typora-user-images/image-20220414222329994.png)]

你当然可以不好好学 不好好休息 不好好玩耍 但是你需要对你的行为负责 这是亘古不变的原则

如果你想要通过极限施压的行为来达到这种情况,那么你的行为就会被某种程度上约束,那就是一种瓶颈,他只能通过你自己不断的训练来突破。

什么时候才可以编程的时候脑子快过手,手快过脑子。

  • 不要磕磕绊绊地去打字 我宁愿你流畅地进行这种问题和行为,那是美妙的感觉,仿佛你就在弹钢琴;

强化链接 for() 而不是for就结束了

世上无难事 只要肯摆烂

开心第一要义

  • 健康

  • 持续的安定的享受的狂妄的利滚利的

活下去 你就强过了大多数人 社会自然有它的机制来筛选 哪些人是坚持的,珍惜的,渴望的,享受的,平和的,自信的,勇敢的,伟大的;

我的学习建议和风格

简单题目简单过 关键在多次实现 和最后的检验通过还有背后思想的把握。

抓住工程 实现的精髓 而不是在最开始学习语法的阶段 纠结如何实现 说实话 这其实并没有任何的意义

#include <stdio.h>  
#include <string.h>  
//逆转字符串
char* Reverse(char *str, int len)
{
    if(str == NULL || len <= 0)
        return str;
    char *pLast = str + len - 1;
    char *pBegin = str;
    while(pBegin < pLast)
    {   
        char temp = *pBegin;
        *pBegin = *pLast;
        *pLast = temp;
        ++ pBegin;
        -- pLast;
    }   
    return str;
}
 
//逆转句子
char * ReverseSentence(char *str)
{
    if(str == NULL)
    {   
        return str;
    }   
    //逆转整个句子
    Reverse(str, strlen(str));
    //逆转各个单词
    char *pBegin = str;
    char *pEnd = str;
    while(*pEnd != '\0')
    {   
        while(*pEnd != '\0' && *pEnd != ' ')
            ++pEnd;
        //逆转单词
        Reverse(pBegin, pEnd - pBegin);
        if(*pEnd == '\0')
        {
            break;
        }
        ++pEnd;
        pBegin = pEnd;
    }
    return str;
}
 
int main()
{
    char str1[] = "";
    char str2[] = "a";
    char str3[] = "abc";
    char str4[] = "I am a student";
    if(strcmp(ReverseSentence(str1), "") == 0
            || strcmp(ReverseSentence(str2), "a") == 0
            || strcmp(ReverseSentence(str3), "abc") == 0
            || strcmp(ReverseSentence(str4), "student a am I") == 0
            )
    {
        printf("reverse sentence ok\n");
    }
    return 0;
}


我只能说高下立判 The gap in code readability and algorithmic complexity is obvious

# include <iostream>
# include <cstring>

using namespace std;

int main() {
    char words[3][101];
    for (int i=0; i<3; i++)
        scanf("%s", words[i]);
    
    printf("%s %s %s", words[2], words[1], words[0]);
    
    return 0;
}

默写对比
int main() {
    // 请补全代码,实现题目功能
    char words[3][101];
    for (int i=0;i<3;i++)
        cin<<words[i];//愚蠢的错误
    printf("%s %s %s",words[2],words[1],words[0]);
    return 0;
}

总结:看来printf确实是一个比cout要高级的语法

别扭

请添加图片描述

低级错误

  • Cin and cout >> or <<
  • 函数声明中间的; or ,;

目前可以实现的公开的情报

img

判断大小

加减法

位运算

排序

成就时刻

打印三角形

人间真实

汉诺塔都不会·

#include <bits/stdc++.h>
using namespace std; 

void hanoi(int N,char source, char relay, char destination){
    if (N==1)
        cout<< source<<" -> " <<destination << endl;
    else {
        hanoi(N-1,source,destination,relay);
        cout <<source <<" -> " <<destination <<endl;
        hanoi(N-1,relay,source,destination);
    }
}

int main() {
    // 请补全代码,实现题目功能
    int n;
    cin>>n;

    hanoi(n,'A','B','C');
    return 0;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值