C语言编译后无结果输出

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:03:33
.编程题
函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:“ABCDEFG 12345”,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:“135”。
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#include <string.h>

void fun(char *s,char t[])
{
int k,n=0;
for(k=0; k<strlen(s); k++)
if(k%2==1 && s[k]%2==1)
t[n++]=s[k];
t[n]='\0';
}

main()
{
char s[100],t[100];
printf("Please enter string S:");
scanf("%s",s);
fun(s,t);
printf(" The result is: %s\n",t);
}
2楼的答案分析的很好,只是还是存在问题。
因为你可以发现用了gets函数时还是达不到效果。
这是由于前面的程序造成的,前面在用s[i]数组时出现了问题,应为strlen不能取空格后面的数字,所以在第一个空格就不在运行程序了。

这个函数编的有问题。

有谁可以出招?

楼主的程序没有问题啊??我复制粘贴后确实能运行出结果啊??
你用的什么编译器?可能是你用的windows下的编译器 让后出入了全角字符 所以无法读取 你试试关掉输入法再运行

楼主。 达到效果了啊。。
完全达到了 啊。。
楼主你题目里面字母和数字之间是两个空格!!!!!!!!!
要不,你自己算,如论如何数字的道理跟字母一样!!!
奇数在偶数位置上!!!

#include <stdio.h>
#include <string.h>

void fun(char *s,char t[])
{
int k,n=0;
for(k=0; k<(int )strlen(s); k++) //这里建议强制转换,就没有警告了。
if(k%2==1 && s[k]%2==1)
t[n++]=s[k];
t[n]='\0';
}

void main()
{
char s[100],t[100];
printf("Please enter string S:");
gets(s);//这里函数不能是scanf
/*因为scanf一旦遇到空格就不会继续读字符。也就是说你的S里面其实只放了
ABCDEGFG 巧合的是,你发现没有偶数位上的都是奇数,也就是什么也不输出了
后面又不在S里面。不信你该全部是AAAAAAAAAAAAAAAAAAAAAAAAAA 123456试试*/
fun(s,t);
printf(" The result is: %s\n",t);
}