求助,一道C++题 将N个数按输入时顺序的逆序排列

这是我的解法,编译无误,但是输出错误求解#include<iostream>usingnamespacestd;voidoutput(char*p){intnum=0;w... 这是我的解法,编译无误,但是输出错误 求解
#include<iostream>
using namespace std;
void output(char* p){
int num=0;
while(*(p+num)!='\0')num++;
for(int i=0;i<num;i++)
cout<<*(p+num-i-1);
cout<<endl;}

int main(){
char a[500];cin>>a[500];
char* p;
p=a;
output(p);
return 0;}
展开
 我来答
纠结会长
2011-11-20 · 贡献了超过100个回答
知道答主
回答量:100
采纳率:0%
帮助的人:50.3万
展开全部
#include "stdio.h"
#include "malloc.h"
#define NULL0
//#define MAXSIZE 100
#define LEN sizeof(struct LNode)
typedef struct LNode
{
char date;
struct LNode *next;
}linklist;
linklist linklist_1,linklist_2;
linklist *Creat(linklist *p);
void DispList(linklist *p);
void InverseSet(linklist*p1,linklist *p2);
int main()
{
linklist *p1;
linklist *p2;
p1=&linklist_1;
p2=&linklist_2;
p1=Creat(p1);
printf("原始链表的数据域依次为:");
DispList(p1);
printf("逆置后链表的数据域依次为:");
InverseSet(p1,p2);
return 0;
}
linklist *Creat(linklist *p)
{
linklist *s,*r,*f;
p=(struct LNode*)malloc(LEN);//建立头指针
r=p;
printf("请输入一串字符:");
while(1)
{
s=f=(struct LNode*)malloc(LEN);
scanf("%c",&f->date);
if((f->date)=='\n')
break;
s->date=f->date;
r->next=s;
r=s;
}
r->next=NULL;
return (p);
}
void DispList(linklist *p)
{
linklist *s=p->next;
while(s!=NULL)
{
printf("%c",s->date);
s=s->next;
}
printf("\n");
}
void InverseSet(linklist *p1,linklist *p2)
{
linklist *r,*s;
int i,n=0;
r=p1;
while(r->next!=NULL)
{
n++;
r=r->next;
}
r=p1->next;
p2=(struct LNode*)malloc(LEN);
p2->next=NULL;
for(i=0;i<n;i++)
{
s=(struct LNode*)malloc(LEN);
s->date=r->date;
s->next=p2->next;
p2->next=s;
r=r->next;
}
DispList(p2);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
云澹枫卿
2011-11-20 · TA获得超过706个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:241万
展开全部
int main()
{
char a[500];
cin>>a; /*不能是a[500],首先:a[500]数组下标越界,其次:cin>>a[500];只是
输入第501个元素,而不能输入整个数组*/
char* p;
p=a;
output(p);
return 0;
}
追问
500值是给字符数上限,若用FOR语句赋值怎么给结尾加上'\0'?
追答
对于一个字符串常量、系统会自动在所有字符的后面加一个'\0'
例如char str[]="I am happy"; 这时数组的长度不是10而是11,因为字符串常量的最后由系统加上一个'\0'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-11-20 · TA获得超过1418个赞
知道大有可为答主
回答量:1903
采纳率:0%
帮助的人:1953万
展开全部
主函数那儿改一下 cin>>a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大觉得就是我
2011-11-20 · 超过19用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:54.3万
展开全部
你这个cin>>a[500];是不对的,得
for(int i=0;i<500;i++)
cin>>a[i];
完事,再改改就对了
追问
500值是给字符数上限,若用FOR语句赋值怎么给结尾加上'\0'?
追答
为什么一定要加一个'\0'呢,输出还有更简单的方法,比如设置一个计数器。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式