发错了
[此贴子已经被作者于2007-3-11 14:26:34编辑过]
第一题:
#include<stdio.h>
#include<conio.h>
#define N 4
int main(void)
{
int i,j,m,n=0;
short int a_i[50]={0};
char b[N][251]={0},a[50]; /*a[]作用为输入缓冲区*/
for(m=0;m<N;m++)
{ gets(a);
for(i=0;a[i];i++)
{
if(a[i]=='@')
a_i[i]=-1;
if(a[i]=='#')
a_i[i]=-2;
}
for(i--;i>-1;i--)
{
if(a_i[i]==-1)
{
for(j=i;j>-1;j--)
a_i[j]=-3;
}
}
for(i=0;a[i];i++)
{
if(a_i[i]==-2)
{
for(j=i;a_i[j]==-2;j++)
{n++;
a_i[j]=-3;}
for(j=i-1;j>-1&&n;j--)
{
if(a_i[j]>-1)
{a_i[j]=-3;n--;}
}
}
n=0;
}
n=0;
j=0;
for(i=0;a[i];i++)
if(a_i[i]>-1)
{
b[m][j]=a[i];
j++;
}
for(i=0;a[i];i++)
a_i[i]=0;
}
puts("**************************");
for(i=0;i<N;i++)
printf("%s\n",b[i]);
getch();
}
[此贴子已经被作者于2007-3-11 16:29:21编辑过]
我觉得你要是想用数组来做缓冲同时还想一次处理是不可能做的到的,
我是这样想的,但是也有问题,至少我对输入范围没有限制
#include<stdio.h>//这里只处理一个数组
int main()
{
char a[251];
int i;
i=0;
while(251)
{
a[i]=getche();//我使用getche()直接从控制台读取,因为我是一个一个字符的处理,要是用getchar必须回车
if(a[i]=='\n') //这个就是我的问题所在,我本来是想在这里做一个一行输入结素的判断,
break; //后来发现getche()对回车很感冒
a[i+1]='\0'; //这个都是用来标志数组结尾的
if(a[i]=='#') //代表要是输入的是#就退一个元素写入
{
i-=2;
a[i+1]='\0';
}
if(a[i]=='@')//输入的是@就从新输入
{
i=-1;
a[0]='\0';
}
i++;
if(i==10)
break;
}
printf("\n");
for(i=0;i<10;i++)
printf("%c ",a[i]);
getch();
return(0);
}
有谁能告诉我怎么样输入回车跳出循环?