#include<stdio.h> intmain(){ //写一个程序,计算平均数并输出大于平均数的数字 int x ; double sum = 0; int cnt = 0 ; int number [100]; //定义一个数组,其大小为100个 //int 名字A [大小X] 表示这个数组A里面最多可以放 X个int scanf("%d",&x); while (x! = -1){ number [cnt] = x ; //让数组上cnt位置的那个单元=x ;而cnt是递增的,所以x分别会在1,2,3....位置上存放 //对数组中的元素进行赋值 sum += x ; cnt ++; scanf ("%d",&x); } if (cnt > 0 ){ printf("%f \n",sum/cnt); int i ; for (i = 0 ; i<cnt;i++){ //进行数组数字的输出。遍历数组 //遍历数组:浏览整个数组 if (number[i]>sum/cnt){//使用数组中的元素 printf("%d \n",number[i]); //当数组i位置的数符合条件,输出它 } } } ;return0 ; }
### 返回值return 返回返回值的操作是必不可少的,而且要和你所声明的返回值的数据类型对应 当然,如果你声明返回值是void(无),那就不用return了 ```C #include<stdio.h> 、 //当使用void类型的函数时,函数是没有返回值的,也就是可以没有return int max (int a,int b) {//返回值是int类型的函数max int ret ; if(a>b){ ret = a ; }else { ret = b ; } return ret ; //返回一个ret的数值,另外在一个函数里面可以有多个return语句,而且return不一定要在尾(不过这不是单一出口,习惯不好) }
//这样的代码可以完成a、b数值的互换吗 答案是不可以 voidswap(int a , int b);
intmain(void){ int a = 5 ; int b = 16 ; swap(a,b); printf("a = %d b = %d",a,b); return0 ; }
voidswap(int a,int b){ //虽然在这里的参数是a b ,刚才传进来的数值也是a b ,但实质上二者是完全不同的东西 //swap函数中,只是把a的值5,以及把b的值16 给到了swap的形式参数a b 里面,此ab非彼ab int t = a ; a = b ; b = t ; }
intmain(void){ int a = 5 ; int b = 6 ; //原型声明的时候外面没有指定参数,在这里外面尝试传入两个int swap(a,b); //而事实上,我们的函数会对两个double进行处理,因此结果会出错(但是运行是正常的) printf("a = %d , b = %d \n",a,b); ;return0 ; }
//注意这里给的是double voidswap(double a , double b){ int t = a ; printf("IN SWAP,a = %f , b = %f \n",a,b); a = b ; b = t ; } ```
## 基础的搜索算法 这里稍微介绍一下搜索算法
### 线性搜索 最简单、最基础、最粗暴的搜索:遍历所有数据,检索目标 ```C intsearcher(int key , int a[] , int len){ //这里附带说明一下,由于C语言的函数的关系,我们最好还是把数组长度直接传进来 int ret = -1 ; for (int i =0 ; i <len ; i++){ if (key == a[i]){ ret = i ; break ; } } return ret ; }