重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
专注于为中小企业提供成都做网站、成都网站制作、成都外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业天元免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
#include string.h
#include stdlib.h
int palin(char *str)
{
int flag=1;//先假设是回文字符串
char *head,*tail;
int len=strlen(str);
head=str;
tail=str+(len-1);//分别指向字符串首部和尾部
while(head tail)
{
if(*head != *tail)
{
flag=0;
break;
}
head++;tail--;
}
return flag;
}
int main()
{
//int palin(char *str);
char*ap;
int n;
printf("please input the sizeof of sentence");
scanf("%d",n);
ap=(char*)malloc(n*sizeof(char));//分配你想要的内存大小
while(true)
{
printf("Input the string:\n");
fflush(stdin);
gets(ap);
if(strlen(ap)=1)
{
break;
}
if(palin(ap))
printf("It is a plaindromia.\n");
else
printf("It is not a plaindromia.\n");
}
free(ap);
return 0;
}
测试了 正常
判断相等应该是两个等号:a==b,你少了一个。一个等号表示赋值,不论怎么样,if(a=b)这个始终是成立的,所以你的代码运行的时候,只要不满足第一个判断(ab)就一定会进第二个当中,所以你说的两种情况都是0
你的fun里的形参a是个int类型,你写a=1.0/a,相当于把1.0/a的结果又强制转换成了int,因为你的a肯定比1大,所以结果当然还是0,建议把a=1.0/a改成return 1.0/a,a=0改为return 0
返回值是用来结束那个函数的~~就像for循环里的break可以终止循环一样的!!
没仔细看,你首先你要知道的在C里两个整数相除的结果还是整数,所以象1/2结果就是0而不是你以为的0.5,需要写成比如1.0/2或者(double)1/2或者1/2.0
sqrt的返回值类型是double型,你输出的时候用%d当然结果是错的了,可以试试类型转换,把最后一个printf语句改成如下:
printf("%d\n",(int)sqrt(n));