【问题标题】:Scanning numbers and adding them to list & scanning answer and adding it to variable扫描数字并将它们添加到列表和扫描答案并将其添加到变量
【发布时间】:2019-09-26 08:31:06
【问题描述】:

重点是我想在答案是“y”时将数字添加到数组中。当我输入 1 2 3 4 5 6 时,它只将最后 3 位添加到数组中(所以,它是 4 5 6),有时它甚至会跳过字符扫描。

代码如下:

int numbers1[99];
int i;
int n = 0; 
char answer = 'y'

while (answer == 'y')
    {
        n += 1;
        for (i = 0; i < n; i++)
        {
            printf("Insert a number: ");
            scanf("%d", &numbers1[i]);
            printf("Would you like to add more numbers? [Y/N]");
            scanf(" %c", &answer);
        }
    }

    printf("Numbers are following: ");

    for (i = 0; i < n; i++)
    {
        printf("%d, ", numbers1[i]);
    }

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你正在运行循环......两次。
  • 这是一个好的开始:stackoverflow.com/help/how-to-ask。只是一个小指针,您的问题不包含您对代码的问题或问题。
  • @Dominik Sklyarov for 循环没有意义。

标签: c loops for-loop while-loop


【解决方案1】:

你只需要一个循环。将您的代码更改为

while (answer == 'y' && n < 99)    //check also for the array bound.
    {
            printf("Insert a number: ");
            scanf("%d", &numbers1[n++]);  //use 'n' as counter and increment it
            printf("Would you like to add more numbers? [Y/N]");
            scanf(" %c", &answer);
    }

注意:错误检查留给用户实施。

【讨论】:

    【解决方案2】:

    其中一个循环是多余的。那就是 for 循环在 while 循环的上下文中没有意义。

    考虑到您要求用户在提示中输入'Y''N',但将变量answer 与字符'y' 进行比较。

    我可以建议以下解决方案。

    #include <stdio.h>
    #include <ctype.h>
    
    int main( void )
    {
        enum { N = 99 };
        int numbers1[N];
    
        int n = 0;
    
        for ( char answer = 'Y'; n < N && answer == 'Y'; n++ )
        {
            printf("Insert a number: ");
            scanf("%d", &numbers1[n]);
    
            printf("Would you like to add more numbers? [Y/N] ");
            if ( scanf( " %c", &answer ) != 1 ) answer = 'N';
            answer = toupper( ( unsigned char )answer );
        }
    
        printf( "\nNumbers are following: " );
    
        for ( int i = 0; i < n; i++ )
        {
            if ( i != 0 ) printf( ", " );
            printf( "%d", numbers1[i] );
        }
        putchar( '\n' );
    }
    

    程序输出可能看起来像

    Insert a number: 0
    Would you like to add more numbers? [Y/N] y
    Insert a number: 1
    Would you like to add more numbers? [Y/N] 1
    Insert a number: 2
    Would you like to add more numbers? [Y/N] y
    Insert a number: 3
    Would you like to add more numbers? [Y/N] y
    Insert a number: 4
    Would you like to add more numbers? [Y/N] y
    Insert a number: 5
    Would you like to add more numbers? [Y/N] y
    Insert a number: 6
    Would you like to add more numbers? [Y/N] y
    Insert a number: 7
    Would you like to add more numbers? [Y/N] y
    Insert a number: 8
    Would you like to add more numbers? [Y/N] y
    Insert a number: 9
    Would you like to add more numbers? [Y/N] n
    
    Numbers are following: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多