二级计算机C语言

来源:百度知道 编辑:互助问答吧 时间:2020/06/06 22:28:31
void ss(char *s,char t)
{while(*s)
{if(*s==t)*s=t-'a'+'A';s++ } }
main()
{char str1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1); }
程序运行后的输出结果?怎么做的?
是笔试的题

看到t-'a'+'A'就知道肯定是小写变大写,然后再看ss(str1,c)就知道是把c这个参数小写变大些。c=字符d,也就是说要把字符串str1中的d字符从小写变为大写,现在输出你会写了吧
abcDDfefDbD

这个程序是将str1中的小写c换成大写C.
输出结果是: abcDDfefDbD ;

主要看ss的子程序,当s中的字符串==第二个参数t时,就:
*s=t-'a'+'A' = t -('a'-'A') = *s- ('a'-'A'),这就是将*s换成大写.
但是,如果第二个参数t本来就是大写时,而且字符串中也有这个字符,则程序会将这个大写字符换成非字母字符了

自己上机运行一下不就知道了?
学C一定要多操作

abcDDfefDbD
函数ss的功能是如果s所指的字符和t相同则把t由小写字母转变为大写字母 然后s指向下一个字符 如此循环