请问,我有以下类型的输入
noon
sleep
1001
如何编程,将输入分别存储起来,譬如说noon存在一个地方,sleep存在一个地方,因为我最后还要对每行分别判断,这个字符串是不是回文数。
请各位大神,编程告诉我怎么存储每行的输入,怎么对每行分别输出。用c语言。
输入是
noon
sleep
1001
0
判断,以第n行的第一个字符是不是0,作为结束。如果是0,就结束。
如何对多行输入进行存储,操作?求大神
答案:3 悬赏:40 手机版
解决时间 2021-12-21 12:39
- 提问者网友:嗝是迷路的屁
- 2021-12-20 19:17
最佳答案
- 五星知识达人网友:人间朝暮
- 2022-01-22 04:36
方法有很多,例如可以用二维数组,或者指针数组,例如:
//---------------------------------------------------------------------------
#include
#include
#include
char *readln(void) //读取一行字符串并返回首地址
{
char ch,*st=NULL;
int i=0;
while ((ch=getchar())!='\n')
{
if (st==NULL&&ch=='0') return NULL;
else if (st==NULL) st=(char*)malloc(sizeof(char));
else st=(char *)realloc(st,sizeof(char)*(i+1));
if (st==NULL) exit(-1);
st[i++]=ch;
}
st=(char *)realloc(st,sizeof(char)*(i+1));
st[i]='\0';
return st;
}
void prt(char **str,int n) //输出所有的字符串
{
int i;
for (i=0; i
printf("%s\n",str[i]);
}
}
int check(char *a)
{
int i=0,j;
j=strlen(a)-1;
while (i
{
if (a[i]!=a[j]) return 0;
i++;
j--;
}
return 1;
}
void freestr(char **st,int n) //释放为字符串分配的空间
{
int i;
for (i = 0; i
free(st[i]);
}
free(st);
}
int main(void)
{
char **strs=NULL,*ln;
int i=0,j;
//这个do-while数组用于读取所有的字符串
do
{
ln=readln();
if (ln!=NULL&&strs==NULL) strs=(char **)malloc(sizeof(char *));
else if (ln!=NULL) strs=(char **)realloc(strs,sizeof(char *)*(i+1));
if (ln!=NULL&&strs==NULL) exit(-1);
if (ln) strs[i++]=ln;
}while(ln);
prt(strs,i);
putchar('\n');
for (j=0; j printf("%s %s\n",strs[j],check(strs[j])?"是回文":"非回文");
}
freestr(strs,i);
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include
#include
#include
char *readln(void) //读取一行字符串并返回首地址
{
char ch,*st=NULL;
int i=0;
while ((ch=getchar())!='\n')
{
if (st==NULL&&ch=='0') return NULL;
else if (st==NULL) st=(char*)malloc(sizeof(char));
else st=(char *)realloc(st,sizeof(char)*(i+1));
if (st==NULL) exit(-1);
st[i++]=ch;
}
st=(char *)realloc(st,sizeof(char)*(i+1));
st[i]='\0';
return st;
}
void prt(char **str,int n) //输出所有的字符串
{
int i;
for (i=0; i
}
}
int check(char *a)
{
int i=0,j;
j=strlen(a)-1;
while (i
if (a[i]!=a[j]) return 0;
i++;
j--;
}
return 1;
}
void freestr(char **st,int n) //释放为字符串分配的空间
{
int i;
for (i = 0; i
}
free(st);
}
int main(void)
{
char **strs=NULL,*ln;
int i=0,j;
//这个do-while数组用于读取所有的字符串
do
{
ln=readln();
if (ln!=NULL&&strs==NULL) strs=(char **)malloc(sizeof(char *));
else if (ln!=NULL) strs=(char **)realloc(strs,sizeof(char *)*(i+1));
if (ln!=NULL&&strs==NULL) exit(-1);
if (ln) strs[i++]=ln;
}while(ln);
prt(strs,i);
putchar('\n');
for (j=0; j printf("%s %s\n",strs[j],check(strs[j])?"是回文":"非回文");
}
freestr(strs,i);
return 0;
}
//---------------------------------------------------------------------------
全部回答
- 1楼网友:舍身薄凉客
- 2022-01-22 06:09
请问你输入的顺序也是这样的么,之后的输入也是像
noon
sleep
1001
这么输入么?
- 2楼网友:洒脱疯子
- 2022-01-22 04:42
这个比较复杂,基本上需要做一个字符分析器。读取文件然后逐字符读取字符,然后判断是数字还是运算符号;标记运算类型,读取字符一直到把所有的数据读取完后进行相应的操作。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯