读书人

程序运行出这样的结果 是哪里出了有关

发布时间: 2012-02-05 12:07:15 作者: rapoo

程序运行出这样的结果 是哪里出了问题啊 (类)

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
[解决办法]
楼上的很正确!学习了!

读书人网 >C++

热点推荐