二级C语言-程序修改题常见错误归纳

修改(一个found一个错)

程序改错题,在found处找错,不要偏离位置,一个found就一个错,不会多。一般1-3个found。

以下是我对改错题常见错误的一个归类,希望可以帮到大家,多争取时间,多拿几分。后面标的页数Pn是对应未来教育出版的《上机考试题库二级C》

- 书写错误

  1. 赋值等号=与比较等号==的错用(常在if语句中) P71,76
    if(i%k=0)break;
    改成
    if(i%k==0)break;
  2. 符号书写错误(>=错写成=>)P75
    if(x[j]=>xa)c++;
    改成
    if(x[j]>=xa)c++;
  3. 关键字书写错误(if语句的if写成了大写If,double写成了Double)P64,72
  4. 变量名书写错误 (num写成了nun)P84
    for(i=0;i<nun;i++)
    改成
    for(i=0;i<num;i++)
  5. 语句缺少分号(常见于return语句,do···while语句)P78,79,82
    return sum
    改成
    return sum;

- 赋值错误

  1. 赋值时,强制类型转换错误 P44
    p=(NODE)malloc(sizeof(NODE));
    改成
    p=(NODE*)malloc(sizeof(NODE));

  2. 赋值时,未进行强制类型转换(计算分数) P58,69
    y=1/(i*i);
    改成
    y=1.0/(i*i);

  3. 赋值错误(伴随指针变量*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;

  4. 赋值时,除号’/‘和取余符号’%'的错用P57
    aa[i]=m/k;
    改成
    aa[i]=m%k;

  5. 定义变量时未初始化 P84,87
    int t[N],i,num;
    改成
    int t[N],i,num=0;

- 函数定义错误

  1. 定义函数的结尾缺少return语句 P59
    ;
    改成
    return 0;

  2. 函数定义时缺少返回值类型名 P45,51,72,77,79
    fun(int n)
    改成
    double fun(int n)

  3. 函数定义时返回值类型名错误 P47
    int fun(int n)
    改成
    float fun(int n)

  4. 函数定义时形参错误 P49,52,55,67
    viod fun(int x,int y)
    改成
    viod fun(int *x,int *y)

  5. 函数定义时多了分号 P57
    viod fun(int x,int y);
    改成
    viod fun(int x,int y)

  6. 函数定义时缺少大括号{ P75
    int fun(float x[ ],int n)
    int j,c=0;
    ···}
    改成
    int fun(float x[ ],int n)
    {int j,c=0;
    ···}

- for循环语句错误

  1. for循环格式错误(需把逗号改成分号) P45
    for(i=100,i<=m,i+=100)
    改成
    for(i=100;i<=m;i+=100)
  2. for循环控制条件错误(缺少等号,循环次数不对N要改成N-1)P47,69,90
    for(i=2;i<n;i++)
    改成
    for(i=2;i<=n;i++)
  3. for循环的初始化错误P66
    for(i=strlen(t);i;i--)
    改成
    for(i=strlen(t)-1;i;i--)

- switch语句错误

  1. switch语句后面的表达式错误 P51
    switch(s)
    改成
    switch(*s)
  2. switch语句多了分号 P87
    switch(s[i]);{···}
    改成
    switch(s[i]){ ···}
  3. 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语句错误

  1. while语句的判断表达式错误(变量,大于小于号)P60,64
    while(i<j)
    改成
    while(i>j)
  2. do···while语句缺少分号 P82
    do
    {···}
    while(*p++)
    改成
    do
    {···}
    while(*p++);

- if语句错误

  1. if语句的判断表达式错误(一般是大于号小于号错误)P66,89,90
    if(b[i]<a[i][j])···;
    改成
    if(b[i]>a[i][j])···;

- scanf/printf语句错误

  1. scanf语句的输入参数缺少取地址符& P54
    scanf("%d",a[i][j]);
    改成
    scanf("%d",&a[i][j]);
  2. printf语句的输出表列错误 P57
    printf("%d",aa[i]);
    改成
    printf("%d",aa[i-1]);

- return语句错误

  1. return返回值错误P44,86
    return b;
    改成
    return t;

  2. 缺少return语句(一般在函数定义的结尾) P59

  3. return语句缺少分号 P78,79
    return sum
    改成
    return sum;

/当然,这只是一个归纳,做程序改错题也需要有能够看懂代码的能力/


喜欢的朋友可以点个赞哦,谢谢支持!
有不足的地方欢迎指出!谢谢大家!
如果对大家有帮助,我会继续努力,更新分享自己刷二级C的经验’^ ^’

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值