输入十个整数,按由大到小的顺序排序
由于我刚学习C语言,遇到很多的困惑。在这里,希望能得到大家的指导与帮助。我学习的教材是谭浩强主编的《C程序设计》第五版。在学习指针这一章时有一例题(p242页例8.10)用指针法对10个整数按由大到小的顺序排序。这个题可以用多种方法来实现。1.直接来实现。也就是不用函数,也不用指针。看代码#include <stdio.h>int main(){int a[1...
·
由于我刚学习C语言,遇到很多的困惑。在这里,希望能得到大家的指导与帮助。我学习的教材是谭浩强主编的《C程序设计》第五版。在学习指针这一章时有一例题(p242页例8.10)用指针法对10个整数按由大到小的顺序排序。 这个题可以用多种方法来实现。
1.直接来实现。也就是不用函数,也不用指针。看代码
#include <stdio.h>
int main()
{
int a[10]; //定义数组a
int i,j,t; //定义三个整型变量
printf("please enter 10 integer numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);//给数组赋值
for(i=0;i<10;i++) //十个数,进行九轮比较
{
for(j=i+1;j<10;j++)//第一个数比较九次,依次递减
{
if(a[i]<a[j])//如果a[i]<a[j]
{
t=a[i]; //互换位置
a[i]=a[j];
a[j]=t;
}
}
printf("%4d",a[i]);
}
return 0;
}
2.用函数来实现。只用函数,不用指针。看代码:
#include <stdio.h>
int main()
{
void change(int x[],int n); //声明函数change
int a[10],i;
printf("please enter 10 integer numbers \n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); //给数组赋值
change(a,10); //调用函数change
printf("The sorted array:\n");
for(i=0;i<10;i++)
printf("%4d",a[i]);//排序后的数组
printf("\n");
return 0;
}
void change(int x[],int n)//定义change函数
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(x[i]>x[j]) //当x[i]<x[j]
{
t=x[i]; //两个数互换位置
x[i]=x[j];
x[j]=t;
}
}
}
3.用指针来实现。看代码:
#include <stdio.h>
int main()
{
void change(int x[],int n);//change函数声明
int a[10],i;
int *p;
p=a; //使指针变量指向a[0]
printf("please enter 10 integer numbers:\n");
for(i=0;i<10;i++)
scanf("%d",p++); //输入10个整数
p=a; // 指针变量p重新指向a[0]
change(p,10); //调用change函数
printf("the sorted array:");//输出排序后的10个数组元素
for(i=0;i<10;i++,p++)
printf("%4d",*p);
printf("\n");
}
void change(int x[],int n)//定义change函数,x是形参数组名
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(x[i]>x[j]) //如果x[i]<x[j]
{
t=x[i]; //x[i]与x[j]互换
x[i]=x[j];
x[j]=t;
}
}
}
我的困惑是这样的,我认为用指针来实现时,教材上在定义函数时用了四个参数,而我这里没有用那么多参数,也同样实现了,我这里有什么错误吗,错在哪里?另外我前面两个哪里有什么问题,请您不吝赐教,谢谢。
更多推荐
已为社区贡献1条内容
所有评论(0)