这个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);
} 展开
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);
} 展开
3个回答
展开全部
你犯了三个错误
第一、在函数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);
}
第一、在函数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);
}
展开全部
n 没有赋初值!
int i,n=0;
int i,n=0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你犯了四个错误!楼上的没有将回车删除!我将修改写在下边!
已经使用编译器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);
}
已经使用编译器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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询