关于C语言的题目,求每个步骤详解。谢谢!
有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母#include<stdio.h>#include<ctype.h>voidfun(cha...
有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母
#include <stdio.h>
#include <ctype.h>
void fun (char*p)
{ int i=0;
while(p[i])
{ if (p[i]==' '&&islower(p[i-1]) p[i-1]=p[i-1]-'a'+'A';
i++;
}
}
main()
{char sl[100]="ab cd EFG !";
fun(sl); printf("%s\n",sl);
}
运行结果是aB cD EFG !
这题我从 if (p[i]==' '&&islower(p[i-1]) p[i-1]=p[i-1]-'a'+'A'开始就不懂了
还有库函数的应用不大理解
所以求步骤详解!谢谢!! 展开
#include <stdio.h>
#include <ctype.h>
void fun (char*p)
{ int i=0;
while(p[i])
{ if (p[i]==' '&&islower(p[i-1]) p[i-1]=p[i-1]-'a'+'A';
i++;
}
}
main()
{char sl[100]="ab cd EFG !";
fun(sl); printf("%s\n",sl);
}
运行结果是aB cD EFG !
这题我从 if (p[i]==' '&&islower(p[i-1]) p[i-1]=p[i-1]-'a'+'A'开始就不懂了
还有库函数的应用不大理解
所以求步骤详解!谢谢!! 展开
3个回答
展开全部
#include <stdio.h>
#include <ctype.h>
void fun (char*p) //接收str数组的首地址
{ int i=0;
while(p[i]) //是否为结束标记'\0'
{ if (p[i]==' '&&islower(p[i-1]) p[i-1]=p[i-1]-'a'+'A'; //如果p[i]为空 且他的左边一个字符为小字母,就把它转化成大写字母 p[i-1]=p[i-1]-'a'+'A';相当p[i-1]=p[i-1]-32 这是ASCII运算
i++;
}
}
main()
{char sl[100]="ab cd EFG !";
fun(sl); printf("%s\n",sl);
}
islower()判定是否是小写字母,如果是则为真,否则为假
p[i-1]=p[i-1]-'a'+'A' 如'B'='b'-'a'+'A'=1+'A'='B'
#include <ctype.h>
void fun (char*p) //接收str数组的首地址
{ int i=0;
while(p[i]) //是否为结束标记'\0'
{ if (p[i]==' '&&islower(p[i-1]) p[i-1]=p[i-1]-'a'+'A'; //如果p[i]为空 且他的左边一个字符为小字母,就把它转化成大写字母 p[i-1]=p[i-1]-'a'+'A';相当p[i-1]=p[i-1]-32 这是ASCII运算
i++;
}
}
main()
{char sl[100]="ab cd EFG !";
fun(sl); printf("%s\n",sl);
}
islower()判定是否是小写字母,如果是则为真,否则为假
p[i-1]=p[i-1]-'a'+'A' 如'B'='b'-'a'+'A'=1+'A'='B'
追问
'B'='b'-'a'+'A'=1+'A'='B' 这个我不理解额……
追答
就是ASCII值
如'B'=66 'A'=65
'b'=98 'a'=97
'b'-'B'=32
所以
'A'='a'-32='a'-('b'-'B')
展开全部
if (p[i]==' '&&islower(p[i-1]) 这句话的意思应该是 如果小写字母后面 接着出来的字符是‘ ’, 那么就将这个小写字母变相应的大写字母。 小写字母a-z的ASCⅡ码值是97-122, 大写字母的A-Z的ASCⅡ码值是65-90; while(p[i]) 这句话就是在字母数组为空的时候结束循环,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
shao朋友解释的很好,学习C语言首先是语法 格式要懂,其次就是一些函数的用法了,要彻底把它弄明白,这样才会在出问题的时候想方法 去解决,程序一步步的看,每步都要看懂是什么意思才行,加油吧 朋友
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询