修改(一个found一个错)
程序改错题,在found处找错,不要偏离位置,一个found就一个错,不会多。一般1-3个found。
以下是我对改错题常见错误的一个归类,希望可以帮到大家,多争取时间,多拿几分。后面标的页数Pn是对应未来教育出版的《上机考试题库二级C》
- 书写错误
- 赋值等号=与比较等号==的错用(常在if语句中) P71,76
if(i%k=0)break;
改成
if(i%k==0)break;
- 符号书写错误(>=错写成=>)P75
if(x[j]=>xa)c++;
改成
if(x[j]>=xa)c++;
- 关键字书写错误(if语句的if写成了大写If,double写成了Double)P64,72
- 变量名书写错误 (num写成了nun)P84
for(i=0;i<nun;i++)
改成
for(i=0;i<num;i++)
- 语句缺少分号(常见于return语句,do···while语句)P78,79,82
return sum
改成
return sum;
- 赋值错误
-
赋值时,强制类型转换错误 P44
p=(NODE)malloc(sizeof(NODE));
改成
p=(NODE*)malloc(sizeof(NODE));
-
赋值时,未进行强制类型转换(计算分数) P58,69
y=1/(i*i);
改成
y=1.0/(i*i);
-
赋值错误(伴随指针变量*a与a的区别,初始化的值错误,链表赋值错误p.h.data.next,指针变量赋值错误,等号两边位置错误,++i与i++搞混,数组下标或者数组名错误) P52,55,80,54,60,62,68,73,82,84,86,89,90,51
eg1
*a=a+1;
改成
(*a)++;
eg2
t=x;x=y;y=t;
改成
t=*x;*x=*y;*y=t;
eg3
sum=1;
改成
sum=0;
eg4
p=h->next;
改成
p=p->next;
eg5
*aver=&ave;
改成
*aver=ave;
-
赋值时,除号’/‘和取余符号’%'的错用P57
aa[i]=m/k;
改成
aa[i]=m%k;
-
定义变量时未初始化 P84,87
int t[N],i,num;
改成
int t[N],i,num=0;
- 函数定义错误
-
定义函数的结尾缺少return语句 P59
;
改成
return 0;
-
函数定义时缺少返回值类型名 P45,51,72,77,79
fun(int n)
改成
double fun(int n)
-
函数定义时返回值类型名错误 P47
int fun(int n)
改成
float fun(int n)
-
函数定义时形参错误 P49,52,55,67
viod fun(int x,int y)
改成
viod fun(int *x,int *y)
-
函数定义时多了分号 P57
viod fun(int x,int y);
改成
viod fun(int x,int y)
-
函数定义时缺少大括号{ P75
int fun(float x[ ],int n)
int j,c=0;
···}
改成
int fun(float x[ ],int n)
{int j,c=0;
···}
- for循环语句错误
- for循环格式错误(需把逗号改成分号) P45
for(i=100,i<=m,i+=100)
改成
for(i=100;i<=m;i+=100)
- for循环控制条件错误(缺少等号,循环次数不对N要改成N-1)P47,69,90
for(i=2;i<n;i++)
改成
for(i=2;i<=n;i++)
- for循环的初始化错误P66
for(i=strlen(t);i;i--)
改成
for(i=strlen(t)-1;i;i--)
- switch语句错误
- switch语句后面的表达式错误 P51
switch(s)
改成
switch(*s)
- switch语句多了分号 P87
switch(s[i]);{···}
改成
switch(s[i]){ ···}
- switch的分支语句缺少break P87
switch(s[i]){
{
case 0:zero++;
case 1:one++;
}
改成
switch(s[i]){
{
case 0:zero++;break;
case 1:one++;
}
- while/do···while语句错误
- while语句的判断表达式错误(变量,大于小于号)P60,64
while(i<j)
改成
while(i>j)
- do···while语句缺少分号 P82
do
{···}
while(*p++)
改成
do
{···}
while(*p++);
- if语句错误
- if语句的判断表达式错误(一般是大于号小于号错误)P66,89,90
if(b[i]<a[i][j])···;
改成
if(b[i]>a[i][j])···;
- scanf/printf语句错误
- scanf语句的输入参数缺少取地址符& P54
scanf("%d",a[i][j]);
改成
scanf("%d",&a[i][j]);
- printf语句的输出表列错误 P57
printf("%d",aa[i]);
改成
printf("%d",aa[i-1]);
- return语句错误
-
return返回值错误P44,86
return b;
改成
return t;
-
缺少return语句(一般在函数定义的结尾) P59
-
return语句缺少分号 P78,79
return sum
改成
return sum;
/当然,这只是一个归纳,做程序改错题也需要有能够看懂代码的能力/
喜欢的朋友可以点个赞哦,谢谢支持!
有不足的地方欢迎指出!谢谢大家!
如果对大家有帮助,我会继续努力,更新分享自己刷二级C的经验’^ ^’