帮我解释一下这道C语言的编程题目????

程序填空:从键盘输入字符串,以回车结束.通过指针操作,将所有大写字母转换为小写字母,其它字符不变,请填空.#include<stdio.h>main(){inti=0;c... 程序填空:从键盘输入字符串,以回车结束.通过指针操作,将所有大写字母转换为小写字母,其它字符不变,请填空.
#include <stdio.h>
main()
{int i=0;
char s[80],*p;
printf("INPUT STRING:\n");
while((s[i]=getchar())___'\n') /*$BLANK1$*/
i++;
p=s;
while(___!='\n') /*$BLANK2$*/
{if(*p>='A'&&*p<='Z')
*p=*p___; /*$BLANK3$*/
p++; }
printf("%s",s); }
该题目一共有三个空,我是这样填写的:
(1)!=
(2)*p
(3)+32
这个题目是C语言上机模拟题中的,提交答案后,也显示正确.但是有一个疑问,就是最后一句输出字符串s的打印语句,能用%s来输出是不是题中使用’\n’作为字符串的结束标识符也是可以的啊?是不是还可以用别的字符代替’\0’呢?另外就是说,假设就按照题中的方法输出,当输入"aBcZ#F"后,除了输出想要的”abcz#f”之外,换行后还有一些奇怪的字符显示在后面?(因为对照S[80]数组中的随机内容的显示,应该不是那些奇怪的字符)那么这里的'\n'到底能不能作为字符串的结束标识符来取代’\0’呢?显示出来的奇怪字符序列又是什么?什么时候结束输出?请大家帮我解释一下.谢谢,最好能详细一些,能在机器上运行当然最好了.
展开
 我来答
liujun_7177
2006-12-16 · TA获得超过649个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:634万
展开全部
首先,字符串必须以\0结束而不能以\n之类的结束.\n作为换行处理
换行后出的奇怪字符是因为你定义s[80]时没有初始化,系统给s[80]分配一段空间,里面的内容是不确定的;有的编译器可能会自动初始化的.
如你定义时char s[80] = {0}就不会出现这种情况了.
遇到'\0'就结束,s[80]实际上有81个字节,最后一个是'\0';
如你在p=s; 前加一句s[10] = '\0';那么无论你输入多少字符都只输出10个
EnglishRn
2006-12-16 · TA获得超过1169个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:406万
展开全部
/*我上机没有出现什么东东,正常啊@*/
while((s[i]=getchar())___'\n') /*$BLANK1$*/
一定要\n要不然会死循环
while(*p!='\0') /*$BLANK2$*/
可以\0
s[80]="aBcZ#F\n"
s[80]=aBcZ#F\n\0
已经是这样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
12215462
2006-12-16 · TA获得超过207个赞
知道小有建树答主
回答量:843
采纳率:0%
帮助的人:294万
展开全部
作业自己做!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式