经常出现的错误和经验总结和一些技巧不定期更新

1
cout<<Maxname<<" "<<MaxID<<endl;
//注意string类型不能用printf输出,否则会出错
//要把字符串类型当做像int 自动变量那样可以写 可以用string类型的数组,
//但是注意此时string类型的输入和输出都只能用cin和cout




//cin该操作符是根据后面变量的类型读取数据。


//输入结束条件 :遇到Enter、Space、Tab键。


2
hour=s1[k]-'\0'-48;break;
// +++++++++++++把字符‘0’和数字0弄混了,直接将字符的ASCII码当做0赋值给hour++++++++++++++
3
#include<Windows.h>  
//标准C++语言没有这个头文件,在OJ上提交时不能加上
4-----
scccanf(str,"%d",&n);/*********将字符类型写入整型中与ASCII码的转化不同
sprintf(str,"%d",n);/****将整型写入字符类型中






5----
printf("%06d",a)
//输出宽度为6不够的补0




6
scanf()函数读到空格回车,跳格结束,对于%c以外的类型而言的
对于%c类型,这些字符都会被读到,所以在读取题目的字符时要注意是否读取正确,还是去取了空格回车等导致错误




7
最重要的区别是gets读一行,getchar()读一个字符。
先看原型:
char * gets(char * ptr);
int getchar(void);
作用是:
gets()用于从标准输入流stdin读入一个整行(以'\n'或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的'\n'从流中取出,但不写入数组。gets()不检查被写入的数组大小。


另外gets是可以读到空格的,但是不能读到回车


getchar()用于从标准输入流stdin读入一个字符,并返回这个字符。如果读到文件结尾,则返回EOF。注意到EOF不能用char类型表示,所以getchar()函数返回的是一个int型的数。使用时也应该注意这一点。






8
putc将字符输出到所指的文件中;
puts:功 能: 送一字符串到流stdout中,puts()函数只能输出字符串,不能数值或进行格式变换。可以将字符串直接写入puts()函数中,输出至屏幕。
putchar(char ch),即将字符ch输出到标准输出设备上。 
 1、 putc是函数, putchar()是在stdio.h里定义的宏; 
  2、 putc是文件操作函数, 而putchar()则是设备操作。




9
字符‘0’到‘9’和‘a’到‘z’,‘A’到‘Z’的ASCII码的关系必须知道如果忘了可以现场检验






10
int main(){
char str[40]={'1','2','3'};
for(int i=0;i<strlen(str);i++){
printf("%d ",str[i]-'\0'-48);//字符变为数字的ASCII码再减去字符变为数字
}
printf("\n%c",1+48+'\0');//将数字变为ascii码加上‘\0'变为字符
system("pause");
    return 0;
}
//str[i]-'0'也可以将字符串中的数字提取出来,可以用来处理大数的运算








11
*错误 2 error C2665: “std::_Debug_range2”: 2 个重载中没有一个可以//  /转//换所有参数类型 d:\vs2010\vc\include\xutility 740*/
sort(0,4)调用参数错误




12
自定义函数中可以调用库函数,如果加了头文件




13
低级错误
scanf(“%d”,n)   取值运算符遗漏
PAT乙级.exe 中的 0x0f9aeffe (msvcr100d.dll) 处最可能的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突  
 




14
           
           /^\/^\
         _|__|  O|
\/     /~     \_/ \
 \____|__________/  \
        \_______      \
               `\     \                 \
                  |     |                  \
                 /      /                    \
                /     /                       \\
              /      /                         \ \
             /     /                            \  \
           /     /             _----_            \   \
          /     /           _-~      ~-_         |   |
         (      (        _-~    _--_    ~-_     _/   |
          \      ~-____-~    _-~    ~-_    ~-_-~    /
            ~-_           _-~          ~-_       _-~   
               ~--______-~                ~-___-~
  


4舍5入的时候打出来的,
int((double)(1.5)+0.5) //入到个位
int((double)(1.55)+0.05) //入到十分位
int((double)(1.5)+0.005) //入到百分位
以此类推




15
//同类型的结构体变量可以直接进行赋值,按照内存空间进行拷贝
//使用结构体数组时如果结构类型内成员有字符串类型可以用这种方法
 //由于结构体在PAT中使用较多,所以这种方法是必杀技




16
//设计浮点数的比较和运算时经常考虑精度的问题,
//例如要求保留两位小数则绝对值小于0.01的都应该当做0处理






17
//运用对10连续取余的方法可以存储一个数字的每一位,代码如下
int a=123436457;
while(a){
printf("%d ",a%10);
a=a/10;

}




18
//若题目所给字符串比如名字,准考证号等字符串的大小为不超过10,则应该设置的字符串大小应该改为11,

我们一般使用字符数组去定义的,但是最后会读到一个字符串里而字符串用‘\0’结尾的,此时会多出一个字符,


19

E:\桌面\Desktop\C++实践\collect2.exe [Error] ld returned 1 exit status

上一次编译运行窗口没有关会出现这样的错误,

猜你喜欢

转载自blog.csdn.net/firesolider/article/details/79437625