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
Post a Comment