上课周次
【问题描述】将某课程上课周次转换为课表显示形式。从键盘录入上课周次,将其输出为逗号分隔的字符串,将连续周次合并为 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 char ch[]={1,2 ,3, 4 ,5, 6, -1};
int i=1,start=0,end=0;
while (-1!=ch)
{
if ((ch-ch)!=1)
{
end=i-1;
if (end-start)
{
printf("%d-%d",ch,ch);
}
else
{
printf("%d",ch);
}
if(-1!=ch)printf(",");
start=i;
}
i++;
} jhq999 发表于 2021-10-7 22:33
它是要自己输入个东西,大佬再写写{:10_254:} 代码:def classPeriod(arr: list) -> str:
string = ''
arr.append(None)
res = ]
for n, i in enumerate(arr, start = 1):
if i == res[-1]+1:
res.append(i)
elif len(res) > 1:
string += f"{res}-{res[-1]},"
res =
else:
string += f'{res},'
res =
return string[:-1]
def main():
num = list(map(int, input().split()))[:-1]
print(classPeriod(num))
if __name__ == "__main__":
main()输入/输出:1 2 3 4 5 6 -1
1-6
1 3 4 5 6 8 9 10 12 13 14 16 18 -1
1,3-6,8-10,12-14,16,18 lsdsg 发表于 2021-10-8 17:41
它是要自己输入个东西,大佬再写写
int ch;
int i=0 ,start=0,end=0;
for(i=0;scanf("%d",ch+i),-1!=ch;i++);
页:
[1]