中易网

程序解读中的疑问

答案:1  悬赏:70  
解决时间 2021-01-16 12:01
程序解读中的疑问
最佳答案
我在文本文件上写的,复制上来有点乱,看不清楚了。你可以把它拷贝到文本文件下面,整理一下,就会很清晰了。

void StrOL(void)
{
int i,j,k,s,m,strl; //i代表行,j代表列,k代表一次搜索中有多少个字母,s作为str[]的下标,m用于对目的串赋值,strl记录第i行字符串的长度;
char str[80]; //这是一个用来作中间变量的字符串;

for(i=0;i?? {
strl=strlen(xx[i]); //取第i行字符串的长度,赋值给strl;
??memset(str,0,80); //memset(str,0,80)初始化str的值;
?? s=k=0; //初始化S和K的值;

?? for(j=strl-1;j>=0;j--) //j定义列,该循环用倒序对第i行中的字符进行处理;
?? { if(isalpha(xx[i][j])) //isalpha()函数对第i行第j列的字符是否为字母进行判别;
k++; //如果是字母,K++。则k记录的是到目前为止找到了多少个字母。
?? else //如果不是,
{
for(m=1;m<=k;m++) //那么此时K的值记录的应该是,直到最后一次判决isalpha()为真的时候有一共经历了多少个字母。
?? str[s++]=xx[i][j+m]; //将xx[i][j+m]的值赋予str[s++],就是把这中间经历的字母全部拷贝到str,
?? k=0; //且k置0 ,以便下一次记录;
?? }
?? if(!isalpha(xx[i][j]))
?? str[s++]=' '; //如果不是字母,str[s++]被赋值为空格;
?? }

?? for(m=1;m<=k;m++) //上面这个循环是倒序处理,就是从最后往前。当第一个字符是字母的时候,上面这个循环只会作K++处理。
?? str[s++]=xx[i][j+m]; //所以,最后要补充这一个循环,把首字符串加到str[s++]里面。

?? str[s]='\0'; //C语言中,字符串末尾用'\0'表示一个字符串结束,此时str[s]就是题目想要的串。
?? strcpy(xx[i],str); //把str拷贝给xx[i],完成这一行的转换。
} //对第i行的处理结束;
} //StrOL

if(!isalpha(xx[i][j])) 和上面的那个else没有区别,可以写到一起。有可能是为了让程序更加健壮,也更加可读和便于维护才这样写。

再自己写一行字符串,把自己当作电脑运行一下这段程序更加有助于理解。您还需不需要我为您作更详细的执行描述?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中通快递(苏溪镇杨梅岗小区19幢)地址有知道的
手指宽约一厘米还是一毫米
科研男和it男哪个有发展
C#怎样利用messageBox选择程序是否进行
加油站(兴浦大道)地址在什么地方,我要处理点
羽毛球拍的正确握法?
赛尔号将神吕布天敌是谁?什么是天敌?
促进会与商会有什么区别
碑文上写“皇清大硕德”是什么意思
渔民出海捕鱼,万一捞上来的鱼群里面有海蛇,
快穿系统耽美文 主攻
2016马上退伍了平残证要什么时候下来
宁波北仑去普陀山是几点的车,我在春晓,想去
有一部总裁文小说男主叫廖天野,男二叫西城,
中国邮政储蓄银行(巨甸镇营业所)地址在哪,我
推荐资讯
请问邢台市防疫站在哪里??
激战2怎么隐藏玩家
“精准扶贫”提出整四年 创造怎样的“中国
女的送男的香包是啥意思?
我们公司签订的劳动合同一直没有给我们个人,
肠伤寒饮食吃什么
济南的七十二泉名称?
9分之4等于()等于27等于()分之16
意大利原产原声木吉他音箱ACUS 试听,是不是
我从广州到汕头峡头金光路怎么走方便
武陟兴华家电超市怎么去啊,我要去那办事
为什么xbox的游戏都上win10了
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?