一道C语言题:下面的程序段运行后,输出结果是

inti,j,x=0;staticinta[8][8];for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=2*i+j;for(i=0;i<8... int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
这是道选择题,选项有9,0,18和不确定。
大侠帮帮忙哈!谢谢~
我需要详细的解释。
展开
 我来答
CraftinA
推荐于2016-01-19 · TA获得超过573个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:295万
展开全部
答案是0;

int i,j,x=0;
static int a[8][8]; //定义的时候系统自动初始化,把数组中所有的元素都赋成0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j; //将数组右上角的3X3的子矩阵赋值;(注意,此时结束时j的值是3)
for(i=0;i<8;i++)
x+=a[i][j];//这里j的值是3,所以相当于把a[0][3] a[1][3] a[2][3]到a[7][3]累加到x上,而在上面的赋值中又没有给这些值赋值,所以这些值都是0;而x的初值也是0,所以最后输出的x应当为0;
printf("%d",x);
yhy19820816
2008-08-23 · TA获得超过304个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:347万
展开全部
用static定义数组,就已经给数组初值了,即使所有的值均为0.
你用for在给数组赋值的时候,只给了a[0][0]至a[2][2]的值,即那些值现在已经有变化了.在经过两个for之后,j的值应该变为了3.
那么再经历下一个for,应该执行的语句就是x+=a[i][3],可想而知,不论你经历多少次循环,只要j是3,那么些a[n][3]就是0.因为第3列根本就没有变化过.值仍旧为0
所以结果为0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友acd2d0d
2008-08-23 · TA获得超过1488个赞
知道大有可为答主
回答量:1355
采纳率:100%
帮助的人:0
展开全部
static int a[8][8], a中的每个元素都是0

第三个for的时候 j=3, a[i][3]都是0,所以结果是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
简单又奔放灬福音8
2008-08-23 · TA获得超过538个赞
知道答主
回答量:572
采纳率:0%
帮助的人:0
展开全部
是0

E:\Case.Win\NASM>gcc z.c -o z.exe

E:\Case.Win\NASM>z
0
E:\Case.Win\NASM>

#include "stdio.h"
int main() {
int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式