函数接口定义:
void Input ( char *str );
int Split_Count ( char *str,char **pStr );
裁判测试程序样例:
#include <stdio.h>
/* userCode(<80字符): 自定义函数之原型声明 */
void Input ( char *str );
int Split_Count ( char *str,char **pStr );
int main(void)
{
char String[81]={0}, *pString[45];
int i=0, count;
Input(String);
count = Split_Count(String, pString);
printf("%d Words: ", count);
for (i=0; i<count-1; i++)
{
printf("%s-", pString[i]);
}
printf("%s", pString[count-1]);
putchar('\n');
return 0;
}
/* 请在这里填写答案 */
输入样例:
Actions speak louder than words
输出样例:
5 Words: Actions-speak-louder-than-words
输入样例:
12A good && beginning is half @done
输出样例:
6 Words: A-good-beginning-is-half-done
//起初没有看清题,在Input中是调用Input函数读入最多80个字符,要求字符串中只保留字母和空格,,但当时直接scanf(“%[^\n]”,str);了,所以后续代码有些步骤看起来很多余//
void Input(char* str)
{
int i = 1;
char x;
x = getchar();
while(x!='\n'&&i<81)
{
if((x>='a'&&x<='z')||(x>='A'&&x<='Z')||x==' ')
{
str[i-1] = x;
i++;
}
x = getchar();
}
*(str+i) = '\0';
}
int Split_Count(char* str, char** pStr)
{
int k = 0;
int flag = 0, flag1 = 0;
while (*str < 'A' || (*str > 'Z' && *str < 'a') || *str>'z')
{
str++;
}
while (*str)
{
if ((*str>='a'&&*str<='z')||(*str>='A'&&*str<='Z'))
{
*(pStr + k) = str;
k++;
}
while (*str)
{
if (*str < 'A' || (*str > 'Z' && *str < 'a') || *str>'z')
{
*str = '\0';
break;
}
str++;
}
str++;
}
return k;
}