C++座位预留功能开发:存储用户选座并标记为**的问题咨询
问题原因
- 座位初始化时每个编号后自带空格(如
"A1 "),用户输入座位号时不会携带末尾空格,字符串匹配永远失败,无法标记选中座位 - 定义的4行4列座位数组仅初始化了前2行,剩余2行内容为空,展示异常
- 预留标记
**没有补位空格,会导致后续布局错位
修复后完整代码
#include <iostream> using namespace std; const int r=4; //全局常量:行数 const int c=4; //全局常量:列数 void fun(string arr[r][c]) //展示座位布局+处理选座 { string seat; string taken="**"; // 展示初始座位布局 for(int i=0;i<r;i++) { if(i==1) { cout<<"Next Row"<<endl; } for(int j=0;j<c;j++) { cout<<arr[i][j]<<" "; // 打印时手动补空格,保证对齐 } cout<<endl; } // 接收用户选座 cout<<"Which seat would you like?"<<endl; cin>>seat; // 标记座位并更新布局 for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { if (seat==arr[i][j]) { arr[i][j]=taken; cout<<"座位"<<seat<<"已成功预留"<<endl; } cout<<arr[i][j]<<" "; } cout<<endl; } } int main(){ // 补全4行座位初始化,去掉编号末尾空格 string arr[4][4]={ {"A1","A2","A3","A4"}, {"B1","B2","B3","B4"}, {"C1","C2","C3","C4"}, {"D1","D2","D3","D4"} }; fun(arr); return 0; }
核心修改说明
- 去掉座位初始化时的末尾空格,打印时统一手动补空格,避免用户输入与存储内容不匹配的问题
- 补全4行所有座位的初始化内容,避免空行展示异常
- 增加选座成功提示,优化交互体验
- 统一打印补空格逻辑,保证预留标记
**展示后布局依然对齐
内容的提问来源于stack exchange,提问作者Mackas
相关产品推荐
相关产品推荐

