一个简单的程序出问题了,重启了好多次!

lllena 2010-09-15 10:51:56
我想写一个能输入小于100关于学生姓名,性别,生日,电话,然后输出的程序。但是总是会出问题。我把源代码放上来,请各位大虾帮帮忙!

#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;

int main() {
const int MAX_STUDENTS = 100;

string student_names[MAX_STUDENTS];
string student_sex[MAX_STUDENTS];
string student_birthday[MAX_STUDENTS];
double student_tel[MAX_STUDENTS];
int student_count = 0;

char answer = 'n';

do {
cout << "Enter a student's name: ";
cin >> student_names[student_count];

cout << "Enter a student's sex: ";
cin >> student_sex[student_count];

cout << "Enter a student's birthday: ";
cin >> student_birthday[student_count];

cout << "Enter a student's tel: ";
cin >> student_tel[student_count];
student_count++;

cout << "Do you wish to enter another student's details (y/n): ";
cin >> answer;
} while (tolower(answer) == 'y' && student_count < MAX_STUDENTS);

if(student_count == MAX_STUDENTS)
cout << endl << "Maximum number of students reached." << endl;
for(int i = 0; i < student_count ; i++)
cout << endl << student_names[i] << "\t\t" << student_sex[i]
<<student_sex[i]<<"\t"<<student_birthday[i]<<"\t"<<student_tel[i];
cout << endl;
return 0;
}

有好几次是一运行就一直不动了,怎么关也关不掉。
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nazzon2004 2010-09-16
  • 打赏
  • 举报
回复
感觉cin和mail不是一个线程。
shenchenman 2010-09-16
  • 打赏
  • 举报
回复
7楼说出了几个程序的小问题,我再补充一下,double student_tel[MAX_STUDENTS]这个东东,测试的时候,如果输入字符的话(比如111-11111111),不是中断就是自动循环下去,建议就改成string吧
thegreatone 2010-09-16
  • 打赏
  • 举报
回复
建议如下:1、输出的时候,你student_sex[i]输出了两次,修改如下:
for(int i = 0; i < student_count ; i++)
cout << endl << student_names[i] << "\t"<<student_sex[i]<<"\t"<<student_birthday[i]<<"\t"<<student_tel[i];
cout << endl;
2、学生手机号码建议使用string student_tel[MAX_STUDENTS],如果是double的话,你的输出将是科学表示法显示。
天上游的鱼 2010-09-15
  • 打赏
  • 举报
回复
没看出什么问题,电话号码怎么用double类型了?
都用了那么多string,还不如连电话号码也string...
  • 打赏
  • 举报
回复
话说我怎么就运行的好好啊
zhfish 2010-09-15
  • 打赏
  • 举报
回复
运行没问题..是不是MAX_STUDENTS搞太大了..
lllena 2010-09-15
  • 打赏
  • 举报
回复
但是要两个满足才能达到要求呀!加入是一个的话,那么在student_count=99,我再选择y那又会怎么样?
  • 打赏
  • 举报
回复
死循环了
while (tolower(answer) == 'y' && student_count < MAX_STUDENTS); //同时满足

while (tolower(answer) == 'y' || student_count < MAX_STUDENTS); //有一个满足

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧