In Q4 and Q5 One mistake about the usage of "if" "for" or "=", reduce 2 points. If the same mistake repeats, just reduce points once. 4 (a) int max_position(float a[],int start,int end) Miss start and end here, reduce 2 points { int i,pos; float max; if(start>end) { return -1; } max = a[start]; pos = start; ------------------------------------------------------------3 points for(i = start ; i <= end ; i++) ------------------------------------------------------------2 points { if(max < a[i]) ------------------------------------------------------------5 points { max = a[i]; pos = i; ------------------------------------------------------------5 points } } return pos; } If you compare a[i] and a[i+1] instead of max and a[i], reduce 8 points. (b) void selection_sort(float a[],int size) { int i,pos; float temp; for(i = size - 1 ; i >= 0 ; i--) ------------------------------------------------------------2 points { pos = max_position(a,0,i); ------------------------------------------------------------5 points temp = a[pos]; a[pos] = a[i]; a[i] = temp; ------------------------------------------------------------8 points } } 5. int subsequence(char s1[],char s2[],char s3[]) { int i,j,size; size = strlen(s1); for(i = 0 ; i < size ; i++) { s3[i]='0'; } s3[size] = '\0'; ------------------------------------------------------------5 points i = 0; j = 0; while(s2[i] != '\0') { if(s1[j] == '\0') { return 0; } if(s1[j] == s2[i]) { i++; s3[j] = '1'; } j++; } ------------------------------------------------------------20 points return 1; } If the rest of the code is correct, but you return when the first match happens, reduce 10 points. If you check whether s1 is a subsequence of s2, reduce 2 points. If i is not changed, reduce 5 points.