*p=touppercase的用法(*p)的意思是

返回:一个新的全部大写的字符串
提示:原字符串不改变。
 

 

发布了70 篇原创文章 · 获赞 9 · 访问量 1万+

如4楼所言,这段代码有两个问题,使咜不会正常运行

我把这段代码加满了注释,并作了缩进

//i是循环变量,代表着循环到第i+1个人
//k是循环到的那个人报的数
//m是已经退出了几个囚
//以上给每个人都编好了号
while(m < n-1) //当退出的人等于n-1人时(即只剩下一个人),该循环结束
*(p+i)=0; //因为这个人数到3,把他的值设为0表示他已退出该圈
k=0; //这样,下一个人又是报数1
m++; //又多报到一次3即又退出一个人
while(*p==0)p++; //如果这个人已经退出,那么不理他,看下一个人有没有退出
//上面这句话执荇完之后,p指向剩下来那一个

如果只是从第一个人报数报到第n个,肯定是还没退完的这时候,应该又从第一个人数起了可是代码中卻没做这件事,它只会一直数下去数第n+1个这时会读取数组num还没有初始化的部份——无意义的部份。这个时候程序的表现取决于编译器。

因此应该让它绕回来。

//i是循环变量代表着循环到第i+1个人
//k是循环到的那个人报的数
//m是已经退出了几个人
//以上,给每个人都编好了号
while(m < n-1) //当退出的人等于n-1人时(即只剩下一个人)该循环结束。
*(p+i)=0; //因为这个人数到3把他的值设为0,表示他已退出该圈
k=0; //这样下一个人又是报数1
m++; //又多報到一次3,即又退出一个人
while(*p==0) p++; //如果这个人已经退出那么,不理他看下一个人有没有退出。
//上面这句话执行完之后p指向剩下来那一个。

我要回帖

更多关于 林子闲沈瑶 的文章

 

随机推荐