【急!!】一个C语言程序,请指点(在线等)

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:45:29
一个程序,要求接受用户输入的字符串(只包含星号和字母),把单词逆序后输出,星号的位置和数量不变,比如:
输入Bob***comes**here 输出here***comes**Bob
下面是我的程序
int main()
{
STRING s;
int n;
printf("本程序接受一个只有一行,并且只包含大小写字母和星号的字符串,将所有单词逆序输出,并保持连续星号段的长度.\n");
printf("\n请输入字符串:");
s=GetStringFromKeyboard();
n=GetStringLength(s);
char a[n],word[n][n], star[n][n];
int i, j, l=0, k=0, t=0, m=0;
for(i=0;i<n;i++) a[i]=GetIthChar(s,i);
for(i=0;i<n;i++)
{
while(!(a[i]=='*'||(a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')))
{
printf("存在非法字符!请重新输入:");
s=GetStringFromKeyboard();
n=GetStringLength(s);
for(j=0;j<n;j++) a[j]=GetIthChar(s,j);
}
}

n=GetStringLength(s);
char a[n],word[n][n], star[n][n]; 这里就有错了,n的值要程序运行并输入后才知道其大小,char a[n],word[n][n], star[n][n]这里的n是要编译时就确定其值的. 后面是否还有错就懒得看了

上面说的对啊,应该编译不过的!
算法可以这样来:接收时就分析单词,加入链表。*号按个数存入数组。然后,按链表逆序输出单词,单词之间按顺序输出*号。完成所需功能。
使用new和delete

链表在添加时可从头添加,这样就不需要逆序了。