c语言一小段程序测试...求助

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';
}
温馨提示:答案为网友推荐,仅供参考
第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);

}
一楼的回答错误,数组名已经是地址名不用加&。调试通过。
第2个回答  2009-07-14
fun函数中改变数组t的内容,没有传递出来。下面的输出就会有问题
第3个回答  2009-07-14
scanf少加了&

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网