第十一次作业总结

实验1.冒泡法进行排序

#include<stdio.h>
 void sort(int a[80],int n)
{
     int i,j,t;
     for(i=0;i<n;i++)
     {
        for(j=i+1;j<n;j++)
        {
            if(a[i]>a[j])
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        
        }    
    }
     
}
 int main()
{
    int a[80],n,i;
    printf("输入一个整数n:");
    scanf("%d",&n);
    printf("输入%d个数:",n);
    for(i=0;i<n;i++)
    {
    scanf("%d",&a[i]);
    }
    return 0;
}

实验2.在数组中查找指定元素

#include<stdio.h>
int search(int list[80],int n,int x)
{
    int i;
    for(i=0;i<=n;i++)
    {
        if(x==list[i])
        printf("Index is %d
",i);
        break;
    }
    if(x!=list[i])
    printf("-1
");
}
int main()
{
    int a[80],n,x,i;
    printf("输入元素的个数n:");
    scanf("%d",&n);
    printf("输入数组:");
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("输入待查找元素x:");
    scanf("%d",&x);
    search(a,n,x);
    return 0;
}

实验3.报数游戏

#include<stdio.h>
void countoff(int n,int m,int out[80])
{
    int i,j;
    for(i=0;i<n;i++)
    {
        out[i]=i+1;
    }
    while(out[i]<n)
    {
        for(i=0;i<n;i++)
            if(out[i]!=0)
            j++;
                if(j==m)
                {
                    printf("%d
",out[i]);
                    out++;
                    j=0;
                    out[i]=0;
                }
                else if(i==n-1)
    break;
    }
}
int main()
{
    int a[80],x,y;
    printf("输入初始人数n:");
    scanf("%d",&x);
    printf("输入退出位次m:");
    scanf("%d",&y);
    countoff(x,y,a);
    return 0;
}

一.知识点总结:

1.如果有一个实参数组,想在函数中改变此数组的元素的值,实参与形参的对应关系有以下几类情况:

(1)形参和实参都用数组名

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

(2)实参用数组名,形参用指针变量

通过指针变量值的改变可以指向实参数组的实参数组的任一元素

(3)实参和形参都用指针变量

先使实参指针变量指向数组的首地址,然后将实参的值传给形参,通过指针变量值的改变可以使其指向数组的每个元素

(4)实参为指针变量,形参为数组名

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

2.冒泡排序:

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

3.选择排序:

对一个队列里的数据,选出当前最大或者最小的值,然后将他与队首的数据交换,然后从第二个开始,进行相同的操作,但由于他不像冒泡一样需要不停的交换位置,所以会比冒泡快一些

二.实验过程中遇到的问题及解决方法

      这次作业对于冒泡法排序不太理解,不会使用,上课时老师也只讲了一个例子,所以在课下让同学帮忙讲了讲,弄懂了课上不懂的例子

三.实验心得:

      在课上老师带着做题,跟着老师做题课下的作业基本上都能完成,这次作业的冒泡排序在课上讲的例子不多,题也做的不多,对冒泡排序还不太理解,所以需要在课下多加练习。

原文地址:https://www.cnblogs.com/yanmojie/p/6139444.html