1.语句分号错误,引号后忘记加逗号,大小写错误

scanf("%c"&a);

2.输入中的取地址符错误

int a;
scanf("%d", &a);  //&a 表示变量 a 的地址,&是取地址符

char a;
scanf("%c",&a);

char a[100];
scanf("%s",a);

3.类型及其范围是否错误。
这里只给整型。

前提:一个字节=8intlonglong long取值范围

short int 1个字节储存
short int   -128127
unsigned   short int    0255


int 2个字节储存
int   21474836482147483647
unsigned   int    04294967295   


long 4个字节储存 
long   21474836482147483647
unsigned long 04294967295


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类型的数组;
③有些部分没有想好就写上了,单纯的背上了,或者形成习惯模板,修改不完整,导致出现错误
④定义变量就要考虑初始化,特别是计数变量,或者多组输入;

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐