问题描述
- C语言哪里错了?帮我改改吧
-
#include
#includechar 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");
}
解决方案
#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");
}
解决方案二:
s 为数组 取数组地址相当于数组指针,二scanf的第二个参数需要的是指针,数组名字就是首地址,所以scanf改成sanf(“%s”,s);就可以了。
解决方案三:
s 为数组 取数组地址相当于数组指针,二scanf的第二个参数需要的是指针,数组名字就是首地址,所以scanf改成sanf(“%s”,s);就可以了。
解决方案四:
对数组名取地址,其实还是数组名!这个没有错的。
if (s[i]!=s[n-i]) 当 i 等于 零 时,对于数组来说已经越界了。所以,需要注意!
解决方案五:
综合楼上两位即可:
#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");
}
解决方案六:
scanf("%s",&s); 改为 scanf("%s",s);
时间: 2024-09-17 04:20:50