问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言怎么不用数组和指针实现字符串的反向输出

发布网友 发布时间:2022-04-08 17:51

我来回答

3个回答

热心网友 时间:2022-04-08 19:21

看题意是应该用栈来处理,不过指针不用主要是指不用数组及字符指针来处理反向输出,c语言要是真离开了指针,可就寸部难行了(就像没了内存一样),下面程序确实只用一个变量,完全用栈来处理输出,并避开了字符指针,已调试通过。

#include "stdio.h"
#include "conio.h"
// 栈大小
#define MAX_STACK 100
// 栈顶,只有这一个变量
static unsigned long stack_top=0;

// 栈操作,当栈溢出时,自动丢弃最早压入的数据
// c!=0 push c, c==0 pop c, return c
char stack(char c)
{
// 回车退出
if(c=='\r')
return c;

if(c) // push
{
memmove((void*)(stack_top+1),(void*)stack_top,MAX_STACK-1);
memset((void*)(stack_top),c,1);
}
else // pop
{

memmove((void*)&c,(void*)stack_top,1);
memmove((void*)stack_top,(void*)(stack_top+1),MAX_STACK-1);

}
return c;
}

int main(int argc, char* argv[])
{
// 初始化栈
stack_top = (unsigned long) alloca(MAX_STACK);
memset((void*)(stack_top),0,MAX_STACK);

printf("input string and CR end\n");
//压栈
while(stack( putch( getch()) )!='\r');

printf("\n");

// 反向输出,出栈
while( putch(stack( 0 ))> 0);

printf("\n");

return 0;
}

热心网友 时间:2022-04-08 20:39

提示:递归函数

参考资料:作业还是自己完成吧

热心网友 时间:2022-04-08 22:13

可以用链表,一看你的问题,不用数组和指针我也不会,我也是搜的……
#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct string)
struct string{
struct string *before;
char ch;
struct string *next;
};

struct string *creat(void)
{
struct string *head;
struct string *p1,*p2;
int n=0;
p1=p2=(struct string*)malloc(LEN);
scanf("%c",&p1->ch);
head=NULL;
while(p1->ch!='\n')
{
n++;
if(n==1)head=p1;
else
{
p2->next=p1;
p1->before=p2;
p2=p1;
p1=(struct string*)malloc(LEN);
scanf("%c",&p1->ch);
}
}
p2->next=NULL;
return head;
}

struct string *input(void)
{
struct string *head;
struct string *p1,*p2;
p1=(struct string*)malloc(LEN);
scanf("%c",&p1->ch);
p2=head=p1;
while(p1->ch!='\n')
{
p1=(struct string*)malloc(LEN);
scanf("%c",&p1->ch);
p2->next=p1;
p1->before=p2;
p2=p1;
}
p2->next=NULL;
return head;
}

struct string *danxiang(void)
//反向输入函数
{
struct string *end;
struct string *p1,*p2;
p1=(struct string*)malloc(LEN);
scanf("%c",&p1->ch);
p2=p1;
p2->before=NULL;
while(p1->ch!='\n')
{
p1=(struct string*)malloc(LEN);
scanf("%c",&p1->ch);
p1->before=p2;
p2=p1;
}
end=p1;
p1->next=NULL;
return end;
}

print2(struct string *end)
//反向输出函数
{
struct string* p;
printf("\n反向输出结果为:\n");
for(p=end;p!=NULL;p=p->before)
{
printf("%c",p->ch);
}
putchar('\n');
}

//双向链表输出函数
print(struct string *head)
{
struct string *p;
p=head;
while(p->next!=NULL)
{
p=p->next;
}
printf("\n反向输出结果为:\n");
while(p!=head)
{
printf("%c",p->ch);
p=p->before;
};
printf("%c\n",head->ch);
putchar('\n');
}

shuchu1(void)
{
struct string *number;
number=creat();
print(number);
}
shuchu2(void)
{
struct string *number;
number=input();
print(number);
}
shuchu3(void)
{
struct string *number;
number=danxiang();
print2(number);
}

void main()
{
printf("请输入字符串:\n");
//shuchu1();
shuchu2();
//shuchu3();
putchar('\n');
}

//程序说明
/* creat和input函数是双向链表的输入函数;shuchu1\shuchu2\shuchu3是三个控制输出的函数,每次运行程序只能用一个shuchu函数来实现,
(也就是说可以用creat和print、input和print、danxiang和print2分别搭配使用,运行时在main函数中需注释掉两个shuchu才能实现输出)
剩下的两个函数分别是控制输出的。 */
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 魔力宝贝怀旧版 PK型士兵练法 详细点的 如何更改微信存储路径 魔力宝贝怀旧版剑士 该考试了老师让写下实训报告,题目是“初级会计学模拟实训报告”好心人帮写下呗 魔力宝贝怀旧士兵怎么堆攻击?? 宝马480i报价是多少? 魔力宝贝60级了穿不了7级装备 魔力宝贝怀旧版装备等级问题! 魔力宝贝怀旧王宫士兵穿什么装备 魔力宝贝怀旧白龙之鳞和黑龙之鳞是干什么的 7级的 写着宝石中的宝石 宝马480i价格多少?是国产还是进口的 魔力宝贝士兵 全新宝马THE 8敞篷的售价是多少? 魔力怀旧 士兵有7级装备了还是不行吗 魔力怀旧 士兵有7级装备了厉害了吗 宝马480敞篷车多少钱 不锈钢碗和瓷碗哪个可以放进微波炉里?? 不锈钢碗或瓷碗,能不能倒扣在高压锅里当个蒸架? 出租汽车发票联可以查询时间么 出租车发票查询 只打印了发票号码和验证码 没车牌号和公司 怎么查询 魔力宝贝 怀旧 士兵如何加点 (目前状况比较混乱) 魔力宝贝练级装备要求 魔力宝贝怀旧弓的装备要求是什么?多少级拿4级弓和4级装备 魔力宝贝 怀旧 有哪些70级以下可以装备的加攻或者加必杀的饰品? 仙剑奇侠传三游戏中的一首诗:“大梦初醒已千年,凌乱罗衫,料料峭风寒,放眼难觅”后面几句是什么? 怎样制作醋泡大蒜窍门,醋泡大蒜应该怎么制作 大梦初醒已千年,凌乱罗衫,料峭风寒,放眼难觅旧衣冠,疑真疑幻,如梦如烟 仙剑奇侠传三中景天遇到龙葵时的诗是什么? 关于龙葵的诗词 《仙三》中龙葵的的台词都是什么? 仙剑奇侠传里的龙葵对景天是什么样的一种感情 仙剑3中,景天第一次遇见龙葵时,有一首诗 龙葵诗句 关于龙葵的诗 仙剑三中景天遇到龙葵时 出现的诗是什么( 直接给诗)谢啦 请问,一剪梅·寥落风是谁写的?什么朝代的? 关于门面赠与过户产生的税费 怎么算的,比如赠与给亲属是多少 赠与给朋友又是多少 用黑鲨装机 u盘重装 按快捷键 没有usb选项 我该怎么做? 仙剑奇侠传3的诗 仙3的诗句谁知道