int main(){ // Two integers j and k int j = 4; int k = 5; // Display them pre and post swap to show inplace_swap() working printf("j = %d, k = %d\n", j, k); inplace_swap(&j,&k); printf("j = %d, k = %d\n", j, k); int a[4] = {1,2,3,4,}; // array #1 - 4 elements int b[5] = {1,2,3,4,5}; // array #2 - 5 elements, to show an odd number // Print out the array post reversal reverse_array(a, (sizeof(a)/sizeof(*a))); for(int i=0; i < (sizeof(a)/sizeof(*a)); i++){ printf("%d ", a[i]);} printf("\n"); // Print out the array post reversal reverse_array(b, (sizeof(b)/sizeof(*b))); for(int i=0; i < (sizeof(b)/sizeof(*b)); i++){ printf("%d ", b[i]);} printf("\n"); return 0; }
/* $begin reverse-array */ void reverse_array(int a[], int cnt) { int first, last; for (first = 0, last = cnt-1; first <= last; //line:data:prob:reverse first++,last--) inplace_swap(&a[first], &a[last]); }
void reverse_array(int a[], int count){ int first, last; for(first=0, last=count-1; first < last; first++, last--){ inplace_swap(&a[first], &a[last]); } }
int main() { int x = 1, y = 2; printf("Before swap:\n"); show_int(x); show_int(y); inplace_swap(&x, &y); printf("After swap:\n"); show_int(x); show_int(y); return 0; }
reverse_array(int a[], int cnt) { int first, last; int x = 2; int y = 2; inplace_swap(&x, &y); printf("________________________\n"); for (first = 0, last = cnt - 1; first <= last; first++, last--) { if (first == last) { printf("index---%d------%d\n", first, last); printf("111111111111111%d------%d\n", a[first], a[last]); inplace_swap(&a[first], &a[last]); printf("222222222222222%d------%d\n", a[first], a[last]); } else { inplace_swap(&a[first], &a[last]); } } return a; }
int main(void) { test_show_bytes(0x12345678); practice2D2(); const char *s = "ABCDEF"; show_bytes((byte_pointer) s, strlen(s)); int a = 20, b = 30; inplace_swap(&a, &b); printf("a=%d, b=%d\n", a, b); practice2D7(); practice2D8(); practice2D10(); practice2D11(); }
void swap(){ int i; int par[2]; char p; start: printf("switch integer or character to be done,integer input 1 \ and character input 2,and array input 3,exit input 4\n"); scanf("%d",&i); switch(i){ case 1: goto integer; break; case 2: goto character; break; case 3: goto array; break; case 4: goto end; break; default: printf("input error"); goto start; } character: printf("input two characters\n"); i = 0; while(i<2){ p = getchar(); if(p != ',' && p != ' ' && p != 10){ par[i] = p - '\0';//or par[i] = (int)p i++; } } goto do_char; integer: printf("input two integers\n"); scanf("%d",&par[0]); scanf("%d",&par[1]); goto do_int; array: printf("input 1 for int and 2 for char array\n"); int j,length,z; int array[100]; int k; scanf("%d",&j); switch(j){ case 1: printf("enter the length of array\n"); scanf("%d",&length); printf("input for array\n"); for(k=0;k<length;k++){ scanf("%d",&array[k]); //printf("%d\n",array[k]); } goto do_array_int; break; case 2: printf("enter the length of array\n"); scanf("%d",&length); printf("input for array\n"); char q; k=0; while(k<length){ q = getchar(); if(q != ',' && q != ' ' && q != 10){ array[k] = q - '\0';//or par[i] = (int)p k++; } } goto do_array_char; break; default: printf("input error"); goto array; break; } goto array; do_char: inplace_swap(&par[0],&par[1]); printf("%c %c\n",par[0],par[1]); goto start; do_int: inplace_swap(&par[0],&par[1]); printf("%d %d\n",par[0],par[1]); goto start; do_array_int: reverse_array(array,length); for(z=0;z<length;z++) printf("%d ",array[z]); printf("\n"); goto start; do_array_char: reverse_array(array,length); for(z=0;z<length;z++) printf("%c ",array[z]+'\0'); printf("\n"); goto start; end: printf("good bye\n"); }
void reverse_array(int a[], int cnt) { int frist, last; for (frist = 0, last = cnt - 1; frist <= last; frist++, last--) { inplace_swap(&a[frist], &a[last]); } }