将某课程上课周次转换为课表显示形式。从键盘录入上课周次,将其输出为逗号分隔的字符串,将连续周次合并为 x-y的形式。

【问题描述】

将某课程上课周次转换为课表显示形式。从键盘录入上课周次,将其输出为逗号分隔的字符串,将连续周次合并为 x-y的形式。

【输入形式】

总共输入1行,其为空格分隔的自然数数列,输入必须从小到大排列,用-1表示输入结束。

【输出形式】

只输出1行。不连续的周次之间用英文逗号“,”分开,连续的周次之间用英文横线“-”连接起止周

【样例输入1】

1 2 3 4 5 6 -1

【样例输出1】

1-6

【样例输入2】

1 3 4 5 6 8 9 10 12 13 14 16 18 -1

【样例输出2】

1,3-6,8-10,12-14,16,18

【样例输入3】

3 -1

【样例输出3】

3

#include
#include
#include
using namespace std;

int main() {
int i, j, classes[100];
for (i = 0; i <= 99 ; i++) {
scanf("%d", &classes[i]);
if (classes[i] == -1)
break;
}
for (j = 0; j < i ; j++) {
if (j == 0)
printf("%d", classes[0]);
if ((j == 1)) {
if (classes[j] - classes[j - 1] > 1)
printf(",%d", classes[j]);
}
if (j >= 2) {
if ((classes[j] - classes[j - 1] > 1) && (classes[j - 1] - classes[j - 2] > 1))
printf(",%d", classes[j]);
if ((classes[j] - classes[j - 1] > 1) && (classes[j - 1] - classes[j - 2] == 1))
printf("-%d,%d", classes[j - 1], classes[j]);
if ((classes[j] - classes[j - 1] == 1) && (classes[j - 1] - classes[j - 2] > 1) && (classes[j + 1] == -1))
printf("-%d", classes[j]);
if ((classes[j] - classes[j - 1] == 1) && (classes[j - 1] - classes[j - 2] == 1) && (classes[j + 1] == -1))
printf("-%d", classes[j]);
}
}
return 0;
}