C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 368|回复: 6

懂C语言的进来看看 [复制链接]

Rank: 1

主题
0
帖子
6
C币
8 枚
在线时间
2 小时
发表于 2010-8-31 15:28:35 |显示全部楼层
#include "stdafx.h"
void sort(int x[], int n)
{
for(int i=0; i<n-1; i++)
{
  int p=i;
  for(int j=i+1; j<n; j++)
   if(x[j] < x[p])
    p=j;
  if(p != i)          为什么要判断p不等于i呢,不判断不行么?
  {
   int temp;
   temp=x[p];
   x[p]=x[i];
   x[i]=temp;
  }
}
}
int main(int argc, char* argv[])
{
int a[10];
int * p=a;
for(int i=0; i<10; i++)
  scanf("%d", p++);
p=a;
sort(p, 10);

for(i=0; i<10; i++)
  printf("%d ", *(p+i));

return 0;
}

Rank: 12Rank: 12Rank: 12

主题
18
帖子
318
C币
1381 枚
在线时间
235 小时
发表于 2010-8-31 21:47:38 |显示全部楼层
行不行自己试试不就知道拉~还有你看看if里是什么意思,不就把第p和第i个的值交换吗,所以有跟没有结果都一样,我说的是结果,至于其他什么不一样自己想去,

Rank: 1

主题
1
帖子
42
C币
44 枚
在线时间
12 小时
发表于 2010-9-1 15:46:06 |显示全部楼层
这是如果前面的数小于后面的就不交换,如果大于呢,则不执行for循环,这样p就不等于i了,所以就两个数交换,这是个很简单的排序嘛,搞清那if和for、的作用就可以了

Rank: 1

主题
0
帖子
11
C币
13 枚
在线时间
1 小时
发表于 2010-9-6 16:32:19 |显示全部楼层
条件从句是不??????

Rank: 1

主题
0
帖子
18
C币
3 枚
在线时间
3 小时
发表于 2010-9-6 18:12:47 |显示全部楼层
#include "stdafx.h" void sort(int x[], int n) { for(int i=0; i<n-1; i++) {   int p=i;   for(int j=i+1; j<n; j++)    if(x[j] < x[p])     p=j;   if(p != i)          为什么要判断p 不等于i呢,不判断不行么? 《》为了执行下面的语句,你看把这句省略了后面的就无法换位 {    int temp;    temp=x[p];    x[p]=x[i];    x[i]=temp;   } } } int main(int argc, char* argv[]) { int a[10]; int * p=a; for(int i=0; i<10; i++)   scanf("%d", p++); p=a; sort(p, 10); for(i=0; i<10; i++)   printf("%d ", *(p+i)); return 0; }

Rank: 1

主题
0
帖子
10
C币
31 枚
在线时间
1 小时
发表于 2010-9-10 20:42:44 |显示全部楼层
看不懂  来学习 下!

Rank: 2

主题
8
帖子
17
C币
27 枚
在线时间
5 小时
发表于 2010-9-19 12:12:42 |显示全部楼层
MFC???呵呵。
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-7 23:03

©2009-2011 cyuyan.com.cn

回顶部