这个C语言程序错在哪里?

#include"stdio.h"charf(char*s,intm){char*p;for(p=s+m;p>=s;p--)printf("%3c",*p);return... #include"stdio.h"
char f(char*s,int m)
{
char *p;
for (p=s+m;p>=s;p--)
printf("%3c",*p);
return 0;
}
void main()
{
char *p,a[20];
int i,n;
p=a;
printf("请输入一串字符(小于20个):");
for (i=0;i<20;i++)
{
a[i]=getchar();
if(a[i]='\0')
break;
n++;
}
f(p,n);
}
展开
 我来答
V亮剑
2011-05-10 · TA获得超过287个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:93.8万
展开全部
你犯了三个错误
第一、在函数f 中for循环,p的初始值应为p=s+m-1
第二、main函数 中n没有初始化
第三、也是最重要的一点,在比较a[i]与“\0”是否相等时用了“=”而不是“==”,还有就是最后不能进行n++; 所以要用else语句

#include"stdio.h"

char f(char*s,int m)
{
char *p;
for(p=s+m-1;p>=s;p--)
printf("%3c",*p);
printf("\n");
return 0;
}

void main()
{
char *p,a[20];
int i,n=0;
printf("请输入一串字符(小于20个):");
for (i=0;i<20;i++)
{
a[i]=getchar();
if(a[i]=='\n')
break;
else
n++;
}
p=a;
f(p,n);
}
oolgloo
2011-05-10 · TA获得超过2636个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:663万
展开全部
n 没有赋初值!
int i,n=0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guichengliu
2011-05-10 · TA获得超过1071个赞
知道小有建树答主
回答量:204
采纳率:100%
帮助的人:85.2万
展开全部
你犯了四个错误!楼上的没有将回车删除!我将修改写在下边!
已经使用编译器Dev C++ 编译通过,没有问题,你可以试试看!
以下是改正验证后程序!
#include"stdio.h"
char f(char*s,int m)
{
char *p;
//此处错误,初始数值应该为s+m-1。
//for (p=s+m;p>=s;p--)
for (p=s+m-1;p>=s;p--)
printf("%3c",*p);
return 0;
}
void main()
{
char *p,a[20];
//此处错误,n应该赋初值,但是一些编译器默认初始为0,运行无错。
//int i,n;
int i,n = 0;
p = a;
printf("请输入一串字符(小于20个):");
for (i=0;i<20;i++)
{
a[i]=getchar();
//此处错误,在字符输入结束时,要使用回车,
//会存入数组,所以遇见回车应该放弃。
//应该添加下列语句。
if(a[i] == 10)
i--;
else
n++;
//此处调试用,可以监控存入第几个字符,存入了什么。
printf("get %d = %d\n",i,a[i]);
//此处错误,逻辑判断应该使用“==”。
//if(a[i]='\0')
if(a[i]=='\0')
break;
}
f(p,n);
while(1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式