打印丢失的元素,范围在0 – 99之间
它将显示用户输入的给定集合中的缺失值
Given : array = {88, 105, 3, 2, 200, 0, 10}; Output : 1 4-9 11-87 89-99
算法
START STEP 1-> Take an array with elements, bool flag[MAX] to Fale, int i, j, n to size of array Step 2-> Loop For from I to 0 and i<n and i++ IF array[i] < 100 && array[i]>=0 Set flag[array[i]]=true End IF Step 3 -> End For Loop Step 4 -> Loop For from i to 0 and i<MAX and ++i IF flag[i] == false Set j=i+1 Loop While j<MAX && flag[j] == false Set j++ End While If j=i+1 Print i End IF Else Print i and j-1 End Else Set i=j End IF Step 5 -> End For Loop STOP
示例
#include <stdio.h> #define MAX 100 int main(int argc, char const *argv[]) { int array[] = {88, 105, 3, 2, 200, 0, 10}; bool flag[MAX] = { false }; //Initializing all the values of flag as false int i, j, n; n = sizeof(array)/sizeof(array[0]); for (i = 0; i < n; i++) { if (array[i] < 100 && array[i]>=0) { flag[array[i]] = true; //Making the value of the elements present in an array as true, So missing will remain false } } for (i = 0; i < MAX; ++i) { if(flag[i] == false) { //Checking for false values j = i+1; //Giving the value of the next iteration while(j<MAX && flag[j] == false) //Checking the value of flag[j] is false j++; if (j==i+1) //For printing the missing number printf("%d\n", i); else //For printing the missing range printf("%d-%d\n", i, j-1); i = j; //Initializing the range's last value to start from that number } } return 0; }
输出结果
如果我们运行上面的程序,那么它将生成以下输出
1 4-9 11-87 89-99