以下程序的输出结果是(itis)但是我不懂答案是怎么来的,初学C语言,请解释详细一些,谢谢
#include"string.h"#include"ctype.h"voidfun(charstr[]{inti,j;for(i=0,j=0;str[i];i++)if...
#include "string.h"
#include "ctype.h"
void fun(char str[]
{int i,j;
for(i=0,j=0; str[i] ;i++)
if(isalpha(str[i]))
str[j]='\0';
}
main()
{char ss[80]="it is!";
fun(ss)
printf("%s\n",ss);
} 展开
#include "ctype.h"
void fun(char str[]
{int i,j;
for(i=0,j=0; str[i] ;i++)
if(isalpha(str[i]))
str[j]='\0';
}
main()
{char ss[80]="it is!";
fun(ss)
printf("%s\n",ss);
} 展开
5个回答
展开全部
你用什么编译器编的?我怎么运行结果是P都没有呢?
#include "string.h"
#include "ctype.h"
void fun(char str[])//这里漏了右括号
{int i,j;
for(i=0,j=0; str[i] ;i++)
if(isalpha(str[i]))//isalpha函数判断字符是否为英文字符(包括大小写),你这里第一个字符就是英文字符,自然被赋字符串结束符。结果你这个字符串一开始就是结束,所以啥都输不出。
str[j]='\0';//上面j只赋了0就没在改动,你这应当是i才对吧?
}
main()
{char ss[80]="it is!";
fun(ss);//这里漏了分号,初学者最容易漏这个。
printf("%s\n",ss);
}
追问
我少打了一行,不好意思,if(isalpha(str[i]))后面是str[j++]=str[i]
追答
第一次循环:i=0,j=0
str="it is!"
isalpha(str[i]) =>true
str[j++]=str[i] => str="it is!"(未发生改变)
……
如此类推,到第三次循环i=2,j=2
str="it is!"
isalpha(str[i]) =>false
这么i=3,j=2
第四次循环,i=3,j=2
str="it is!"
isalpha(str[i]) =>true
str[j++]=str[i] => str="itiis!"(非字母字符' '被后面的i所代替)
至此就可以明白了,
这个程序就是要去除字符串里的非字母字符。
上海华然企业咨询
2024-10-28 广告
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步...
点击进入详情页
本回答由上海华然企业咨询提供
展开全部
i=0的时候,str[i] = i,isalpha 为真,所以执行str[j] = '\0',此时j = 0,所以ss的第一个字符就是\0 了。绝对输出不了itis
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-23
展开全部
isalpha在程序里面起的作用,所以输出这样的结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案肯定是空
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的编译器该换换了..分号都不提示..牛X
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询