程序运行出这样的结果 是哪里出了问题啊 (类)
- C/C++ code
#include "stdafx.h"#include "iostream"#include "string"using namespace std;class CTeacher{private: char ID[10]; char name[10]; char sex[2]; char date[15]; char kc[10];public: void TeacherInfo(char*,char*,char*,char*,char*); void OutTeacher();};void CTeacher::TeacherInfo(char* id,char* xm,char* xb,char* rq,char* xk){ strcpy(ID,id); strcpy(name,xm); strcpy(sex,xb); strcpy(date,rq); strcpy(kc,xk);}void CTeacher::OutTeacher(){ cout<<ID<<"\t"; cout<<name<<"\t"; cout<<sex<<"\t"; cout<<date<<"\t"; cout<<kc<<"\t"<<endl;}int _tmain(int argc, _TCHAR* argv[]){ cout<<"工号\t姓名\t性别\t\t出生日期\t课程\t"<<endl; CTeacher wg; wg.TeacherInfo("001","王小儿","女","91/5/15","语文"); wg.OutTeacher(); CTeacher hc; hc.TeacherInfo("002","李小四","男","92/12/15","数学"); hc.OutTeacher(); system("pause"); return 0;}程序运行出这样的结果 是哪里出了问题啊(多出个出生日期,而且字符“语文”也没有对齐)求高人指点!
工号 姓名 性别 出生日期 课程
001 王小儿 女91/5/15 91/5/15 语文
002 李小四 男92/12/15 92/12/15 数学
请按任意键继续. . .
[解决办法]
多出个出生日期
cout<<date<<"\t";
[解决办法]
- C/C++ code
// 222.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include "iostream"#include "string"using namespace std;class CTeacher{private: char ID[10]; char name[10]; char sex[3]; //加一个位置存放'\0' char date[15]; char kc[10];public: void TeacherInfo(char*,char*,char*,char*,char*); void OutTeacher();};void CTeacher::TeacherInfo(char* id,char* xm,char* xb,char* rq,char* xk){ strcpy(ID,id); strcpy(name,xm); strcpy(sex,xb); strcpy(date,rq); strcpy(kc,xk);}void CTeacher::OutTeacher(){ cout<<ID<<"\t"; cout<<name<<"\t"; cout<<sex<<"\t"; cout<<date<<"\t"; cout<<kc<<"\t"<<endl;}int _tmain(int argc, _TCHAR* argv[]){ cout<<"工号\t姓名\t性别\t出生日期\t课程\t"<<endl; CTeacher wg; wg.TeacherInfo("001","王小儿","女","91/05/15","语文"); //日期上加了一位,应该注意跳格键开始的位置,和跳过的格数 wg.OutTeacher(); CTeacher hc; hc.TeacherInfo("002","李小四","男","92/12/15","数学"); hc.OutTeacher(); system("pause"); return 0;}
[解决办法]
CTeacher::sex 的问题!汉字占两个字节,而 cout 输出时,在碰到 \r \n \0时停止输出,而内存存放sex和date衔接,需要给sex 一个额外的字符来存放 \0
[解决办法]
楼上的很正确!学习了!