注册 登录
编程论坛 C++教室

C++问题

keep_on 发布于 2012-12-07 19:35, 434 次点击
为什么最后运行完的时候会弹出一个命令提示框。。。
#include<iostream.h>
#include<string.h>
#define N 2
class User{
    char *name,*tel;
public:
    ~User()
    {
        if (name)
            delete []name;
        if (tel)
            delete []tel;
    }
    char * Getname(){return name;}
    void setUser(char *n="Mike",char *t="18720070000")
    {
        name=new char[strlen(n)+1];
        strcpy(name,n);
        tel=new char[strlen(t)+1];
        strcpy(tel,t);
    }
    void Print(){cout<<name<<'\t'<<tel<<endl;}
};

void main()
{
    User p[N],temp;
    temp.setUser();
    int i,j,k;
    char name[10],tel[15];
    cout<<"请输入用户的姓名和电话号码:"<<endl;
    for(i=0;i<N;i++)
    {
        cout<<"用户"<<i+1<<":";
        cin>>name>>tel;
        p[i].setUser(name,tel);
    }
    for(i=0;i<N-1;i++)
    {
        k=i;
        for(j=i+1;j<N;j++)
        {
            if(strcmp(p[k].Getname(),p[j].Getname())>0)
                k=j;
            temp=p[k];
            p[k]=p[i];
            p[i]=temp;
        }
    }
    cout<<"排列后各用户信息为:"<<endl;
    for(i=0;i<N;i++)
        p[i].Print();
}
6 回复
#2
lyj1232012-12-07 19:37
用gcc自己测试一下,在命令行里


   先占个位置,以后予以详细解答
#3
keep_on2012-12-07 20:24
回复 2楼 lyj123
gcc?不会。。。
#4
wp2319572012-12-07 20:25
估计指针越界或者内存非法访问一类的
#5
keep_on2012-12-07 20:34
回复 4楼 wp231957
我也觉得是这个方面的问题,不过不知道怎么改。。。
#6
wp2319572012-12-07 20:36
自己跟踪2次 或者n次  应该就差不多了
#7
keep_on2012-12-07 22:08
shiguol
1