诗岑 2021-05-26 20:14 采纳率: 93%
浏览 38
已采纳

【C语言】请问循环为什么没有起效

有关代码如下:

void home_page()
{
	printf("\n\t\t******************************** \n");
	printf("\t\t     学生成绩信息管理系统       \n\n");
	printf("\t\t        1、录入信息            \n\n");
	printf("\t\t        2、浏览信息            \n\n");
	printf("\t\t        3、查询信息            \n\n");
	printf("\t\t        4、修改信息            \n\n");
	printf("\t\t        5、成绩排序            \n\n");
	printf("\t\t        6、删除信息            \n\n");
	printf("\t\t        7、向文件写入数据       \n\n");
	printf("\t\t        8、从文件读出数据       \n\n");
	printf("\t\t        9、退出系统            \n\n");
	printf("\t\t******************************** \n\n");
}
// add information
int add_infor(STUDENT stu[], int n)
{
	int i = 0;
	char sign = 'Y';

	while ((sign == 'Y') || (sign == 'y'))
	{
		printf("\n\t\t\t学号:");
		scanf("\t\t%s", stu[n + i].num);
		printf("\t\t\t姓名:");
		scanf("\t\t%s", stu[n + i].name);
		printf("\t\t\t成绩:");
		scanf("\t\t%f", &stu[n + i].score);

		printf("\n\t\t\t是否继续录入?(Y/N):");
		sign=getchar();

		i++;
	}

	return (n + i);
}

这里本来是设想输入Y之后就一直可以录入信息,结果它直接回到了主界面,好像并没有进入while循huan

  • 写回答

3条回答 默认 最新

  • 胖哥王老师 单片机领域新星创作者 2021-05-27 10:31
    关注

         

    在getchar之前,需要吃掉之前的回车,常见做法就是如下两行

            //清空缓存
            scanf("%*[^\n]"); 
            scanf("%*c");

    修改之后

    如果有效,请采纳一下,并且检查代码其他地方是否有类似错误

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟