0
点赞
收藏
分享

微信扫一扫

C语言(B站比特鹏哥)笔记

海牙秋天 2022-04-13 阅读 39
c语言

P48函数的调用

在这里插入图片描述

练习

1.写一个函数可以判断一个数是不是素数

之(打印100-200之间的素数)

#include<stdio.h>	
//打印100-200之间所有的素数 
int is_prime(int n); //函数声明 
int main()
{
	int i = 0;
	int count = 0;
	for(i=100; i<=200; i++)//这里可以优化代码写成i+=2,因为偶数肯定不是素数
	{
		//判断是否为素数,素数只能被1和它本身整除
		if(is_prime(i) == 1)
		{
			count++;//计算素数的个数 
			printf("%d ", i);
		}
	}
	printf("\ncount = %d ", count); 
	return 0;	
}
int is_prime(int n)
{
	//2到i-1 之间的数字
	int j = 0;
	for(j=2; j<n; j++)
	{
		if(n%j==0)
		{
			return 0;
		}
	} 
	return 1;	//来到这说明已经跳出循环,即不满足if 
}

2.写一个函数判断一年是不是闰年

之(打印1000-2000之间的闰年)

#include <stdio.h>
int is_leap_year(int year);//函数声明,可以没有变量名称,但是不可以没有变量类型 
int main()
{
	int count = 0;
	int i; 
	for(i=1000; i<=2000; i++)
	{
		if(1==is_leap_year(i))
		{
			count++;
			printf("%d是闰年\n", i);
		}
	}
	printf("\ncount=%d", count);
	return 0;
 } 
int is_leap_year(int year)
{
	if((0==year%4) && (0!=year%100) || (0==year%400))
	{
		return 1;
	}else{
		return 0;
	} 
}

3.写一个函数,实现一个整型有序数组的二分查找

#include <stdio.h>
//该函数参数意思是在数组int arr[]的sz个元素里面查找key
//该函数是要返回下标,故返回类型为int 
int binary_search(int a[],int k, int s)//此处传进去的不是是整个arr[],而是数组的地址 
{										//相当于int binary_search(int* a, int k) 
//	int sz = sizeof(a)/sizeof(a[0]);	//求不出数组元素的个数,因为a是指针占4个字节,4/4=1 
//所以参数传进数组个数的时候,一定要在main函数里面先求好函数个数再传,无法在函数内部求数组个数 
	int left = 0;
	int right = s-1;//元素个数-1为最后一个元素的下标
	
	while(left<=right)//说明左下标和右下标之间是有元素的 
	{
		int mid = (left+right)/2;//每一次的mid都要重新计算mid 
		if(a[mid]>k)
		{
			right = mid - 1;
		}else if(a[mid]<k)
		{
			left = mid + 1;
		}else
		{
			return mid;	
		}
	}
	return -1;//走到这说明找不到了 
	
}
int main()
{
	int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	int key;
	printf("请输入你要查找的数字:>");
	scanf("%d", &key);
	int sz = sizeof(arr)/sizeof(arr[0]);//求出数组元素的个数 
	//找到了就返回找到的位置的下标
	//找不到返回-1(-1不可能是数组的下标) 
	//数组arr传参,实际上传递的不是数组的本身,
	//仅仅传过去的是数组首元素的地址 
	int result = binary_search(arr, key, sz);
	if(-1 == result) //说明找不到 
	{
		printf("找不到\n");	
	}else
	{
		printf("找到了,下标是:%d\n", result);	
	}
	
	return 0;
 } 

4.写一个函数,每调用一次这个函数,就会将num的值增加1

#include <stdio.h>
void Add(int* p);
int main()
{
	int num = 0;
	//调用函数,使得num每次增加1
	Add(&num);
	printf("%d\n", num); 
	Add(&num);
	printf("%d\n", num);
	Add(&num);
	printf("%d\n", num);  

	return 0;
}
void Add(int* p)
{
	(*p)++;
}
举报

相关推荐

0 条评论