C++ 用户在c++;

C++ 用户在c++;,c++,visual-studio-2013,C++,Visual Studio 2013,我想写一个程序,从用户那里获取输入并计算三角形数。还应该有一个选项来询问用户是否希望进行另一次输入或退出,这需要使用while或do…while来完成。我已经编写了以下代码,但没有执行预期的操作: #include <stdio.h> int main(void) { int n, number, triangularNumber; char s = 'Y'; while (s == 'Y') { printf("What triangular

我想写一个程序,从用户那里获取输入并计算三角形数。还应该有一个选项来询问用户是否希望进行另一次输入或退出,这需要使用while或do…while来完成。我已经编写了以下代码,但没有执行预期的操作:

#include <stdio.h>
int main(void)
{
    int n, number, triangularNumber;
    char s = 'Y';
    while (s == 'Y') {
        printf("What triangular number do you want? ");
        scanf("%i", &number);
        triangularNumber = 0;
        for (n = 1; n <= number; ++n)
            triangularNumber += n;
        printf("Triangular number %i is %i\n\n", number, triangularNumber);
        printf("Do you want to continue?\n");
        scanf("%c", &s);
    }
    return 0;
}
#包括
内部主(空)
{
int n,数字,三角形数;
chars='Y';
而(s=='Y'){
printf(“您想要什么三角形数字?”);
scanf(“%i”和编号);
三角形编号=0;

对于(n=1;n两个问题:首先,小写字母和大写字母之间有区别,
'y'!='y'

第二个问题,您在这里看到的是,第一个
scanf
在读取数字的地方,它将换行保留在输入缓冲区中。然后第二个
scanf
调用读取该换行并将其写入变量
s

第一个问题可以通过确保变量
s
的内容是大写字母来轻松解决,方法是:

第二个问题也可以通过在获取字符时要求
scanf
读取并丢弃前导空格来轻松解决,只需在格式代码前添加一个空格即可:

scanf(" %c", &s);
//     ^
//     |
// Note space here

两个问题:首先,小写字母和大写字母之间有区别,
'y'!='y'

第二个问题,您在这里看到的是,第一个
scanf
在读取数字的地方,它将换行保留在输入缓冲区中。然后第二个
scanf
调用读取该换行并将其写入变量
s

第一个问题可以通过确保变量
s
的内容是大写字母来轻松解决,方法是:

第二个问题也可以通过在获取字符时要求
scanf
读取并丢弃前导空格来轻松解决,只需在格式代码前添加一个空格即可:

scanf(" %c", &s);
//     ^
//     |
// Note space here

两个问题:首先,小写字母和大写字母之间有区别,
'y'!='y'

第二个问题,您在这里看到的是,第一个
scanf
在读取数字的地方,它将换行保留在输入缓冲区中。然后第二个
scanf
调用读取该换行并将其写入变量
s

第一个问题可以通过确保变量
s
的内容是大写字母来轻松解决,方法是:

第二个问题也可以通过在获取字符时要求
scanf
读取并丢弃前导空格来轻松解决,只需在格式代码前添加一个空格即可:

scanf(" %c", &s);
//     ^
//     |
// Note space here

两个问题:首先,小写字母和大写字母之间有区别,
'y'!='y'

第二个问题,您在这里看到的是,第一个
scanf
在读取数字的地方,它将换行保留在输入缓冲区中。然后第二个
scanf
调用读取该换行并将其写入变量
s

第一个问题可以通过确保变量
s
的内容是大写字母来轻松解决,方法是:

第二个问题也可以通过在获取字符时要求
scanf
读取并丢弃前导空格来轻松解决,只需在格式代码前添加一个空格即可:

scanf(" %c", &s);
//     ^
//     |
// Note space here
scanf(“%i”、&number);
生成一个换行符,供您的
scanf(“%c”、&s);

重写为
scanf(“%c”、&s)
(在
%c
之前包含一个空格)以忽略输入之前的所有空白。

scanf(“%i”、&number);
生成一个新行,该新行由
scanf(“%c”、&s);

重写为
scanf(“%c”、&s)
(在
%c
之前包含一个空格)以忽略输入之前的所有空白。

scanf(“%i”、&number);
生成一个新行,该新行由
scanf(“%c”、&s);

重写为
scanf(“%c”、&s)
(在
%c
之前包含一个空格)以忽略输入之前的所有空白。

scanf(“%i”、&number);
生成一个新行,该新行由
scanf(“%c”、&s);


重写为
scanf(“%c”和&s)
(在
%c
之前包含空格)忽略输入前的所有空白。

当用户按
y
时,它是否以小写形式出现?这可能就是它在1个循环后爆炸的原因,如果用户按
y
时,它是否以小写形式出现,您可以很容易地调试它。这可能是它在1个循环后爆炸的原因,您可以调试这个qu如果用户按
y
时它是否以小写形式出现?这可能就是它在1次循环后爆炸的原因,如果用户按
y
时它是否以小写形式出现,您可以很容易地调试它。这可能是它在1次循环后爆炸的原因,如果是这样,您可以很容易地调试它