首页 > 代码库 > 作业十一

作业十一

#include<stdio.h> 
void sort(int a[],int n);
int main()
{
    int n,a[5];
    int i;
    printf("Enter n(n<=5):");
    scanf("%d",&n);
    printf("Enter a[%d]:",n);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    sort(a,n);
    printf("After sorted,a[%d]=",n);
    for(i=0;i<n;i++)
    printf("%3d",a[i]);
    return 0;
}
void sort(int a[],int n)
{
    int i,j,t;
    for(i=1;i<n;i++)
    for(j=0;j<n-i;j++)
    if(a[j]>a[j+1])
            {
    t=a[j];
    a[j]=a[j+1];
    a[j+1]=t;
            }
}

技术分享

二查找函数

#include<stdio.h>
int search(int list[],int n,int x);

int main()
{
    int n,x,list[5];
    int i;
    printf("Input n:");
    scanf("%d",&n);
    printf("Input %d integers:",n);
    for(i=0;i<n;i++)
    scanf("%d",&list[i]);
    printf("Input x:");
    scanf("%d",&x);
    search(list,n,x);
    if(search(list,n,x)!=-1)
    printf("mid=%d\n",search(list,n,x));
    else
    printf("-1\n");
    return 0;
}
int search(int list[],int n,int x)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(x==list[i])
        return i;
        else
        return -1;
    }
        
}

技术分享

三报数、

#include<stdio.h>
int main(void)
{
    int count,i,m,n,no;
    int num[90];
    int *p;
    printf("enter n,m:");
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
    num[i]=i+1;
    p=num;
    count=no=0;
    while(no<n-1)
    {
    if(*p!=0)count++;
    if(count==m)
    {
    no++;
    printf("中途退出的人%d:%d\n",no,*p);
    *p=0;
    count=0;
    }
    p++;
    if(p==num+n)
    p=num;
    }
    p=num;
    while(*p==0)
    p++;
    printf("最后的人:%d\n",*p);
    
    
}

技术分享

知识点

一实参为指针变量,形参为数组名

设p为指针变量,令p=&a[0],p为实参,对应的形参x为数组名,则函数调用时将p的值传给形参数组名x,也就是使其取得a数组的首地址,使x数组和a数组共用一段内存单元

·数组名可以使用指针形式,而指针变量也可以转换为数组形式。

对一个队列里的数据,挨个进行比较和交换,每次比较出一个当前最大或者最小的值放在队尾,然后继续下次比较,这样就跟冒泡一样,将最大或最小的数从底下“冒出来”,所以称为冒泡排序

数组的基地址是在内存中存储数组的起始位置,它是数组中第一个元素(下标为0)的地址,因此数组名本身是一个地址即指针值。

传递的是实参数组首地址,形参与实参共用同一段内存单元

 

作业十一