程序运行出这样的结果 是哪里出了问题啊 (类)
时间:2011-11-28
来源:互联网
C/C++ code
程序运行出这样的结果 是哪里出了问题啊(多出个出生日期,而且字符“语文”也没有对齐)求高人指点!
工号 姓名 性别 出生日期 课程
001 王小儿 女91/5/15 91/5/15 语文
002 李小四 男92/12/15 92/12/15 数学
请按任意键继续. . .
#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 数学
请按任意键继续. . .
作者: fz19910125 发布时间: 2011-11-28
多出个出生日期
cout<<date<<"\t";
cout<<date<<"\t";
作者: ouyh12345 发布时间: 2011-11-28
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; }
这样该就可以了。具体为什么我也说不清。因为编译器的不同,有些东西还是要时间使用的。
作者: ni_meri 发布时间: 2011-11-28
CTeacher::sex 的问题!汉字占两个字节,而 cout 输出时,在碰到 \r \n \0时停止输出,而内存存放sex和date衔接,需要给sex 一个额外的字符来存放 \0
作者: Linux_wlj 发布时间: 2011-11-28
楼上的很正确!学习了!
作者: Og192 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28