青州自学感悟
代码的等价替换
// 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 ,;
目前可以实现的公开的情报
判断大小
加减法
位运算
排序
成就时刻
打印三角形
人间真实
汉诺塔都不会·
#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;
}