C程序求答案解析

#include<stdio.h>structst{charc;chars[80];};char*f(structstt);voidmain(){intk;structs... #include <stdio.h>
struct st{
char c; char s[80];
};
char * f(struct st t);
void main( )
{ int k;
struct st a[4] =
{{'1',"123"}, {'2',"321"}, {'3',"123"}, {'4',"321"}};
for(k = 0; k < 4; k++)
printf("%s\n", f(a[k]));
}
char * f(struct st t)
{ int k = 0;
while(t.s[k]!='\0'){
if(t.s[k] == t.c) return t.s+k;
k++;
}
return t.s;
}
(21) 程序运行时,第1行输出 (21) 。
A、321 B、21
C、123 D、12
(22) 程序运行时,第2行输出 (22) 。
A、21 B、12
C、3 D、1
(23) 程序运行时,第3行输出 (23) 。
A、3 B、123
C、1 D、321
(24) 程序运行时,第4行输出 (24) 。
A、123 B、1
C、3 D、321
答案 CAAD
展开
 我来答
381356532
2010-04-21 · TA获得超过553个赞
知道答主
回答量:95
采纳率:0%
帮助的人:79.5万
展开全部
#include <stdio.h> //头文件
struct st{
char c;
char s[80];
}; //到这里定义了一个结构体
char *f(struct st t); //定义一个指针函数,变量为结构体
void main( ) //main函数
{ int k;
struct st a[4] =
{{'1',"123"}, {'2',"321"}, {'3',"123"}, {'4',"321"}};//给前面定义的结构体赋值
for(k = 0; k < 4; k++)
printf("%s\n", f(a[k]));//f(a[k])是调用前面定义的指针函数,每次执行一次循环调用一次
}
char *f(struct st t)//上面每次调用函数的时候就跳转到这里,执行以下代码
{ int k = 0;
while(t.s[k]!='\0'){ //表示上面结构里定义的字符数组的值不为空时,才执行下面的if语句,一旦发现是空,if语句马上停止执行,返还到上面的porintf语句。
if(t.s[k] == t.c) return t.s+k;//这里表示若结构体里的字符数组t.s[k]的某一个元素与结构体里的字符t.c相等就执行return t.s+k;//
k++;
}
return t.s;//返回函数值给printf输出。

楼主,看完上面的解释,知道怎么来的了吧。不清楚留言。慢慢跟你讲。。。
}
yanhua0011
2010-04-21
知道答主
回答量:32
采纳率:0%
帮助的人:19.9万
展开全部
已知内存的数据为1123...2321...3123...4321...第一位为字符,后紧跟字符数串,末尾自动添加结束符'\0',根据判断条件当1=1时返回字符数组的首地址,故输出123,同样达到字符串中跟字符匹配时(2=2)返回这是t.s+k所指的地址,所以输出21,显然当3=3时,由printf函数输出3,最后由于4不等于1~3中的任何一个值,所以返回 t.s即字符串的首地址,因而一直输出到结束符'/0'为止,即输出字符串321
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
关东管领
2010-04-22 · TA获得超过129个赞
知道答主
回答量:71
采纳率:0%
帮助的人:42.8万
展开全部
为什么我把它放到VC里面没有输出呀
怪怪
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式