c语言sort函数c语言 ,编写一个函数input(),sort(),实现数组的输入,排序。

c语言sort函数  时间:2021-06-06  阅读:()

这个c语言程序中的sort函数为什么没有或者不需要返回值

因为这里,数组的传递本身就是地址,所以,在sort里面,对数组的操作影响到调用地方的数组的值,而这正是需要的,所以sort不需要返回值,如果你还需要其他信息需要sort返回,可以使用返回值。



C语言 排序 函数

一群菜鸟不懂的乱说。

我把楼主的代码改了一些,如下

#include<stdio.h>

int input(int data[], int argc, int *n) { int i; printf("请输入要输入数的个数"); scanf("%d", n); if(*n > argc) { printf("segment fault!"); return -1; } for(i = 0; i < *n; i++) { printf("输入的第%d个数.", i+1); scanf("%d", data+i); //canf("%d", &data[i]); } printf("输入的数是: "); for(i = 0; i < *n; i++) { printf("%5d ", data[i]); } return 0; }

void sort(int n, int data[]) { int i, j, temp; for(i = 0; i < n-1; i++) { for(j = i+1; j < n; j++) if(data[i] < data[j]) { temp = data[i]; data[i] = data[j]; data[j] = temp; } } printf("排序后的结果如下: "); for(i = 0; i < n; i++) printf("%5d ", data[i]); }

int main() { int data[100]; int n; if(input(data, 100, &n) == -1) return -1; sort(n, data); return 0; }

对于以上代码,做出如下解释:

(1)C语言的参数有形参和实参的说法,形参在传递到函数内的时候,复制一个副本给函数,在函数内部和外部是两个完全不同的变量,函数结束,空间也被释放,所以不能在函数内部来改变外部的值。

所以要像楼主这样用一个函数给一个变量赋值,要用实参int input(int data[], int argc, int *n)中的int *n就是实现形式,这种办法把n的地址传递给函数。

当然,在调用函数的时候也同样要传递地址指针类型(&n)。

(2)

if(*n > argc) { printf("segment fault!"); return -1; }

这一段是我加进去的,因为按照楼主的意思,data数组的长度也要传递进去,但是意思何在?所以只好加了这一段,并把函数改为有类型的,以检验是否有数据溢出。

(3)scanf("%d", data+i); //scanf("%d", &data[i]);

这里我改动的主要原因是为了提升程序速度,scanf("%d", &data[i]);同样可以运行,但是寻址一次,又回头要地址,这样绕了一圈,没有必要。

对于楼主提几点建议:

(1)C语言的精髓在于指针,刚才说到的实参,就是用指针的概念实现的。

scanf("%d", data+i); 一行,同样也是把数组头指针加上偏移地址,得到所要的地址。

(2)C语言编程的时候特别要注意数据的溢出,这是所有初学者头疼的问题之一。

建议在一开始就养成习惯,经常检验数组的边界。

(3)void main一看就知道是看潭浩强的书长大的程序员。

建议我们都用int main(){ return 0; }的形式,可以看看C语言之父K&R的书。

主函数的返回值是告诉操作系统,这个函数是正常退出(返回0),还是异常退出(非0,经常是-1)。

(4)在做实际项目的时候,程序经常是要回头看的,也经常是要给别人看以达到维护的目的的。

除了要养成良好的文档书写习惯以外(学习软件工程以后你就会掌握),还要养成良好的编程风格,这里我建议看《thinking in C++》,并按照里面例题的风格,养成自己的习惯。

c语言 ,编写一个函数input(),sort(),实现数组的输入,排序。

input()里面的输入的数据存放在数组中,只要在调用sort()的时候使用数组作为参数就可以!例如下题: //从键盘输入n(1<n<=10)个数据,并对这n个数据从小到大排序 #include<stdio.h> void main() { int i,n,a[10]; void input(int a[],int n); void sort(int a[],int n); printf("请输入数据的个数n:"); scanf("%d",&n); input(a,n); sort(a,n); printf("排序结果:"); for(i=0;i<n;i++) printf("%6d",a[i]); printf(" "); } void input(int a[],int n) { int i; printf("请输入n个数据:",n); for(i=0;i<n;i++) scanf("%d",&a[i]); } void sort(int a[],int n)//选择法排序 {int t,index,k,i; for(k=0;k<n-1;k++) {index=k; for(i=k+1;i<n;i++) if(a[index]>a[i])index=i; t=a[index];a[index]=a[k];a[k]=t; }}

10gbiz($2.36/月),香港/洛杉矶CN2 GIA线路VPS,香港/日本独立服务器

10gbiz发布了9月优惠方案,针对VPS、独立服务器、站群服务器、高防服务器等均提供了一系列优惠方面,其中香港/洛杉矶CN2 GIA线路VPS主机4折优惠继续,优惠后最低每月仅2.36美元起;日本/香港独立服务器提供特价款首月1.5折27.43美元起;站群/G口服务器首月半价,高防服务器永久8.5折等。这是一家成立于2020年的主机商,提供包括独立服务器租用和VPS主机等产品,数据中心包括美国洛...

Kinponet是谁?Kinponet前身公司叫金宝idc 成立于2013年 开始代理销售美国vps。

在2014年发现原来使用VPS的客户需求慢慢的在改版,VPS已经不能满足客户的需求。我们开始代理机房的独立服务器,主推和HS机房的独立服务器。经过一年多的发展,我们发现代理的服务器配置参差不齐,机房的售后服务也无法完全跟上,导致了很多问题发生,对使用体验带来了很多的不便,很多客户离开了我们。经过我们慎重的考虑和客户的建议。我们在2015开始了重大的改变, 2015年,我们开始计划托管自己...

日本vps云服务器选择指南。

日本vps云服务器怎么选择?很多人都会遇到日本vps和日本云服务器怎么选择的问题,日本云服务器具有免备案的特点。小编今天就分析一下日本云服务器价格多少钱,以方便大家选购的时候有个更加合适的取舍。日本云服务器租用前比较选择,高性能、安全、高效、免备案日本云服务器是很关键的因素。那么,日本云服务器该怎么选择呢?日本作为我们的邻国,与其贸易、文化往来是比较多的。日本云服务器价格多少钱一年?一、日本·CN...

c语言sort函数为你推荐
awvawv格式是否等于MP4格式防火墙排名什么防火墙世界第一啊?(急!!!)印度尼西亚国家代码印尼身份证号的编码规则是什么?(比如中国的1-6位是地址代码,7-14位是出生日期码等)天翼校园宽带校园天翼宽带是什么上网类型云盘网谁知道免费的网盘?审计平台什么叫数据库审计系统?pmp格式PMP的格式第三方支付系统有哪些第三方支付系统开发公司病毒分析网站25个最恶意的病毒网站yy号注册怎么申请yy号
美国vps 美国vps评测 重庆vps租用 西部数码vps com域名抢注 ipage 国外私服 一元域名 云全民 中国智能物流骨干网 dd444 炎黄盛世 工信部icp备案号 能外链的相册 申请网页 yundun 登陆空间 godaddy空间 网络速度 新网dns 更多