发布网友 发布时间:2022-04-24 06:02
共1个回答
热心网友 时间:2023-10-05 13:17
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[1000];
gets(str); //默认输入中没有换行,按行输入所有字符
int i,j,max;
for (i = 0 ; i < strlen(str) ; ++i){
if ( str[i] >= '0' && str[i] <= '9' ){ //读到一个数字后就假设其后还有数字并寻找最大的数值,存入max,直到数字结束
max = str[i++] - '0';
while (1){
if ( str[i] >= '0' && str[i] <= '9' && i < strlen(str) ){
max = (str[i] - '0')>max?(str[i]-'0'):max;
i++;
}
else
break;
}
while (1){ //数字结束后从后一个字符开始找大写字母
if (i < strlen(str)){ //防止数组越界
if ( str[i] >= 'A' && str[i] <= 'Z' ){ //找到大写字母后开始输出
printf("%c",str[i++]);
for (j = 1 ; j < max ; ++j){ //输出字符数大于max或遇到其它字符时停止,并换行
if (str[i] >= 'a' && str[i] <= 'z' ){
printf("%c",str[i++]);
}
else{
printf("\n");
break;
}
}
if ( j == max ) printf("\n");
}
else if ( str[i] >= '0' && str[i] <= '9' )
break;
else
i++;
}
else
break;
}
}
}
return 0;
}
也不是完全理解你的意思,但至少样例能跑出来。这段代码建立在这样的基础上:
(1) 输入的字符串没有换行符;
(2) 发现一个大写字母后输出的是它之后的从a~z的字母,不包含其它。
你可以根据你的意思跑点例子,发现问题再告诉我,可以改,有问题可追问。