-nasher 2021-06-03 19:56 采纳率: 50%
浏览 36
已采纳

c++面向对象编程初学 问题(大佬看我)

#include<iostream>
using namespace std;
class Employee
{protected:char *address,*shi,*province,*post;
public:Employee(char _address[100],char _shi[100],char _province[100],char _post[100]);
void changename();
};

class Name{
protected:
    char firstname[20],lastname[20];
    int x,y,z;
    char *m;
public:
    Name(char *p){
        cin>>firstname>>lastname;
        p=firstname;
        for(int i=0;i<20;i++)
        {
        if(p[i]='\0')
            x=i;break;
        }
    z=0;
        for(int i=x;i<40;i++)
    {
        p[i]=lastname[z];
        z++;
        if(p[i]='\0')
            break;
    }
        m=p;
    }
    void display()
    {
        for(int i=0;i<40;i++)
        cout<<m[i]<<endl;
    }
}; 
Employee::Employee(char _address[100],char _shi[100],char _province[100],char _post[100])
{address=_address,shi=_shi,province=_province,post=_post;}
void Employee::changename(){}

int main()
{    char *a="no name";
    Name na(a);
    na.display();

}

 

 

 

 

求大佬帮我看看为什么不管输入什么都没输出结果啊??

  • 写回答

4条回答 默认 最新

  • CSDN专家-link 2021-06-03 20:43
    关注
    #include<iostream>
    using namespace std;
    
    class Employee
    {protected:char *address,*shi,*province,*post;
    public:Employee(char _address[100],char _shi[100],char _province[100],char _post[100]);
    	   void changename();
    };
    class Name{
    protected:
    	char firstname[40];
    	char lastname[20];
    	int x,y,z;
    	char *m;
    public:
    	Name(char *p){
    		cin>>firstname>>lastname;
    		p=firstname;
    		for(int i=0;i<20;i++)
    		{
    			if(p[i]=='\0')
    			{
    				x=i;
    				break;
    			}
    		}
    		z=0;
    		for(int i=x;i<40;i++)
    		{
    			p[i]=lastname[z];
    			z++;
    			if(p[i]=='\0')
    				break;
    		}
    		m=p;
    	}
    	void display()
    	{
    		for(int i=0;i<40;i++)
    		{
    			if(m[i] == 0)
    				break;
    			cout<<m[i];
    		}
    	}
    }; 
    Employee::Employee(char _address[100],char _shi[100],char _province[100],char _post[100])
    {address=_address,shi=_shi,province=_province,post=_post;}
    void Employee::changename(){}
    int main()
    {    
        char *a="no name";
        Name na(a);
        na.display();
    }

    if(p[i]=='\0')
                {
                    x=i;
                    break;
                }

    这里要加大括号,不然break不在if里,循环都不继续执行就跳出了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵