C程序设计,C语言,计算机,高手,帮忙,谢谢!!

#include<stdio.h>
#define N 9
int fun(int x[])
{
int i,j,k,t,mid,b[N];
for(i=0;i<N;i++)
b[i]=x[i];
for(i=0;i<=N/2;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(b[k]>b[j])
k=j;
if(k!=i)
{
t=b[i];b[i]=b[k];b[k]=t;
}
}
mid=b[4];
for(i=0;i<N;i++)
if(x[i]<=mid)
x[i]=mid;
return mid;
}
void main()
{
int i,x[N]={1,5,7,23,87,5,8,21,45};
for(i=0;i<N;i++)
printf("%d",x[i]);
printf("\nThe mid data is:%d\n",fun(x));
for(i=0;i<N;i++)
printf("%d",x[i]);
printf("\n");
}

我做的是国二C上级题。
要使9个正整数:1 5 7 23 87 5 8 21 45
找出按照升序排序的中间数,也就是8.然后把小于等于8的所有正整数换成8,并按照原来的顺序排列。
结果应该是8 8 8 23 87 8 8 21 45

attention:!!!
程序的第11行,也就是第三个for循环中,j=i+1的值是一个固定的值吗?
我认为 i 是变量,i 的值一直在加1直到 i 等于N/2为止。
也就是说:如果 i 等于 0,那么j=1,j<N,j++,之后跳出此for循环;
i 等于0,那么 j =1,j<N,j++ //j执行之后为2
i 等于1,那么 j =2,j<N,j++ //j执行之后为3
i 等于 2,那么 j=3,j<N,j++ //j执行之后为4
......
attention!!!!!

请问我这样分析对吗?
还是应该是下面的这种:
从第11行开始。
i 是变量,但是i 的变化不影响下面的j的值,只是在j 赋值的时候用一次
也就是说 j=i+1,j<N,j++
如果i=0,那么j=1,j<N,j++ //j执行之后为2
i=1, 那么 j=1,j<N,j++ //j执行之后为3
1=2, 仍然 j=1,j<N,j++ //j执行之后为4
........

attention!!!!

结果相同,但是我想要直到正确的分析思路。
前者对,还是后者?
我个人认为后者对。

第1个回答  2011-05-08
首先你要先理解你写的程序,多试几次就能找到答案!!!
相似回答
大家正在搜