C语言常见基础错误大全总结
1.语句分号错误,引号后忘记加逗号,大小写错误scanf("%c",&a);2.输入中的取地址符错误int a;scanf("%d", &a);//&a 表示变量 a 的地址,&是取地址符char a;scanf("%c",&a);char a[100];scanf("%s",a);3.类型及其范围是否错误。这里只给整型。前提:一个字节=8位int、long
1.语句分号错误,引号后忘记加逗号,大小写错误
scanf("%c"&a);
2.输入中的取地址符错误
int a;
scanf("%d", &a); //&a 表示变量 a 的地址,&是取地址符
char a;
scanf("%c",&a);
char a[100];
scanf("%s",a);
3.类型及其范围是否错误。
这里只给整型。
前提:一个字节=8位
int、long、long long取值范围
short int 1个字节储存
short int -128~127
unsigned short int 0~255
int 2个字节储存
int 2147483648~2147483647
unsigned int 0~4294967295
long 4个字节储存
long 2147483648~2147483647
unsigned long 0~4294967295
long long int 8个字节储存 【VC6.0++不支持long long 整型】
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
Int64是有符号 64 位整数数据类型,相当于C++中的long long
__int64的最大值: 9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
不同的编译器,占据的字节也不同,编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节。
4.double为整形float有小数
输出结果位0.000的时候,可能是%lf,%f的错误。
5.(%-10.3lf)中10代表此数一共几位,3代表一共小数点后几位。
负号代表数位于左边,右补空格。小数遵循四舍五入。
6.printf(""%c"\n",a);如何输出双引号?
用斜杠转移,但是\n中的也会发挥作用。
7.printf("%d%%%d%%%d\n",a,b,c)。两个百分号当成一个符号输出。
8.以十六进制输出(字母小写%x),以十六进制输出(字母大写%X)。
各种进制输出
#include<stdio.h>
int main()
{
int number = 12;
float f = 12.0;
printf("十进制输出:%d\n", number);
printf("十进制输出:%i\n", number);
printf("八进制输出:%o\n", number);
printf("十六进制输出:%x\n", number);
printf("输出地址:%p\n", &number);
printf("浮点数输出:%f\n", f);
return 0;
}
十进制输出:12
十进制输出:12
八进制输出:14
十六进制输出:c
输出地址:0022FEE8
浮点数输出:12.000000
9,
①.八进制靠右输出,不足 8 位左补 0 并在两端添加星号包裹printf("%08o\n",a);
②.以八进制靠左输出,不足 8 位右补空格并在两端添加星号包裹。
printf("*%-8o*\n",a);
不要把*输入到\n之后。%-8o负号一定是在%之后。%08d十进制8位靠右左补0。%-8d十进制8位靠左右空格。
10.输入格式和规定格式不匹配,无法输入正确数据。
11.case 1:符号不要搞错,case的结束要有break; 整体语句结束要有default,注意同情况是可以合并的。
switch(表达式){
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
......
......
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
程序会计算表达式里的值,然后和所有的常量表达式进行比较,遇到和常量表达式的值相等的,则从相应的case往下执行,直到结束或遇到break,跳出该switch,如果没有遇到相同的常量表达式,则从default往下执行,直到结束或遇到break,跳出该switch
13.for循环中条件和里面循环语句都要分号。
break跳出一层循环,continute是跳过一次循环。
14.下面用到的数据一定在开始先声明。
15.scanf的地址符号总是忘,打印的换行也总是忘。
16.赋值时左右整反,==号总写成一个。
17.4i-1中忽略了乘号。(double)1/(4*i-3)限制数据输出类型。
18.输入格式的正确,输出格式,多次运算检验。
19.如果把实数型赋值给整形得到结果为0。
20;要求数据类型有小数则就用double,否则float容易出错。
21.多个{对应一个},漏掉符号的一半错误。
22.return 0/-1可以表示是否满足条件,但是执行一个不再继续。
return 0:一般用在主函数结束时,按照程序开发的一般惯例,表示成功完成本函数。
return -1::表示返回一个代数值,一般用在子函数结尾。按照程序开发的一般惯例,表示该函数失败;
23.while(scanf("%d",&n)!=EOF&&(n)),输入单个数据0结束
while(scanf("%d%d",&n,&m)!=EOF&&(m||n)),输入0 0结束
24.循环结束后是i+1不满足条件的,继续往下进行。
25.&&表示的是并且。||表示或者。'A’单引号为ASCIIL码值,一般表示字母范围用这种表示方法。
26.ASCIIL的值,大写字母小,小写字母大,相差32.
27.puts(a);输出整个句包括空格,printf不适合句子,适合连续单词。a[i]=a[i]-32;可以表示A码值变化。
28.由于if都会执行一遍,则可能会同一个需要判断的事件,会进入2个if语句中,出现错误,而else if就不会发生这样的事情。
29.while(scanf("%s %c",a,&b)!=EOF)多组输入,字符串和单个字符。
30.字符数组指定什么就会定义什么,不会多加,除非你给他的是字符串他会多加\0,如果字符数组空间多余了,多余的部分存\0.
31。 空格、回车可以作为字符%c读入,占一个空,一般数据输不进去,特别是字符,那么考虑加一个getchar();吃掉回车。
29.强制类型转换是通过类型转换运算来实现的。
其一般形式为:(类型说明符)表达式.其功能是把表达式的运算结果强制转换成类型说明符所表示的类型
30。%lf %.2lf不轻易省掉。
%.2lf在printf()里表示按下面格式输出一个long double型数:整数部分输出全部输出小数部分输出2位,没有小数的输出两个0,不足两位的后面补0,大于两位的截短到两位。
%.2f在printf()里按下面格式输出一个浮点型数,整数部分输出全部输出小数部分输出2位,没有小数的输出两个0,不足两位的后面补0,大于两位的截短到两位。
31。3/2=1;
①.计算算术表达式结果时,相同数据类型的数据/变量进行运算,结果保持原有数据类型。
②.当不同数据类型的数据/变量进行运算时,结果为精度高的数据类型。(a+b+c)/3.0此时为浮点型数据,可以确定保留位数
32,多次任务时,上次的任务数据没有清零,造成下次任务错误。
33.if(str1[i]>=‘0’&&str1[i]<=‘9’)中数字没有变成字符,导致进不去。
34for(j=0; j<n; j++)
{
if(room[i].sum>85)一个循环中放置另一个变量;
}
35.>=的边界易错
36people[1000];数组范围错
37,嵌套循环不宜用同一变量。
38.(bb-4ac))/2a左结合;
39,多组输入,和多次输入,一定要初始化
40.一年有12个月,其中每个月的天数是:
①每个月31天的有1月、3月、5月、7月、8月、10月、12月,一共是七个月;
②每月30天的有 4月、6月、9月、11月共四个月;
③2月是平月(二十八天)或者是闰月(二十九天)。
41.自增自减问题
42.调试问题总结
①调试时一定要注意分析结果,和结果进行比较,分析出,出错位置可能在那个位置。
②cin>>a,输入类型错误,如果输入字符串,则必须定义a为char类型的数组;
③有些部分没有想好就写上了,单纯的背上了,或者形成习惯模板,修改不完整,导致出现错误
④定义变量就要考虑初始化,特别是计数变量,或者多组输入;
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)