求高手解析void ss(char *s,char t) { while(*s) { if(*s==t)*s=t-′a′+′A′; s++; } }

求高手解析void ss(char *s,char t) { while(*s) { if(*s==t)*s=t-′a′+′A′; s++; } },第1张

是B。

把所有小写的d转换成大写的D。

那段程序中的那句少了单引号 ,应该是

if(*s==t)*s=t-'a' + 'A' ;

这个函数的作用就是扫描字符串,把指定的字符转大写。

因为调用的时候,第二个参数 c中存储的是 'd'

因此就是把其中所有的'd'转大写了。

扩展资料:

函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y))即是把max调用虚银的返回值又作为printf函数的实参来使用的。

在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是销哪指对实参表中各量是自左至右使用呢,还是自右至左使用。对此,各系统的规定不一定相同。

参考资料来源:百度百科-函数调用亏誉码

楼主好!

我给你分析分析啊!

首先,给你的程序补充完整了,如下:

#include <stdio.h>

void ss(char *s,char t)

{

while(*s)

{

if(*s==t)

*s=t-'a'+'A'

s++

}

}

void main()

{

char str1[100]="abcddfefdbd",c='d'

ss(str1,c)

printf("%s\n",str1)

}

数出的结果是 abcDDfefDbD

由数出的结果楼主应该知道,这个程序的功能是把字符串中的小写d改为大写D

过程:

调用函数ss(str1,c)既把字符数组的首地址str1赋值给形参s,这样s也就指向了数组str1的首地址。

while(*s)当数组元亮孝素到最后一个时,下一次就跳出循环;

if(*s==t)

*s=t-'a'+'A'既当数组中的元素等于小写d时,执行*s=t-'a'+'A'既转化为ASCII代码计算,然后再赋值给数组元素,既裤含用大写的D赋值给数组元素。

然后执行s++指向胡键笑下一个数组元素

重复执行上面的转换,到最后一个元素的下一个则跳出循环。

最后输出转换后的数组!

楼主懂了吗?

嘿嘿!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12444152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存