2 xyhqqlove xyhqqlove 于 2016.01.25 09:25 提问

C语言哪里错了?帮我改改吧

#include
#include

char s[100];
int panduan()
{
int n=strlen(s);
int i;
for(i=0;i<n/2;i++)
{
if (s[i]!=s[n-i])
return 0;
}
return 1;
}
void main()
{
scanf("%s",&s);
if (panduan())
printf("yes");
else
printf("no");
}

6个回答

caozhy
caozhy   Ds   Rxr 2016.01.25 09:41
 #include <stdio.h>
#include <string.h>

char s[100];
int panduan()
{
    int n=strlen(s);
    int i;
    for(i=0;i<n/2;i++)
    {
        if (s[i]!=s[n-i-1]) //修改
            return 0;
    }
    return 1;
}
void main()
{
scanf("%s",&s);
if (panduan())
printf("yes");
else
printf("no");
}
qq_27183003
qq_27183003   Ds   Rxr 2016.01.25 10:16

综合楼上两位即可:

 #include <stdio.h>
#include <string.h>
char s[100];
int panduan()
{
    int n=strlen(s);
    int i;
    for(i=0;i<n/2;i++)
    {
        if (s[i]!=s[n-i-1])//修改
            return 0;
    }
    return 1;
}
void main()
{
    scanf("%s",s);//修改
    if (panduan())
        printf("yes");
    else
        printf("no");
}
hanxing930214
hanxing930214   2016.01.25 09:46

s 为数组 取数组地址相当于数组指针,二scanf的第二个参数需要的是指针,数组名字就是首地址,所以scanf改成sanf(“%s”,s);就可以了。

hanxing930214
hanxing930214   2016.01.25 09:45

s 为数组 取数组地址相当于数组指针,二scanf的第二个参数需要的是指针,数组名字就是首地址,所以scanf改成sanf(“%s”,s);就可以了。

91program
91program   Ds   Rxr 2016.01.25 10:01

对数组名取地址,其实还是数组名!这个没有错的。

if (s[i]!=s[n-i]) 当 i 等于 零 时,对于数组来说已经越界了。所以,需要注意!

John_ToStr
John_ToStr   Rxr 2016.01.25 17:48

scanf("%s",&s); 改为 scanf("%s",s);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!