第四个点没过,有没有好兄弟帮忙看一看哪可能错了
#include<stdio.h>
#include<string.h>
int main(){
char a[260]=""; // 定义一个字符数组用于存储输入的字符串
int n, k, b[251]={0}; // 定义变量n和k,以及一个辅助数组b用于记录选择的位置
memset(b, -1, sizeof(b)); // 将辅助数组b初始化为-1
fgets(a, sizeof(a), stdin); // 从标准输入读取一行字符串到数组a中
scanf("%d", &k); // 从标准输入读取整数k
size_t len = strlen(a); // 获取字符串的长度
if (a[len - 1] == '\n') { // 如果字符串末尾是换行符
a[len - 1] = '\0'; // 将其替换为字符串结束符
len--; // 更新字符串长度
}
len--; // 更新字符串长度(去掉字符串结束符)
k = len - k; // 计算需要保留的字符数
for(int i = 1; i <= k; i++){ // 遍历需要保留的字符位置
for(int j = b[i-1] + 1; j < len - k + i; j++){ // 从上一个选择位置的下一个位置开始遍历
if(b[i] == -1){ // 如果当前位置还没有被选择
b[i] = j; // 选择当前位置
} else if((int)a[j] < (int)a[b[i]]){ // 如果当前字符比之前选择的字符小
b[i] = j; // 更新选择的位置
}
}
}
int flag = 0; // 标记是否找到非零字符
for(int i = 1; i <= k; i++){ // 检查选择的字符中是否有非零字符
if(a[b[i]] != '0'){ // 如果找到非零字符
flag = 1; // 设置标记
break;
}
}
if(flag == 0){ // 如果没有找到非零字符
printf("0"); // 输出0
} else { // 如果找到非零字符
for(int i = 1; i <= k; i++){
if(a[b[i]] != ' ' && a[b[i]] != '0') // 忽略空格和零字符
printf("%c", a[b[i]]);
}
}
return 0;
}