c语言函数部分

一、函数定义

(一)一般形式

//返回值类型
    类型标识符 函数名(形式参数) //函数头 head
    {
        //函数体  -- body
        声明部分
        语句部分
    }
 

(二)函数头

 类型标识符 --- 写数据类型的 --- 表示的函数处理完之后,要带出的结果的类型  --- 

(三)函数名

体现函数功能  --- 命名规则 符合标识符命名规则

形式参数   --- 用来接受 传递给函数中的数据的 

(四)函数体

就是完成函数对应功能的代码

(五)函数调用:


   语法:
    函数名(实际参数)

二、函数的使用方式


    add(a,b); //1.函数调用 语句 
    result = add(a,b) + 3; //2.函数调用表达式
    printf("ret = %d\n",add(1,2)); //3.充当别的函数的参数

三、注意

 1.形参 和 实参 
          一一对应 
         个数相同 
         类型匹配
         顺序一致 


   2.函数不需要输入数据,此时形参可以设计为void 表示不需要参数 


   3.返回值类型 
     如果函数不需要带出什么结果,此时返回值类型 设计为 void 


   4.返回值类型 
     没写 
     此时 默认为 int类型 


   5.返回值类型 与 要带出的结果值的类型 可以不一致
     但是 最终,以 返回值类型 为准   
   
   6. main函数 
      程序的入口函数  


   7. 从调用关系上 
      main 函数 -- 主调函数 
      其它函数  -- 被调函数


   8. 函数定义 可以放到 main函数后面
     但是
     需要在使用之前,做 函数声明 
     
     函数声明写法 --- 将函数头复制 + 分号  

四、应用

(一)输出数组元素函数

#include

void printArray(int a[],int len)
{
	int i = 0;
	for(i = 0;i < len;i++)
	{
		printf("%d ",a[i]);
	}
	putchar('\n');
}


int main(void)
{
	int a[] = {1,2,3,4,5,6,7,8,9,10};

	int len = sizeof(a) / sizeof(a[0]);
	printArray(a,len);

	int b[] = {1,2,3,4};
	len = sizeof(b) / sizeof(b[0]);
	printArray(b,len);

	return 0;
}

(二)二分查找函数

#include

int bisection(int a[],int len,int n)
{
	int c = 0;

	int be = 0;
	int en = len - 1;

	int mid = 0;
	while(en > be)
	{
		mid = (en + be)/2;
		if(a[mid] > n)
		{
			en = mid-1;
			
		}else if(a[mid] < n)
		{
			be = mid + 1;
		}else
		{
		  return 1;
		}
	}
	return 0;
}

int main(void)
{
	int a[] = {1,2,3,4,5,6,7,8,9,10};
	int len = sizeof(a) / sizeof(a[0]);
	int n = 0;
	
	scanf("%d",&n);


	if(bisection(a,len,n))
	{
		printf("find\n");
	}else
	{
		printf("not find\n");
	}

	return 0;
}

(三)冒泡排序函数

#include

void bubbling(int a[],int len)
{
	int i = 0;
	int j = 0;
	int n;
	for(i = len -1;i > 0;i--)
	{
		for(j = 0;j < i;j++) //每排出一个,减少一次比较的次数
		{
			if(a[j] > a[j+1])
			{
				n = a[j];
				a[j] = a[j+1];
				a[j+1] = n;
			}
		}
		
	}
}

void printArray(int a[],int len)
{
	int i = 0;
	for(i = 0;i < len;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");

}

int main(void)
{
	int a[] = {2,4,6,8,1,3,5,7,9,10};
	int len = sizeof(a) / sizeof(a[0]);

	bubbling(a,len);
	printArray(a,len);

	return 0;
}

(四)选择排序函数

#include

void choiceSort(int a[],int len)
{
	int i = 0;
	int j = 0;
	int n;
	for(i = 0;i  a[j])
			{
				n = a[i];
				a[i] = a[j];
				a[j] = n;
			}
		}
		
	}
}

void printArray(int a[],int len)
{
	int i = 0;
	for(i = 0;i < len;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");

}

int main(void)
{
	int a[] = {2,4,6,8,1,3,5,7,9,10};
	int len = sizeof(a) / sizeof(a[0]);

	choiceSort(a,len);
	printArray(a,len);

	return 0;
}

(五)插入排序

#include

void insert(int a[],int len)
{
	int i = 0;
	int j = 0;
	int n;
	for(i = 1;i < len;i++)
	{
		n = a[i];
		j = i;
		while(j > 0 && n < a[j-1])
		{
			a[j] = a[j-1];
			j--;
		}
		a[j] = n;
	}
}

void printArray(int a[],int len)
{
	int i = 0;
	for(i = 0;i < len;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");

}

int main(void)
{
	int a[] = {2,4,6,8,1,3,5,7,9,10};
	int len = sizeof(a) / sizeof(a[0]);

	insert(a,len);
	printArray(a,len);

	return 0;
}

(六)输出数组中的最大值

#include


int maxOfArray(int a[],int len)
{
	int max = 0;
	int i;
	for(i = 0;i < len;i++)
	{
		if(max < a[i]);
		max = a[i];
	}
	return max;
}


int main(void)
{
	int a[] = {1,2,3,4,5,6,7,8,9};
	int len = sizeof(a) / sizeof(a[0]);
	
	printf("%d\n",maxOfArray(a,len));

	return 0;
}

(七)找出100以内的素数

#include

int prime(int a)
{
	int n1 = 0;
	int i = 0;
	for(i = 2;i < a;i++)
	{
		if(a % i == 0)
		{
			break;
		}
	}

	if(i < a)
	{
		n1 = a;
	}

	return n1;
}


int main(void)
{
	int a;
	int i = 0;
	int prime_num;

#if 1

	printf("ALL prime is:\n");
	for(i = 1;i < 100;i++)
	{
     	prime_num = prime(i);

		if(prime_num == 0)
		{
			printf("%d\n",i);

		}

	}
#endif

#if 0
	scanf("%d",&a);

	int n1;

    prime_num = prime(a);

	if(prime_num == 0)
	{
		printf("is prime\n");
	}else
	{
		printf("not prime\n");
	}
#endif

	return 0;
}

(八)逆序输出

#include

void reverseArray(int a[],int len)
{
	int i = 0;
	int j = len -1;

	while(i < j )
	{
		int t = a[j];
		a[j] = a[i];
		a[i] = t;
		i++;
		j--;
	}
}

void printArray(int a[],int len)
{
	int i = 0;
	for(i = 0;i < len;++i)
	{
		printf("%d ",a[i]);
	}
	putchar('\n');

}


int main(void)
{
	int a[] = {1,2,3,4,5,6,7,8,9,10};
	int len = sizeof(a) / sizeof(a[0]);

	reverseArray(a,len);
	printArray(a,len);



	return 0;
}

(九)输入年月,输出对应的天数

#include

int leapyear(int y)
{
	return y%100!=0&&y%4==0 || y%400==0;
}


int getdays(int y,int m)
{
	int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

	return m == 2? month[m-1] + leapyear(y):month[m-1]; 
}


int main(void)
{
	int y,m;
	scanf("%d%d",&y,&m);
	printf("month days = %d\n",getdays(y,m));

	return 0;
}




#if 0
int day(int y,int m)
{
	int n = 0;
	if(m < 1 || m >12)
	{
		return -1;
	}

	if(m == 2)
	{
		if(y%100 != 0 && y%4 == 0 || y%400 == 0)
		{
			n = 2;
		}else
		{
			n = 3;
		}
	}else if(m == 4 ||m == 6 || m == 9 || m == 11)
	{
		n = 4;
	}else 
	{
		n = 5;
	}
	return n;


}

int main(void)
{
	int days;
	int y,m;
	int p;

	scanf("%d%d",&y,&m);

	days = day(y,m);

	if(days == -1)
	{
		printf("error\n");
	}else if(days == 2)
	{
		p = 28;
		printf("days = %d\n",p);
	}else if(days == 3)
	{
		p = 29;
		printf("days = %d\n",p);
	}else if(days == 4)
	{
		p = 30;
		printf("days = %d\n",p);
	}else
	{
		p = 31;
		printf("days = %d\n",p);
	}

	
	return 0;
}
#

你可能感兴趣的:(c语言,开发语言)