以下程序运行后输出的结果第一行为___,第二行为____
#include<stdio.h>
void main()
{ int i=5;
do{
switch(i%2)
{ case 0:i--;break;
case 1:i--;continue;
}
i--;printf("%d\n",i);
}while(i>0)
}
答案是____2__ __0______
以下程序运行后输出结果的第一行为_______,第二行为________
#include<stdio.h>
int fun(int a[],int n,int b[])
{int i=0,j,m=0,c,x;
for(i=0;i<n;i++)
{ x=a[i];c=1;
for(j=i+1;j<n;j++)
if(a[j]==x) c++;
else {i=j-1;break;}
if(j>=n)i=j;
if(c==1) b[m++]=x;
else { b[m++]=-c;b[m++]=x;}
}
return m;
}
void main()
{ int x[]={4,4,4,4,4,4,4,4,1,2},y[10],i,j,n=10;
n=fun(x,n,y);
for(i=0;i<n;i++)
{ if(i%2==0)printf("\n");
printf("%5d",y[i]);
}
}
答案是-8 4
1 2
请高手帮忙啊,这两题是怎么做的,谢谢
第一题:
第一次5%2=1,所以执行i--,得i=4,因continue继续,所以用4%2=0,执行case0,i--得3,跳出,跳出后继续--得2,打印输出。下一次循环用2%2=0,执行case 0,i--得1,跳出继续--,得0;所以输出为2和0
第二题:
调用函数后,主要看里面的循环情况,第一次循环i=0;c=8;当j=8时,跳出,i=7,此时得b[0]=-8,m=1;b[1]=4,m=2;
执行i++,得i=8,进入第二次外层循环,a[j]=a[9]不等于a[8]直接break跳出,i=j-1=8;此次执行c==1时,b[2]=a[8]=1,m=3;
执行i++,得i=9,进入第三次外层i循环,a[i]=a[9],此时j=10,不小于10,所以内层循环不执行,跳出执行当j>=n,i=j,所以此时i=10;因为c=1,所以继续执行b[3]=a[9]=2,m=4;
最后i=10,不执行循环,所以返回m值为4.即n=4.
主函数里面当i%2==0时,换行输出,所以最后的输出结果应该为
y[0]=-8 y[1]=4
y[2]=1 y[3]=2
你的程序排版太不规范了,呵呵