码迷,mamicode.com
首页 > 其他好文 > 详细

J - 下落的树叶 ( 输入函数要有返回值!)

时间:2018-12-31 17:31:21      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:space   空指针   出现   set   超出   ring   key   turn   bsp   

题目见紫书p161

re,一直re,re到怀疑人生

刚开始出现re的时候怀疑是数组开的不够大

但一直都修改不行

 

结果是,  , , ,输入函数bool函数没加返回值 return true;

所以re时 ,可能

①除以零 

②数组越界:int a[3]; a[10000000]=10;

③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;(特别是空指针!)

④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;

⑤数组(在函数内)开得太大,超出了栈的范围,造成栈溢出:int a[100000000];

再加一项 圈6 非void的函数没有返回值(特别是bool)

#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;

int p[1000];
int lmax=500,rmax=500;
bool sum(int u,int lp){
    int r,l;
    p[lp]+=u;    
    scanf("%d",&l);
    if(l!=-1)sum(l,lp-1);
    scanf("%d",&r);
    if(r!=-1)sum(r,lp+1);
    if(lp<lmax)lmax=lp;
    if(lp>rmax)rmax=lp;
    return true; //<---就是这里!!!要加的
}
int main(){
    int root,j=1;
    memset(p,0,sizeof(p));
    while(j){
    lmax=500;rmax=500;
    scanf("%d",&root);
    if(root==-1)break;
    sum(root,500);
    printf("Case %d:\n",j++);
    for(int i=lmax;i<=rmax;i++)
    if(i==lmax)
    printf("%d",p[i]);
    else printf(" %d",p[i]);
    printf("\n\n");
    memset(p,0,sizeof(p));
    
    }
    
       return 0;
}

 

J - 下落的树叶 ( 输入函数要有返回值!)

标签:space   空指针   出现   set   超出   ring   key   turn   bsp   

原文地址:https://www.cnblogs.com/-ifrush/p/10202201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!