请帮我看看这一段代码为什么会卡在输出“新闻标题”然后程序直接结束了?void showNode(Link head) { //查看新闻 Link p = head->next; int choicecc; while (p != nullptr) { if (p == nullptr) { break; } cout << "新闻标题:" << p->data.name << "新闻号:" << p->data.num << " 新闻内容:" << p->data.n << endl; p = p->next; } printf("这是所有的新闻了,输入1返回"); scanf("%d", &choicecc); while(1) if (choicecc == 1) { admin4(); break; } else { printf("重新输入"); } }
时间: 2024-01-29 19:02:51 浏览: 78
这段代码会卡在输出“新闻标题”后面的原因是因为在while循环中,if语句的条件判断不正确,导致程序直接跳出了循环。具体来说,if语句的条件判断为“if (p == nullptr)”,但是在while循环中已经判断了“p != nullptr”,因此这个if语句永远不会成立,导致程序直接跳出循环,执行后面的代码。解决这个问题的方法是将if语句中的条件判断改为“if (p->next == nullptr)”即可。另外,最后一个while循环也存在问题,应该加上一个scanf语句,否则会出现死循环。修改后的代码如下:
void showNode(Link head) {
//查看新闻
Link p = head->next;
int choicecc;
while (p != nullptr)
{
cout << "新闻标题:" << p->data.name << "新闻号:" << p->data.num << " 新闻内容:" << p->data.n << endl;
p = p->next;
}
printf("这是所有的新闻了,输入1返回");
scanf("%d", &choicecc);
while(1) {
if (choicecc == 1) {
admin4();
break;
}
else {
printf("重新输入");
scanf("%d", &choicecc);
}
}
}
阅读全文