我是C语言初学者,请大侠帮忙分析下面的程序,以及输出结果是多少?谢谢!

#include"stdio.h"voidmain(){inti,c;chars[2][5]={"8980","9198"};for(i=3;i>=0;i--){c=s[... #include"stdio.h"
void main()
{int i,c;
char s[2][5]={"8980","9198"};
for(i=3;i>=0;i--)
{c=s[0][i]+s[1][i]-2*'0';
s[0][i]=c%10+'0';
}

for(i=0;i<=1;i++)

puts(s[i]);

}
展开
 我来答
珍惜所有所爱
2011-05-31 · TA获得超过538个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:65.3万
展开全部
这里首先要知道字符和其所对应的整数值之间的关系,'0'的值为48,'1'的值为49,'8'的值为56,'9的值为57。
从循环开始讨论,当i=3时,s[0][3] + s[1][3]-2*'0' 等价于 48+56-2*48 =8,所以s[0][3]=c%10+'0'也就等价于8%10 +48 =56也就对应与'8'了所以s[0][3]为8
同理i=2是为 s[0][2] + s[1][2]-2*'0' = 56 +57 -2*48 =17 然后17%10 +48 =55对应于7
i=1是为 s[0][1] + s[1][1]-2*'0' = 57 +59 -2*48 =20 然后20%10 +48 =48对应于0
i=0是为 s[0][0] + s[1][0]-2*'0' = 56 +57 -2*48 =17 然后17%10 +48 =55对应于7
所以输入s[0]=7078 而s[1]为9198
百度网友f3d6c64
2011-05-31 · 超过24用户采纳过TA的回答
知道答主
回答量:122
采纳率:0%
帮助的人:74.9万
展开全部
s={'8' '9' '8' '0'
'9' '1' '9' '8'}
从最后一列,c=‘0’ +‘8’-2*‘0’=‘0’-‘0’+‘8’-‘0’=8,c变成了int型
s[0][3]=c%10+'0'=8%10+‘0’=8+‘0’;即‘0’向后增8个长度,为‘8’,所以s[0][3]=‘8’
而第二排的数保持不变
同理向后计算,最后的结果为
7 0 7 8
9 1 9 8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式