c达人进。。。。

来源:百度知道 编辑:UC知道 时间:2024/07/16 17:42:22
这个程序的输出结果为什么是1245120?详解
#include<stdio.h>
main()
{
int a[2]={0},i,j,k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
printf("%d",a[k]);
}

另外,这个程序应该怎么做,详解

#include<stdio.h>
void main()
{
int i=0,j=7,k,a[8]={6,2,11,4,5,9,7,8};
while(i<j) {k=a[i];a[i]=a[j];a[j]=k;i++;j--;}
for(i=0;i<8;i++) printf("%3d",a[i]);
}

1```#include<stdio.h>
main()
{
int a[2]={0},i,j,k=2;
for(i=0;i<k;i++) /*i=0 1 外层循环2次`*/
for(j=0;j<k;j++) /*j=0 1 内层循环2次`*/
a[j]=a[i]+1; /*a[j]=a[i]+1;赋值*/
printf("%d",a[k]); /*输出a[2]没有a[2]的`这里写错了吧`*/
}
第一次a=0;j=0 a[o]=a[0]+1=1;
2次 a=0;j=1 a[1]=a[1]+1=1;
3次 a=1;j=0 a[0]=a[1]+1=2;
4次 a=1;j=1 a[1]=a[1]+1=2;

2 ``当i<J时 交换a[i] a[j] ;i++ j--
a[0] 交换a[7]
a[1]交换a[6]
a[2] 交换 a[5]
a[3]交换a[4]然后输出a

第一题是因为a[k]=a[2]越界了,故产生随机数。

第二题应输出8 7 9 5 4 11 2 6,因为while语句就是使数组元素前后对调,最后再全部输出。

第一个程序 K=2 a[k] 即a[2]
越界了兄弟, 你的定义int a[2]
只有a[0]和a[1]

第二个就是 从中间将两边对换一下