Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 反向打印整数数组_C_Arrays - Fatal编程技术网

C 反向打印整数数组

C 反向打印整数数组,c,arrays,C,Arrays,以相反顺序打印整数数组是一个相当简单的问题。尽管每次我尝试打印时,它都会显示垃圾值。下面是我的程序 #include <stdio.h> #include <conio.h> int main() { int temp = { '\0' }; int num[9]; int i; int j = 8; printf("Enter 8 numbers\n"); for (i = 0; i < 8; i++) {

以相反顺序打印整数数组是一个相当简单的问题。尽管每次我尝试打印时,它都会显示垃圾值。下面是我的程序

#include <stdio.h>
#include <conio.h>
int main()
{
    int temp = { '\0' };
    int num[9];
    int i;
    int j = 8;

    printf("Enter 8 numbers\n");
    for (i = 0; i < 8; i++)
    {
        scanf_s("%d", &num[i], 1);
    }
    for (i = 0; i <= j; i++, j--)
    {
        temp = num[i];
        num[i] = num[j];
        num[j] = temp;  
    }
    printf("\nThe numbers in reverse are\n");
    for (i = 0; i <=8; i++)
    {
        printf("%d\n", num[i]);
    }
    _getch(); 
    return 0;
}
#包括
#包括
int main()
{
int temp={'\0'};
int-num[9];
int i;
int j=8;
printf(“输入8个数字\n”);
对于(i=0;i<8;i++)
{
scanf_s(“%d”,和num[i],1);
}

对于(i=0;i您在这里犯了两个错误:

  • 对于8个数字,最高项的索引是7,而不是8。初始化时将
    j
    设置为
    7
    ,以解决此问题

  • 从索引0开始迭代8个数字时,如果要反向打印数组中的整数,请使用运算符
    ,只需从最后一个索引开始,然后一直到顶部

    第三个循环应该更像这样:

    int j = 7; // an array of size 8 starts at the 0th and ends at the 7th index.
    while(j >= 0)
    {
       printf("%d", num[j]);
       j--;
    }
    

    你的程序中有几个逻辑上的不一致

    您将数组定义为包含9个元素

    int num[9];
    
    但只需输入8个元素

    for (i = 0; i < 8; i++)
    {
        scanf_s("%d", &num[i], 1);
    }
    
    如果要输入一系列数字

    1 2 3 4 5 6 7 8 9
    
    然后输出将如下所示

    9 8 7 6 5 4 3 2 1 
    
    #include <stdio.h>
    #include <conio.h>
    
    #define N   9
    
    int main( void )
    {
        int num[N];
        int n;
        int i;
    
        printf( "Enter %d numbers\n", N );
    
        n = 0;
        while ( n < N && scanf( "%d", &num[n] ) == 1 ) n++;
    
        for ( i = 0; i < n / 2; i++ )
        {
            int tmp = num[i];
            num[i] = num[n - i - 1];
            num[n - i - 1] = tmp;
        }
    
        printf( "\nThe numbers in reverse are\n" );
    
        for ( i = 0; i < n; i++ ) printf( "%d ", num[i] );
        printf( "\n" );
    
        _getch(); 
    
        return 0;
    }
    
    如果您想交换数组的元素,那么程序可以如下所示

    9 8 7 6 5 4 3 2 1 
    
    #include <stdio.h>
    #include <conio.h>
    
    #define N   9
    
    int main( void )
    {
        int num[N];
        int n;
        int i;
    
        printf( "Enter %d numbers\n", N );
    
        n = 0;
        while ( n < N && scanf( "%d", &num[n] ) == 1 ) n++;
    
        for ( i = 0; i < n / 2; i++ )
        {
            int tmp = num[i];
            num[i] = num[n - i - 1];
            num[n - i - 1] = tmp;
        }
    
        printf( "\nThe numbers in reverse are\n" );
    
        for ( i = 0; i < n; i++ ) printf( "%d ", num[i] );
        printf( "\n" );
    
        _getch(); 
    
        return 0;
    }
    

    您还可以保持
    循环不变,并更改索引

        #define ARRAY_SIZE 8
    
        // print in reverse order
        for (i = 0; i < ARRAY_SIZE; i++)
        {
            printf("%d\n", num[ARRAY_SIZE - i - 1]);
        }
    
    #定义数组大小8
    //按相反顺序打印
    对于(i=0;i

    我使用了一个
    #define
    ,以便在需要不同数组大小时更容易更改程序:只需在一个位置更改,而不是在当前需要的5个位置更改即可。

    以7开始j值。因为数组值以0开始-7@Dhananjay看我的答案。:)是的,这对我来说很有意义,使用#define更好
        #define ARRAY_SIZE 8
    
        // print in reverse order
        for (i = 0; i < ARRAY_SIZE; i++)
        {
            printf("%d\n", num[ARRAY_SIZE - i - 1]);
        }