c语言入门问题 第一张第五题D选项为什么错,第二张不明白,求详解

 我来答
吉祥二进制
高粉答主

2013-06-24 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84573

向TA提问 私信TA
展开全部
//第一个问题

1、先弄明白复合语句是什么? 把多个语句用括号{}括起来组成的一个语句称复合语句
2、举例:
int main()
{
int a = 2;

if (a==2) { int a = 3; cout<<a<<endl;} //这里是复合语句 此处输出的a值为3

cout<<a<<endl; //此处输出的a值为2
return 0;
}
所以,函数作用内复合语句中的中定义的变量 只在复合语句块中有效,换句话说只在{}之内有效。

//第二个问题
你原来选的答案是A,显然是把序号弄错了,c/c++中的数组序号是从0开始的,当k=2时,它实际上是指向"SSSWLIA"批第3个元素
S S S W L I A
| | | | | | |
0 1 2 3 4 5 6

观楼主英俊潇洒、风流倜傥,必当世之豪杰,诚邀楼主加入0x30百度贴吧,共商义举,成千秋霸业。
_哆啦A梦_III
2013-06-23 · 超过12用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:28.6万
展开全部
第五题的D
变量的有效域是以{}来分的,比如if(){inti};那么在{}外用i就是非法的,所以不是在本函数范围内有效。
第二张的程序意思是
从第三个s开始循环直到数组结尾
k=2时c=s,执行putchar()输出s,continue进入下次for循环
k=3时c=w,执行putchar()输出w,continue进入下次for循环
k=4时c=l,执行continue进入下次for循环
k=5时c=i,执行++k,break停止switch,执行putchar('*')输入*,k++进入下次循环
由于此次先后有++k,k++分别对k加1所以k=7;c=‘\0’for终止程序结束
所以结果是B
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老婆你在哪里丫
2013-06-23 · TA获得超过121个赞
知道答主
回答量:80
采纳率:0%
帮助的人:52.9万
展开全部
第一张,比如在一个函数中有个循环语句for(int i=0;i<10;i++),这个变量只在循环中有效, 不是函数内都有效。
第二章:定义了七个元素的字符数组str,从下标0开始,也就是str[0]=S,str[1]=S....类推str[6]=A,
因为k=2,所以从str[2]是第三个数S,进入switch选择结构,当这个字符为I时,结束本层循环,等于L的时候结束一次循环,即执行k+1后继续判断,其他情况在输出那个字符后跳出本次循环,所以结果就是SW*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tq0cdxa
2013-06-23 · TA获得超过123个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:208万
展开全部
只在它那个复合语句里有效
char str[]="SSSWLIA",c;//定义字符数组和字符
int k;//整形
for(k=2;(c=str[k])!='\0';k++)//循环从k=2 判断 str[k] 是不是\0 \0代表字符串结束
switch(c)//选择
循环第一次 c=str[2];//C就是第三的个字符 S 字符串下标从0开始
循环第一次 c=str[3];//C就是第三的个字符 W 字符串下标从0开始
循环第三次 c是L就执行CONTINUE;后面不执行继续循环
四次 c=I break;退出循环
最后加了个*
所以SW*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谜一样的人_bd
2013-06-23 · TA获得超过314个赞
知道答主
回答量:75
采纳率:0%
帮助的人:67.7万
展开全部
楼上说了第一题,我说第二题,第二题中char数组是从0开始的,k=2表示第3个字符,所以最多只有1个S,A选项排除,最后肯定运行putchar('*')所以结尾肯定是* 所以C D选项排除 选择B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式