C语言关于数组的问题

#include<stdio.h>main(){char*s,c[80];s=c;gets(s);while((*(++s))!='\0')if(*s=='a')brea... #include <stdio.h>
main()
{
char *s,c[80];
s=c;
gets(s);
while((*(++s))!='\0')
if( *s=='a') break;
else{ s++;gets(s);}
puts(s);
}

求运行结果
请简述过程,谢谢
上机答案是:at
展开
 我来答
继续继续X
2008-04-25 · TA获得超过233个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:111万
展开全部
#include <stdio.h> //载入标准输入输出库
main() //主函数,作为c程序的入口函数,从这里开始。
{
char *s,c[80]; //创建一个字符型的指针,一个字符型的数组
s=c; //将指针指向这个数组的开头。(数组名等于指向数组开头的指针)
gets(s); //从键盘获取输入到s,因为此时s指向c[],所以输入到了字符数组c中。
while((*(++s))!='\0') //将s后移一位,如果不等于'\0'进入循环
if( *s=='a') break; //如果当前s所指的位置字符为a,跳出循环
else{ s++;gets(s);} //否则s后移一位,继续获取s;
puts(s); //输出s;
}

程序分析:
此程序目的不明,好像是测试对指针和字符数组的了解,当while判断时将s后移,则s所致的位置为c[1],也就是输入串的第二位。
而在循环中判断后,将s++,然后再输入串,这时将清除原有的第二位以后的所有数据,保留原有的前两位在c[]中。
这样循环得出的结果是,每当输入单个字符时,while循环不运行,直接输出,程序结束,s值因为被自增,所以为'\0',输出为空。当输入的第二个字符为a时,结束程序因为s总是被自增到指向a或者空的位置,输出为a和后面的序列,如果是其他情况,则要求重新输入,直到输入的串的第二个字符为a,这时输出这个串从这个a开始的后面的部分。
wu_xiaoxiang
2008-04-25 · TA获得超过115个赞
知道答主
回答量:95
采纳率:0%
帮助的人:85.8万
展开全部
s=c; 的意思是把数组的地址给指针s,
gets(s);的意思是给c[80]赋值。因为s等于c。gets后括号加的是地址.
while((*(++s))!='\0')中的s开始值向的是c[80]中的第0个字符.*(++s)是值向下一个字符(在第一次循环是它是c[1]的意思)
if( *s=='a') break;的意思是当字符是'a'的时候结束循环,break的意思是结束
else{ s++;gets(s);} 的意思是当c[1]不等于'a'的时候在一次对c[80]赋值
最后打印这个数组
总体意思就是得到一组字符c[80]直到当c[1]等于'a'的时候打印 注意(数组是从0开始的)
例如;输入jhhkhk的时候不打印要求你在次输入直到输入*a****的时候打印.这是我自己分析的,你可以上机验证一下.如果我错了告诉我呀,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谢应宸
2008-04-25 · TA获得超过2640个赞
知道大有可为答主
回答量:2731
采纳率:66%
帮助的人:2102万
展开全部
将指针S指向数组c的头地址
接收字符,如果s指针指向的下一个元素不是结束符并且s指向的元素不是字符a,那么指针自增,接收下一个字符。
最后将字符打出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式