C语言[指针作为函数参数,指针访问数组元素]编写函数可以对任意个整型元素的数组排序,用指针实现 编写函数可以对任意个整型元素 的数组排序,用指针实现函数原型...

作者&投稿:茌阁 (若有异议请与网页底部的电邮联系)
看看我这个,自动生成N个整数的随机数,并排序,还可以查找,有点乱啊不好意思

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int * getnumbers(int a[],int N)
{int i;srand((unsigned)time(NULL));for(i=0;i<N;i++){ a[i]=rand()%98+1;}return a;}int * bubble(int a[],int n){int i,j;for(i=0;i<n;i++){for(j=n-2;j>=i;j--){if(a[j]>a[j+1])exchange(a+j,a+j+1);}}return a;} int exchange(int *a,int *b){int t;t=*a;*a=*b;*b=t;}void output_array(int a[],int n){int i;for(i=0;i<n;i++){printf("%d ",a[i]);}printf("\n");}int search(int key,int a[],int n)//返回值是数组序号,而不是真正序列 {int left=0,right=n;int mid;int flag=0;while(left<=right){ mid=(left+right)/2;if(key==a[mid]) {return mid;} else if(key>a[mid]) left=mid+1;else if(key<a[mid]) right=mid-1; } return -1;}

int main()
{
int num;printf("----------冒泡排序和折半法演示---------\n"); printf("请输入数组的个数:");
scanf("%d",&num);
int a[num];
getnumbers(a,num);
puts("before");
output_array(a,num);
bubble(a,num);puts("now");
output_array(a,num);
int key;
printf("请输入要找的数字:");
scanf("%d",&key);search(key,a,num);if(search(key,a,num)==-1) printf("呵呵,没找到\n");
else printf("他在第%d的位置",search(key,a,num)+1);
return 0;
}

C语言的排序库函数是很好用,如果你是用于编程的话,那个是比较好的选择,它肯定比你写的算法效率要高,如果是作业神马的就当我没有说。

6.编写函数去除数组中的负数,使用指针作为参数。在主函数中,输入数组元素和输?~

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!(*m)-- ; /*m为什么要加括号,不加括号就不行*/
这句加括号意思就是指针m所指向的元素的值加1 不加括号就是使m指针所指向的数组下标移向下一元素 f(x,&n) ; 这句 X是数组 x存的就是数组元素的首地址 指针存的就是地址 &n 这里的n是变量并不是地址 所以要用取地址符&非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

#include
void SelectionSort(int *p, int n)
{
int i,j;
int min;
int t;
for(i = 0; i < n-1; i ++)
{
int min = i;
for(j = i+1; j < n; j ++)
if(p[min] > p[j])
{
min = j;
}
t = p[min];
p[min] = p[i];
p[i] = t;


}
}
int main(void)
{
int i;
int a[10] = {-9,8,7,6,-5,4,3,2,-1,0};
SelectionSort(a,10);
for(i = 0; i < 10; i ++)
printf("%-3d",a[i]);
return 0;
}

【指针作为函数参数、指针访问数组元素】编写函数,在上题的基础上,将...
答:C语言,程序如下: #include <stdio.h> void SelectSort(int * a) { int max,temp,pos; int i,j; for(i=0;i<9;i++) { max=a[0]; pos=0; for(j=0;j<10-i;j++) { if(a[j]>max) { pos=j; max=a[j]; } } temp=a[9-i];...

C语言[指针作为函数参数,指针访问数组元素]编写函数可以对任意个整型元...
答:{int i;srand((unsigned)time(NULL));for(i=0;i<N;i++){ a[i]=rand()%98+1;}return a;}int * bubble(int a[],int n){int i,j;for(i=0;i<n;i++){for(j=n-2;j>=i;j--){if(a[j]>a[j+1])exchange(a+j,a+j+1);}}return a;} int exchange(int *a,int...

C语言指针数组做函数参数,与指针变量做函数参数
答:要改变一个变量的值,到主调函数中也生效,那就必须穿地址(传指针), 否则不行。不过 并不是指针类型就可以,而必须是要修改类型的指针。比如 你要修改int 就要传int 要修改 char * 就要传char 然后 在函数中改变参数指向空间的值,也就是修改*p的值。在你第一个 修改的是char* 传的是char**...

C语言指针作为函数参数问题
答:} 首先要说明的是int *ptr,这时候ptr指向一个不明确的地址,在这种情况下getptr(ptr,10);这一句传一个地址给getptr里面的p指针,这时候p指针获得的是ptr指针的一个副本,确切的说是ptr指向的对象的内存地址,所以这种方式在函数里面可以用来传一个指针指向的数据,这个数据是引用,但是指针还是副本,就是...

c语言中用一个函数指针作为另一个函数的参数,该怎么解决
答:首先需要声明函数指针的类型(下例子中的typedef int (*fpFunt)(int a,int b),再定义某个函数(下例中的Add),在其参数列表中使用该函数指针类型,同时需要定义另一函数(下例中的fpAdd,注意该函数形式要和fpFunt一致,本例子中是返回一个整数,两个整型参数)作为实参用。这里在手机上使用易历...

C语言中 指针做函数参数传递二维数组
答:void fun(int (*p1)[3],int (*p2)[3]);int main(){ int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;int p2[3][3] = {0};int i = 0, j = 0;fun(p1,p2);for(i = 0;i < 3;i++){ for(j = 0;j < 3;j++){ printf("%d ",*(*(p2+i)+j));} prin...

在c语言中,指针作为函数参数,形参只能传递值,而不能传递地址,是怎么回 ...
答:C语言中,函数参数只能传值。与传值对应的是传引用,C语言不支持函数参数传引用,C++语言才支持。C++传引用函数:void foo(int& a) { a = 3; } 假如a = 2,执行foo(a)后,a = 3。--- C语言可以模拟传引用,方法是通过指针来实现:void foo2(int* ap) { *ap = 3; } 假如a = 2...

C语言,使用指针作为函数参数,写一求数组中最大值和最小指的函数
答:voidhanshu(int*arry,intsize,int*m,int*n){ *m=arry[0];*n=arry[1];for(inti=0;i<size;i++){ if(arry[i]>*m)*m=arry[i];if(arry[i]<*n)*n=arry[i];} } intmain(intargc,constchar*argv[]){。inta[]={1,5,6,2...

C语言中怎么给一个结构体用scanf进行赋值?
答:结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存。举例:编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数组(每组三个成绩)(int[3]),依次调用函数 include <stdio.h> include <stdlib.h> struct student ...

一道C语言编程:利用指针作函数参数,将从键盘输入的字符串逆序存放,并...
答:问题1:你用指针pt传递数组a,但是在fun函数里,却没有使用该指针反而新建局部数组a;问题2:fun函数里,定义的b数组,你是指定下标赋值的,缺少结束符‘\0’,如果字符未满,那么输出时无法判断字符串结束符,这里我用memset函数把b每一个字符都初始成‘\0’,你也可以在循环赋值结束后,在b最后一个...