c++的cout函数不输出

问题遇到的现象和发生背景:cout函数不输出
问题相关代码:
#include<iostream>
using namespace std;
int main()
{
    cout <<"星期几?" << endl;
    int d;
    cin>>d;
    switch(d)
    {
        case 1:
            cout<< endl<<"数学"<<endl << "语文"<<endl<< "班队会"<<endl<<"体育"<<endl<<"道德与法治"<<endl<<"健康/书法(硬)"<<endl<<"劳动";
            break;
        case 2:
            cout<< endl<<"数学"<<endl << "英语"<<endl<< "语文"<<endl<<"语文"<<endl<<"美术"<<endl<<"道德与法治"<<endl<<"体育";
            break;
        case 3:
            cout<< endl<<"音乐"<<endl << "数学"<<endl<< "体育"<<endl<<"科学"<<endl<<"语文"<<endl<<"英语"<<endl<<"实践";
            break;
        case 4:
            cout<< endl<<"语文"<<endl << "数学"<<endl<< "体育"<<endl<<"英语"<<endl<<"科学"<<endl<<"数学"<<endl<<"实践";
            break;
        case 5:
            cout<< endl<<"英语" <<endl<<"语文"<<endl<<"美术"<<endl<< "音乐"<<endl <<"软笔/心理"<<endl<<"信息与科技"<<endl<<"体育";
            break;
    }
    cout<<endl; 
    system("pause");
    return 0;
}
运行结果及报错内容 :最后一个cout函数不输出
我的解答思路和尝试过的方法 :删掉
system("pause");
我想要达到的结果:输出最后一个cout函数
我用的是5.11版

switch语句,里面添加上default看看。

楼主是想在输出每个案例后换行分隔吧!其实楼主后面的cout函数已经输出了,只是你在每个案例后面没加:<<endl刚好被覆盖了。
case 5:
cout << endl << "英语" << endl << "语文" << endl << "美术" << endl << "音乐" << endl << "软笔/心理" << endl << "信息与科技" << endl << "体育"<<endl;
break;
}
cout << endl;

输出:

cout<<endl;

是这个意思吗?

打断点调试一下,看执行了没有

cout<<endl就是换行,你的这个输出已经换行了的

不太理解题主的意思,最后的cout<< endl; 无论是星期1-5,还是星期6,7均正常输出,如下:

img

img

什么叫最后一个cout函数不输出,把你的问题描述清楚。

因为输入的天数只有一个,所以只需要在对应输出的后面再输出一个换行就可以了。


#include<iostream>
using namespace std;
int main()
{
    cout <<"星期几?" << endl;
    int d;
    cin>>d;
    switch(d)
    {
        case 1:
            cout<< endl<<"数学"<<endl << "语文"<<endl<< "班队会"<<endl<<"体育"<<endl<<"道德与法治"<<endl<<"健康/书法(硬)"<<endl<<"劳动"<<endl;
            break;
        case 2:
            cout<< endl<<"数学"<<endl << "英语"<<endl<< "语文"<<endl<<"语文"<<endl<<"美术"<<endl<<"道德与法治"<<endl<<"体育"<<endl;
            break;
        case 3:
            cout<< endl<<"音乐"<<endl << "数学"<<endl<< "体育"<<endl<<"科学"<<endl<<"语文"<<endl<<"英语"<<endl<<"实践"<<endl;
            break;
        case 4:
            cout<< endl<<"语文"<<endl << "数学"<<endl<< "体育"<<endl<<"英语"<<endl<<"科学"<<endl<<"数学"<<endl<<"实践"<<endl;
            break;
        case 5:
            cout<< endl<<"英语" <<endl<<"语文"<<endl<<"美术"<<endl<< "音乐"<<endl <<"软笔/心理"<<endl<<"信息与科技"<<endl<<"体育"<<endl;
            break;
    }
    return 0;
}

运行出来结果是这样:

img

如果是您想要的结果,那就请采纳一下吧。

cout<<endl就是换行,你的这个输出已经换行了的

在C++中一般在的main函数的return前加system"pause",这样可以清楚的看到输出;而cout<<endl是换行,希望对你有帮助。

调试一下试一试

cout<<endl输出的内容就是换行,不会有具体文字内容

最后一个cout<<endl; 改为 cout<<"\r\n"<<endl;

endl英语意思end of line 也就是一行输出结束,和cout结合使用是换行的意思在这里加不加cout<<endl;都可以的
system("pause") 的作用就是使控制台暂停运行程序,暂停之后会提示你按下任意键继续,这样方便用户梳理程序运行的过程

img


这个问题最后的cout<<endl其实是已经输出了

最后一个cout不是cout<<endl;
endl不是换行吗。
输出换行看不到还是怎么了?

img

最后一个cout<<endl; // 是输出换行的意思。

这是因为 cout 并不是直接输出到黑色窗口里的,而是先把输出的内容存在“缓冲区”,这个缓冲区满了,才会把它里面的内容显示在黑色窗口。(据我了解还有一些情况会显示到黑色窗口)
但是,我们也可以手动让“缓冲区”显示内容——实际上 endl 做的就是先换行,再告诉缓冲区,输出内容。如果你不想换行的话,就写 cout<<"hehe"<<flush, 这也可以告诉缓冲区输出,但和 endl 不同,它不会给你换行。


 cout<<endl;

改为


 cout<<'\n';