程序只需要 1 个字母输入并退出,而剩余的代码未执行,为啥?

Posted

技术标签:

【中文标题】程序只需要 1 个字母输入并退出,而剩余的代码未执行,为啥?【英文标题】:Program akes only 1 alphabet input and exits while leaving remaining code unexecuted, why?程序只需要 1 个字母输入并退出,而剩余的代码未执行,为什么? 【发布时间】:2020-07-17 09:59:05 【问题描述】:

当用户输入一个字符并按 enter 进行下一个输入时,输出窗口要求按任意键并退出,请帮助我让剩余的代码正常工作,

这里是代码


char r, R;
char c;

int channels;

int resedential()

    // float channelscost = costperchannel*channels;
    // float Bill = channelscost+processingfee+basiccost;
    // cout << "Dear Customer Here is Your Bill" <<"  "<<Bill<<endl;


int main()

    cout << " Enter Customer Type" << " " << endl;
    cin >> c;

    if( c == r || R )
    
        cout << " Enter Customer Type" << " " << endl;
         cin >> c;
     


【问题讨论】:

不要放代码的图像。放上实际代码。您有复制和粘贴按钮。 图片不可见。而是粘贴代码。 即使图片可见,也不要发布代码的图片。 @underscore_d ''你希望像rRchannels这样的单元化变量包含什么?“因为这些是全局变量 -保证它们是零初始化的。 @underscore_d 变量 rRchannels 未初始化,但您是正确的,OP 有责任意识到它们 初始化,以及何时为什么如何初始化。 【参考方案1】:

我认识到的一件事是,您的 if 语句并没有像您认为的那样做。现在你没有检查 c 是否等于 R。

固定代码:

if(c == r || c == R)

    cout << "Enter Customer Type " << endl;
    cin >> c;

还要检查 r 和 R 中是否存在实际值。因此它不会与常量 (char(0)) 进行比较——ASCII 码 NUL,这是由于文件范围变量的默认初始化为零。

示例:

char r = 'A';
char R = 'B';

【讨论】:

变量cr确实包含null,它们包含ASCII NUL,即(char)0,如果没有显式初始化除此以外。顺便说一句,C++ 中没有 null,但存在一个符合 C 标准的宏符号 NULL 和一个 C++ 原生常量 nullptr @MathewHD 我试图修复一个表达式,这可能会导致变量和常量混淆。请查看(如果新内容不能反映您的意思,请随时恢复)。

以上是关于程序只需要 1 个字母输入并退出,而剩余的代码未执行,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

C# winform 程序中如何限制一个文本框中只输入数字和字母呢?

541-反转字符串 II

Linux文件权限

Python练习题8(替换相同的字符串并输出):输入两个字母串,将两个字母串都包含的字母用'_'替换后,输出两个字母串的剩余部分 (不能为空串,区别大小写,只能包含字母)

541-反转字符串 II

C ++程序取2个句子并找到常用字母?