# 程設實習課 week 11 Ans ## Q1 ```c #include <stdio.h> void swap(int *x, int *y) { int tmp; tmp = *x; *x = *y; *y = tmp; } int main() { int a,b; scanf("%d %d", &a, &b); printf("before:\n"); printf("%d %d\n", a, b); swap(&a,&b); printf("after:\n"); printf("%d %d\n", a, b); } ``` ## Q2 ```c #include <stdio.h> void swap(int *a, int *b){ int tmp=*a; *a=*b; *b=tmp; } void QSORT(int *nums, int left, int right){ // int *nums, int nums[], all correct if(left>=right) return; int l=left+1; int r=right; int key=nums[left]; while(1){ while(l<=right){ if(nums[l]>key) break; l++; } while(r>left){ if(nums[r]<key) break; r--; } if(l>r) break; swap(&nums[l],&nums[r]); } swap(&nums[left],&nums[r]); QSORT(nums,left,r-1); QSORT(nums,r+1,right); } int main(void){ int array[10]; int len = sizeof(array) / sizeof(int); for(int i = 0; i < len; i++){ scanf("%d",&array[i]); } QSORT(array,0,9); for(int i=0; i<10; i++){ printf("%d ",array[i]); } } ```