标签:break 最大 情况 指定 输入 out nbsp i++ 实验
实验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\n",i); break; } if(x!=list[i]) printf("-1\n"); } 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\n",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.选择排序:
对一个队列里的数据,选出当前最大或者最小的值,然后将他与队首的数据交换,然后从第二个开始,进行相同的操作,但由于他不像冒泡一样需要不停的交换位置,所以会比冒泡快一些
二.实验过程中遇到的问题及解决方法
这次作业对于冒泡法排序不太理解,不会使用,上课时老师也只讲了一个例子,所以在课下让同学帮忙讲了讲,弄懂了课上不懂的例子
三.实验心得:
在课上老师带着做题,跟着老师做题课下的作业基本上都能完成,这次作业的冒泡排序在课上讲的例子不多,题也做的不多,对冒泡排序还不太理解,所以需要在课下多加练习。
标签:break 最大 情况 指定 输入 out nbsp i++ 实验
原文地址:http://www.cnblogs.com/yanmojie/p/6139444.html