c - Printing Integer array in reverse -


this simple problem print integer array in reverse order. although whenever try printing, ends displaying garbage value. below program.

#include <stdio.h> #include <conio.h> int main() {     int temp = { '\0' };     int num[9];     int i;     int j = 8;      printf("enter 8 numbers\n");     (i = 0; < 8; i++)     {         scanf_s("%d", &num[i], 1);     }     (i = 0; <= j; i++, j--)     {         temp = num[i];         num[i] = num[j];         num[j] = temp;       }     printf("\nthe numbers in reverse are\n");     (i = 0; <=8; i++)     {         printf("%d\n", num[i]);     }     _getch();      return 0; } 

let input numbers 1 8, print number in reverse first value prints garbage value. know can use , if statement counter situation there way counter problem without using if?

there several logical inconsistences in program,

you defined array having 9 elements

int num[9]; 

but enter 8 elements

for (i = 0; < 8; i++) {     scanf_s("%d", &num[i], 1); } 

thus last element of array insex 8 not initialized. nevertheless in loop swaps elements of array access uninitialized element

int j = 8; //... (i = 0; <= j; i++, j--) {     temp = num[i];     num[i] = num[j];     num[j] = temp;   } 

there no need use function scanf_s instead of scanf

take account output array in reverse order need not swap elements.

the program outputs array in reverse order without swapping elements can following way

#include <stdio.h> #include <conio.h>  #define n   9  int main( void ) {     int num[n];     int i;      printf( "enter %d numbers\n", n );      = 0;     while ( < n && scanf( "%d", &num[i] ) == 1 ) i++;      printf( "\nthe numbers in reverse are\n" );      while ( i-- ) printf( "%d ", num[i] );     printf( "\n" );      _getch();       return 0; } 

if enter sequence of numbers

1 2 3 4 5 6 7 8 9 

then output like

9 8 7 6 5 4 3 2 1  

if want swap elements of array program can like

#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++;      ( = 0; < n / 2; i++ )     {         int tmp = num[i];         num[i] = num[n - - 1];         num[n - - 1] = tmp;     }      printf( "\nthe numbers in reverse are\n" );      ( = 0; < n; i++ ) printf( "%d ", num[i] );     printf( "\n" );      _getch();       return 0; } 

if input same above output be

9 8 7 6 5 4 3 2 1  

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -