注意事项合集【c/c++/java】萌新用

这篇实质上是一个错题集,整理杂乱,适合纯萌新观看

有关编译器dev的

  • 为了让确定编译器可以进行调试,在菜单栏找到 工具-编译选项-代码生成/优化-连接器-产生调试信息-Yes-确定

编译时的红字报错

行 列 单元 信息 分别代表了 错误所在的行 列 文件位置 错误报告
有一些简单的错误举例:

  • main函数写错或已经有编译的程序被打开
    main写错或有程序还开着
  • 在第5行第2个字符处缺少分号’;'但是通常把分号写在对应的上一行末尾
    缺少分号
  • 在第5行第10个字符处的 b 没有被定义
    未定义
  • 在第8行第7个字符处 传参错误 string无法强制转换为int
    传参错误

有关hdu的

  • 使用万能头bits/stdc++.h的代码只能以g++提交 并且可能使用更多的内存和时间
  • c、c++、java、g++等提交各有各的要求,本地成功提交却ce时,注意查看是否提交错误

通用语法知识

  • 运算符
通常有 = == != + - * / ++ -- += -= *= /= % %= 等
赋值 = 
	 ** 注意 ** 
	·这个等号'='和数学上的相等意思不同,它的意思是把 [右边] 赋值给 [左边],
	例如:
	int a,b;
	b = 10;
	a = b + 1;
	这里的代码执行后,先把10给b 所以b的值为10,然后把b + 1给a,所以a的值为10
相等 不等 == != 
	 ** 注意 ** 
	·和等号的问题相同,==容易写成=,而且很难发现
	·==号和!=号会把左边和右边的值进行比较,然后返回一个bool值,表示这次判断的真与假
	例如:
	int n1.n2;
	bool e1,e2;
	n1 = 1;
	n2 = 1;
	e1 = (n1 == n2);
	e2 = (n1 != n2);
	n1和n2的值相等,所以e1的值为true(),e2的值为false()
加减乘除 + - * / 
自增自减 ++ -- 
	 ** 注意 ** 
	·自增自减因为位置的原因有两种情况,这里用自增++举例:
	int i = 0;
	printf("%d %d %d",i++,++i,i);
	这里应该输出 0 2 2
	i++++i的区别,一个是先作为变量,再进行自增,另一个相反
	i++是先变量后自增,所以初始值i为0,输出0后自增为1
	++i是先自增后变量,所以目前值i为1,自增为2后输出2
取模 %
	** 注意 **
	·取模通常的说法有很多 如:
	取模 模 mod % 余 除余
	·取模的意思 就是 a 除以 b 时除不尽留下的除余
	如 10 除以 3 等于 31 所以 10 % 3 的值为 1
语法糖 += -= *= /= %=
	** 注意 **
	·这几个看着和== !=也很像,实际上意思完全不同,反而更接近++ --,这五个语法糖的意思是:
	自加赋值、自减赋值、自乘赋值、自除赋值、自模赋值。
	用+=举例
	int a = 2;
	a += 10;
	这样的代码 a用 “自” 加 “10” 也就等于 12
	类似的可以自行尝试
	

有关C/C++的

  • 万能头文件bits/stdc++.h 包括了大部分的头文件 但是并不是所有 如windows.h
  • c++可以使用c语言的头文件,但是需要把c的头文件后缀.h去掉 并且在前面加上c
    比如特别容易搞混的string.h 和 string 不是同一个头文件,c++使用string.h时应改为cstring
    还有容易少些的ctype.h 其c++格式为cctype
  • 写代码要严谨,每个括号一定要有对应 (){}[],单行代码结束一定要有分号 ;
  • 定义多个变量可以用类似 int a,b,c;的方式来定义
  • 尽量严格遵守有缩进的代码风格,不要为了短小精悍的代码而放弃代码可读性
    如如下两者的对比可明显感受到有无缩进的区别
    无缩进
#include<bits/stdc++.h>
using namespace std;int main() {int a;cin>>a;cout<<a;return 0;}

有缩进

#include<bits/stdc++.h>
using namespace std;
int main() {
	int a;
	cin>>a;
	cout<<a;
	return 0;
}
  • 尽量使用驼峰命名法,一般建议使用小驼峰命名法,即明明时第一个单词字母小写,然后每个字母大写。如新值和旧值分别命名为newValue和oldValue
  • 命名时要尽可能的描述该变量的功能,而不是无脑qwe a b 之类的 很容易降低代码可读性
    具体请百度 流加速
  • 命名时可以进行一定程度的缩写,有一些约定俗成的缩写和指代:
    (但不用严格遵守,只是经常如此被使用)
string str 代表字符串
value val 代表值
flag flg 代表标记
temp tmp 代表常用于交换的标记
count cnt 代表计数
visit vis 代表常用语判断是否访问过的标记
cursor cur 代表常表示位置的标记
initialize init 代表初始化
array arr 数组
number num 数字
row 行
column col 列
point p 指针
char c 字符 (和数据类型的char不同)
i j k h 用于for中的计数器
n m 表示总行数和总列数
x y 表示坐标x y

输入输出

C

  • scanf输入时传值格式如
int a;
scanf("%d",&a);

其中:
1.scanf容易打错成sacnf sancf等。
2.在输入字符串或字符时,要注意输入的回车键本身也是一个字符,可以用getchar();把多余的回车符吃掉
3.能使用字符串%s输入时除了特殊情况尽量不要用字符%c输入
4.scanf的每个输入一定要对应一个变量,不能有如下情况:

int a,b;
scanf("%d %d"&a);

但是一个变量不一定要对应一个输入,可以有这样的情况:

int a,b;
scanf("%d"&a,&b);

但是两者都是不规范的代码格式。
5.输入时数据类型的格式为:

char c,str[10];
scanf("%c %s",&c,str);
int num;
scanf("%d",&num);
long long num;
scanf("%ld",&num);
float num;
scanf("%f",&num;
double num;
scanf("%lf",&num);

所有的输入都要加取地址符 &,但是char类型数组是字符串,用%s输入,可以不加取地址符 &
如果该加的取地址符 & 没加 则会导致无法输入(输入直接停止程序)

  • printf输出时传值格式如
int a;
printf("%d",a);

其中:
1.printf容易打错成pirnt prnit等。
2.输出时数据类型的格式和scanf一样,但是全都不要加取地址符 & 除非你需要输出它的地址。
3.输出时double使用%f输出,(当然也可以使用%lf)
4.输出时输出和输入数量都可以不互相对应,但是都是不规范的代码格式。
5.输出时有各种各样的格式,类似于:
正常输出

printf("123%d",456);

每个数字后有一个空格

int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;++i){
	printf("%d ",arr[i]);
}

每个数字间有一个空格

bool space = false;
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;++i){
	if(!space)space = true;
	else printf(" ");
	printf("%d",arr[i]);
}

其他一般格式均可参考以上

C++

  • 使用cin cout 进行输入输出,无故超时,可以试试
ios::sync_with_stdio(false);
cin.tie(0);

常用类型

bool //布尔型 数据范围为0~1 一般可以认为true和false或者真和假
char //字符型 储存ascii码值 数据范围为-128到127
int //整形 数据范围为-2^31到2^31-1
long long //长整形 数据范围为-2^63到2^63-1
float //浮点型 数值范围为 -3.4E-38到3.4E+38
double //双精度浮点型 数据范围为-1.7E-308到1.7E308

常用容器

string//字符串
vector//动态数组
queue//队列
deque//双向队列
stack//栈
map//映射
set//集合

常用头文件

C

stdio.h
string.g
stdlib.h
ctype.h
math.h

C++

iostream
iomanip
algorithm
string
queue
deque
stack
vector
map
set

方便的快捷键:

通用:

windows之外的系统不一定可用
不同软件以软件快捷键为准
这里指的是大部分软件都可行的快捷键

  • Home 句首
  • End 句尾
  • PgUp(PageUp)上一页
  • PgDn(PageDown)下一页
  • Insert 切换光标状态
  • Delete 删除
  • Ctrl + Home 最前
  • Ctrl + End 最后
  • Ctrl + C 复制
  • Ctrl + V 粘贴
  • Ctrl + A 全选
  • Ctrl + X 剪切
  • Ctrl + Z 撤销
  • Ctrl + S 保存
  • Ctrl + N 新一页
  • Ctrl + W 关闭页面
  • Ctrl + F 查找
  • Shift [按住] + 任意字母 大写
  • Ctrl + Tab 切换界面
  • Alt + Tab 切换窗口
  • Ctrl + Alt + Delete 打开安全选项或直接打开任务管理器
  • Win + 大键盘数字键 打开任务栏对应的窗体
  • Win + Tab 切换窗口和桌面(可预览)

dev:

  • F5 调试已编译的程序
  • F7 调试时 快捷下一步
  • F9 编译当前程序
  • F10 运行当前程序
  • F11 编译并运行当前程序
  • F12 重新编译所有程序
  • Ctrl + / 注释选中的所有行 (使用单行注释 //)
  • Ctrl + : 注释选中的所有内容 (使用多行注释/* */)
  • Ctrl + Shift + ↑或↓ 移动选中的行
  • Ctrl + Shift + A 代码自动格式化
  • Alt + 左键按住选中 选中一个给定的方框,并使用多行处理的光标
发布了15 篇原创文章 · 获赞 2 · 访问量 727

猜你喜欢

转载自blog.csdn.net/weixin_44579869/article/details/102380924