作业1:冒泡排序
#include <stdio.h> void sort(int a[80],int n); 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]); } sort(a,n); for(i=0;i<n;i++) { printf("%d ",a[i]); } return 0; } 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; } } } }
测试:
作业2:
#include <stdio.h> int search(int list[80],int n,int x); int main() { int a[80],n,x,i; printf("Enter an array length n:"); scanf("%d",&n); printf("Enter an array:"); for(i=0;i<n;i++){ scanf("%d",&a[i]); } printf("输入你要找的数字x:"); scanf("%d",&x); search(a,n,x); return 0; } 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 "); } }
测试:
作业3:
#include <stdio.h> void CountOff(int n,int m,int out[80]); int main() { int a[80],x,y; printf("输入初始人数n:"); scanf("%d",&x); printf("输入退出人数m:"); scanf("%d",&y); CountOff(x,y,a); return 0; } 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; } } }
测试:
如果有一个实参数组,想在函数中改变此数组的元素的值,实参与形参的对应关系有以下几类情况:
①形参和实参都用数组名:传递的是实参数组首地址,形参与实参共用同一段内存单元。
②实参用数组名,形参用指针变量:通过指针变量值得改变可以指向实参数组的任一元素。
③实参和形参都用指针变量:先使实参指针变量指向数组的首地址,然后将实参的值传给形参,通过指针变量值得改变可以使其指向数组的每个元素。
④实参为指针变量,形参为数组名:设p为指针变量,令p=&a[0],p为实参,对应的形参x为数组名,则函数调用时将p的值传给形参数组名x,也就是使其取得a数组的首地址,使x数组和a数组共用一段内存单元
心得:这节课没有讲过多的新知识,做题练习居多,四节课加一起做了十多道题,效率还是可以的,也解决了上一次作业存在的问题。这次作业3存在讨论的情况 是讨论的结果所以难免会一样,所以周四上课的时候要认真听老师的讲解,有没有讨论结果意外的结果。没有讲过多的知识,所以把老师上讲的PPT拿过来引用。