fun功能要求:
将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。
比如输入ABCDEFG12345,那么输出的正确答案是BDF12345
下面是我的程序。感觉写得没问题。。调试有乱密码,求解。。
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{
int i,a,c=0,d;
d=strlen(s)-1;
a=*s;
for(i=0;i<d;i++)
{
if(!(a%2!=0&&i%2==0))
{
t[c]=s[i];
c++;
}
}
}
main()
{
char s[100], t[100];
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
}
劳烦帮忙调试下。。。问题只在fun函数中。。。
变量a是没用的
strlen(s)干嘛要减1
字符串末尾的'\0'要你自己加。
正确代码如下
void fun(char *s, char t[])
{
int i,c=0,d;
d=strlen(s);
for(i=0;i<d;i++)
{
if(!(s[i]%2!=0&&i%2==0))
{
t[c]=s[i];
c++;
}
}
t[c]='\0';
}
strlen(s)干嘛要减1
字符串末尾的'\0'要你自己加。
正确代码如下
void fun(char *s, char t[])
{
int i,c=0,d;
d=strlen(s);
for(i=0;i<d;i++)
{
if(!(s[i]%2!=0&&i%2==0))
{
t[c]=s[i];
c++;
}
}
t[c]='\0';
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-07-14
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{
int i,c=0,d;
d=strlen(s)-1;
//a=*s;
for(i=0;i<d;i++)
{
if(s[i]%2==0&&i%2==0)//定义个a 纯属多余,原来判断是不是有点难懂
{
t[c]=s[i];
c++;
}
}
t[c]='\0';//乱码的原因是C的字符数组以"\0"结尾,没有了便会越界
}
void main()
{
char s[100], t[100];
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
}
一楼的回答错误,数组名已经是地址名不用加&。调试通过。
#include <string.h>
void fun(char *s, char t[])
{
int i,c=0,d;
d=strlen(s)-1;
//a=*s;
for(i=0;i<d;i++)
{
if(s[i]%2==0&&i%2==0)//定义个a 纯属多余,原来判断是不是有点难懂
{
t[c]=s[i];
c++;
}
}
t[c]='\0';//乱码的原因是C的字符数组以"\0"结尾,没有了便会越界
}
void main()
{
char s[100], t[100];
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
}
一楼的回答错误,数组名已经是地址名不用加&。调试通过。
第2个回答 2009-07-14
fun函数中改变数组t的内容,没有传递出来。下面的输出就会有问题
第3个回答 2009-07-14
scanf少加了&