标题:在主函数中,为什么我的for不能结束循环?还会出现死循环?
只看楼主
林家的姑娘
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2016-10-16
结帖率:66.67%
已结贴  问题点数:10 回复次数:10 
在主函数中,为什么我的for不能结束循环?还会出现死循环?
#include<iostream.h>
#include<string.h>
//日期类
class Date
{
    public:
        int year,month,day;
    Date(int y=2000,int m=1,int d=1)    //构造函数,日期
    {
        year=y;
        month=m;
        day=d;
    }
    void showday( )
    {
        cout<<year<<"."<<month<<"."<<day<<endl;
    }

};
int Num=0;//全局变量
class Teacher//老师类
{
public:
    int  num;//编号
    char name[10];//名字
    char sex[2];//性别

    Date birthday;//成员生日
    Teacher(char name[],char [],int Num,int y,int m,int d);//构造函数,名字,
    int getnum( );
    void show( );


};

Teacher::Teacher(char n[], char s[],int Num,int y,int m,int d):birthday(y,m,d)//构造函数
{
    Num++;
    num=Num;
    strcpy(name,n);
    strcpy(sex,s);
}
void Teacher::show( )
{
    cout<<"编号,名字,性别"<<endl;
    cout<<num<<":"<<name<<" "<<sex<<endl;
    cout<<"生日:"<<endl;
    birthday.showday( );
}

int  Teacher::getnum()//成员函数,编号
{
   
    return num;
}




void main()
{

    char name[10],sex[2];
    char A[2]=A;
    int year,month,day;
    for(int i=0; ;i++)
 {

        cout<<"请输入姓名:"<<endl;
        cin>>name;
       if(name==A)
           break;

        cout<<"请输入性别:"<<endl;
        cin>>sex;

        cout<<"请输入生日:"<<endl;
        cin>>year>>month>>day;
   
        Teacher  t1(name,sex,Num,year,month,day);//调用构造函数
        t1.show( );
 }
}


[此贴子已经被作者于2016-10-18 23:01编辑过]

搜索更多相关主题的帖子: include public 生日 
2016-10-18 22:56
U201010009
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:73
专家分:178
注 册:2013-2-25
得分:2 
给你个C++Primer中文版的书看看,里面很详细(这是我的360云盘分享的)
https:// (提取码:3631)
2016-10-19 10:12
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:2 
  if(name==A)  这个有问题吧

DO IT YOURSELF !
2016-10-19 10:15
鸿蒙之灵
Rank: 4
来 自:异次元裂缝
等 级:贵宾
威 望:11
帖 子:126
专家分:244
注 册:2016-8-22
得分:2 
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。

再者  char A[2]=A;  这一句楼主想要干什么,是将A作为数组元素赋值给A[2]数组中的第一个,即达到A[0]=‘A’的效果??你这编译能通过?

for(int i=0; ;i++)  和  if(name==A)break;搭配控制循环,本身就不够严谨,如果你的 name 永远都 !=A ,你的循环怎么结束?而事实上,你的name是指向大小为10的数组name[10],你的A是指向大小为2的数组A[2],指向不同大小,不同存储空间的两个数组的指针,无论你输入的姓名是不是A,if(name==A)的值都不会是真,而你的for语句循环控制语句中,第二句为空语句,结合上面的两点,你的程序会出现死循环。

对待编程,要像对待情人一样
2016-10-19 11:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
char A[2]=A;
这能编译通过?
2016-10-19 15:19
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:2 
如果希望那个A是常量的话要先自己定义才行。
2016-10-20 21:19
lin_jun_cai
Rank: 2
等 级:论坛游民
帖 子:9
专家分:23
注 册:2016-5-14
得分:2 
程序都没能编译通过
2016-10-21 09:19
starlz
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2016-10-22
得分:2 
新手的建议,提问题一定要先把问题描述清楚,大神们才能知道你想要干什么。。。这么呼啦上来一堆,咋看啊
2016-10-24 22:45
笨笨笨A梦
Rank: 2
等 级:论坛游民
威 望:1
帖 子:6
专家分:10
注 册:2016-10-26
得分:0 
不会出现死循环吧!
2016-10-26 10:49
starlz
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2016-10-22
得分:0 
#include<iostream>
#include<string>
using namespace std;
class Date
{
    int year, month, day;
public:
    Date() :year(2000), month(0), day(0){}
    Date(int y, int m, int d){ year = y; month = m; day = d; }
    friend istream &operator>>(istream &is, Date &d){ is >> d.year >> d.month >> d.day; return is; }
    friend ostream &operator<<(ostream &os, Date &d){ os << d.year << "." << d.month << "." << d.day; return os; }
};
class Teacher
{
public:
    static int num;
    string name;
    string sex;
    Date birthday;
    Teacher(){};
    void setteacher();
    void showteacher();
};
int Teacher::num = 0;
void Teacher::setteacher()
{
    cout << "input:teache's name,sex,birthday" << endl;
    cin >> name >> sex >> birthday;
    num++;
}
void Teacher::showteacher()
{
    cout << num << name << sex << birthday << endl;
}
void main()
{
    Teacher t;
    t.setteacher();
    t.showteacher();
}
2016-10-26 16:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469962-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.475586 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved